△▼プログラム言語共通用語▼△
殆どのプログラムで共通な用語(基礎編)
さて、此処からは少しコアな話になってまいります。
プログラムを組む上では避けて通れない話ばかりなので、少し気張ってまいりましょう。
◇手続き言語
手続き言語・・・対象:手続き言語って舐めてますね。すいません。
プログラム言語は大きく分けて『手続き言語』と『非手続き言語』に分かれます。(詳しくは辞書参照)
このページの内容は全て『手続き言語』に関することなので、初めに説明をしておこうと思ったのです。
二つに分かれる・・・とか言いましたが、実を言うと、私は『非手続き言語』というものは
『HTML』と『XML』しか知りません。故に、此処で説明する言語はHTML、XML以外は全て手続き言語です。(って言うかXMLやるのか!?)
では、違いを説明・・・すると結構ややこしいので、各々の特徴を一言で現します。
動くか動かないかです。
非手続き言語のHTMLで作られたものは、何を隠そうこのホームページです。ほら、動いてませんよね?
正確には『gifアニメ』等で、動くのですが、細かい突っ込みは抜きにしてください。
因みに、文字が横に流れたりするのはHTMLではなく『JavaScript』であり、手続き言語に分類される・・・・・・と思います。
とりあえず、HTMLしかやるつもりがないのなら、このページは飛ばして結構です。
◇変数
数学が得意な人はそのまま変数だと思ってくれて結構です。
・・・とはいっても、数学で言う変数とは使い方や感覚がぜんぜん違うので、理解を深めるまでは別物だと思っていたほうが身の為です(なんのだよ・・・)
では変数とは・・・?
よく使う表現ですが『入れ物』だと思ってください。
プログラムというのは、結局『計算』や『比較』だけで物を表現するものです。(極端すぎ・・・)
ですが、例えどんな計算をした所で、計算した結果が解らなければ意味がありません。
その結果を入れておく箱が『変数』というなの入れ物です。
とか何とか説明しましたが、実際使ってみればすぐに理解できると思います。
ってことで、JavaScriptで足し算をしているコードを書いて見ます。
function Tasizan(){
var Total; /* 計算結果を入れる変数 */
Total = 4 + 6; /* 計算式 */
alert(Total); /* 結果を表示 */
}
| |
JavaScriptではvarという文字を使って変数を使います。
言語によって作り方は違いますが、基本的に『変数を作るぞ』という宣言をし(varが該当)、
その変数に付ける名前(Totalが該当)をつけます。
名前を付ける理由は、変数をたくさん作った場合に、どの変数を使うか?という認識に使います。
この名前にもいくつか決まりがありますが、それに関しては各言語で。
実際、プログラムを読む上では、変数の部分(この場合は『Total』の部分)を入っている数字に置き換えてみるのがいいでしょう。
上記の場合は『alert(Total)』の部分を『alert(10)』と置き換えてみれば、『あぁ、十を表示するんだな』と理解できると思います。
また、入れ物にも『ビニール袋』やら『升』やら『ポリバケツ』などの種類があるように、
変数にも決まった『型』があります。
この場合は、『何』を入れるか?という事で型を決めます。
では、変数に入れられるものはどんな種類があるのでしょうか?
上記の『計算』では『数字』を入れていました。ですから、これは数値型と呼ばれます。
例が例ですので、数値以外どんな種類があるんだ?とイメージしづらいと思うので、一部を下記に。
| 数値型 | 数字が入ります |
| 文字型 | 1バイトの文字一つが入ります |
| 少数型 | 小数が入ります |
| 文字列型 | 文章が入ります |
簡単なところでこんなもんです。
文字型の『1バイト』というのは深く考えなくても良いです。(言語によっては1バイトじゃないし)
単純に、半角の一文字を入れる変数だと思ってください。
因みに、半角とは横幅が日本語の半分の奴だと思ってください。例えば『1』は全角ですが『1』は半角です。
そして、日本語には半角という概念がありませんので、全て『全角』となります。
文字列型というのは、文字型の発展系ですね。これは一文字じゃなくて沢山入ります。どれくらい入るか?というのは状況によって様々ですので、その際に御確認ください。
この他にも型はあるのですが、それは辞書のほうでご確認ください。
基本的に数値と文字列があれば処理は行えます。(爆)
◇制御
制御・・・とか言ってもそう凄い事じゃありません。此処で説明するのは『判断』『反復』の二つです。
判断
プログラムの中で、『○○だったら何をする・・・?』という判断を行います。
では、簡単な例を、プログラムではなく文章で書いてみましょう。
| とある平凡な一日擬似言語プログラム |
目覚まし時計がなり、目が覚める。
胃の調子が悪い?
→Yes:朝飯はウィーダインゼリーで。
→No :朝飯はパンとコーヒーで。
外は雨?
→Yes:通勤はバスで。
所持金 マイナス400円(往復分)
通勤時間(片道) 1時間10分。
→No :通勤はチャリで。
通勤時間(片道) 1時間25分。
会社に到着
|
赤字で書いた部分が『判断』。青字部分が『そうだった場合』、緑が『ちがかった場合』です。
これを、もっとプログラムっぽく書いてみましょう。
| とある平凡な一日擬似言語プログラム(改) |
目覚まし時計がなり、目が覚める;
胃の調子は < 50ポイント
{
朝飯はウィーダインゼリー;
}
else{
朝飯はパンとコーヒー;
}
外の天気は = 雨
{
通勤はバス;
所持金 = 所持金−400;
現在の時刻 = 8:25;
}
else{
通勤はチャリ;
現在の時刻 = 8:40;
}
会社に到着;
|
といった具合でしょうか?
プログラムでは、『Yes/No』をこんな感じで書きます。(elseは『〜の他』という意味)
判断は『〜と同じ』『〜より大きい』『〜より小さい』の他に、『〜ではない』というものもあります。
書き方はプログラムや型にもよりますが、大体『=』『>』『<』『!』になります。
『!』とかは習慣がないでしょうから、少し新鮮ですね(笑)
んで、『{}』で囲まれた部分を、一塊と見て処理します。これは大体どの言語も一緒かと。
因みに『=』は数学とは違い、『代入』という意味を持ちます。それは『演算子』の項で。
反復(ループ)
繰り返しの事です。『同じ動作を何度も繰り返す』時に使う処理ですね。
これも、日常生活を例にしてみましょう。
| とある平凡な一日擬似言語プログラム・ループ編 |
/* 食事を始める。 */
『いただきます』という。
ループ開始〜お腹がいっぱいになるまで
ご飯食う。
おかず食う。
味噌汁飲む。
満腹度プラス。
〜ループ終端
デザート食う。
『ごちそうさま』という。
|
こんなんで理解できたでしょうか?
ループ(繰り返し)する意思表示と、それを続ける条件を記述します。(プログラムによっては『終わる条件』になる。COBOLとか)
その条件の間は、『ループ終端』まで処理を繰り返します。
んじゃ、簡単な処理の例を書いてみましょう。言語はC言語です。
| 画面に数字を表示するプログラム |
#include<stdio.h> // ヘッダファイル(今は気にしないで)
void main(void){ // 処理はここから始まります
int Counter; // 整数型の変数を用意します
Counter = 0; // Counterという変数に0を入れます
while(Counter < 10){ // whileは繰り返しの記号。Counterが10になるまで続けます
printf("%d",Counter); // Counterの内容を画面に表示
Counter = Counter + 1; // Counterを増加させる(これがないと永遠に処理が続きます)
} // {から}の間が繰り返される処理。此処が終端
} // プログラムの終了
|
・・・う〜ん。ちょっと『printf(〜)』の辺りがわかりづらいかな?
いまは、あれでCounterの内容が画面に表示されるという事だけ知っててください。
因みに、これは実行するとこうなります。↓
まぁ、ループの使い方は次第に慣れていってください。そう難しいものでもありません。
◇配列
数学が得意な人は・・・ってまた繰り返しになるので省略します。
配列というのは、上記の変数を沢山並べたものを言います。
例えば、野球選手9人の背番号を数字型の変数9こに入れたいと思います。
以下にC言語で記述した変数を。
int BackNumber1; /* int は数字型変数の宣言 */
int BackNumber2;
int BackNumber3;
int BackNumber4;
int BackNumber5;
int BackNumber6;
int BackNumber7;
int BackNumber8;
int BackNumber9;
|
これで入れ物は出来ました(この時点ではまだ空)
この後数字を入れるわけですが、そこは省略。
取り敢えず、コピペするだけでも面倒くさい上記を配列を使って書いてみましょう。
という訳で、九行使っていた分が一行で済みました。
『[ ]』のカッコに、いくつの配列を作るかを入れるんですね。
イメージ的には、同じ箱に番号をつけて並べたようなものだと思ってください。
【配列を箱としてイメージしてみる】
この場合、左から二つ目を指定するときは「Box[2]」といった感じになります。
ただ、C言語を含む多くの言語は、配列で箱を9個用意したとすると、番号が『1〜9』ではなく『0〜8』になるので注意してください。
では、実際に上記の続きで、背番号を入力してみましょう。(言語はC言語で)
#include<stdio.h> // ヘッダ読み込み。今は無視して大丈夫です。
void main(void){ // プログラムの開始点
int BackNumber[9]; // 数値型の変数を9個、配列で作る。
int Index; // これも数値型。配列の番号として利用する。
Index = 0; // 変数が空なので、『0』を入れてやる(=は代入の意味)
while(Index < 9){ // ループ開始。Indexが9になるまで。
printf("背番号入力"); // 入力を促すメッセージを表示する。
scanf("%d",&BackNumber[Index]);
// 入力された数字を、『BackNumber』の『Index』番目に入れる。
// ちょっとややこしいね・・・
Index = Index + 1; // Indexを一つ増やす。
} // ループ終端
}
|
ループに関してはこちらを参照ください。
さて、何やってるか分かりますかね?『&BackNumber[Index]』あたりはC言語独特な書き方なんで余り深入りしなくても良いのですが、
とにかくBackNumber[index]の部分に入力された数字を格納しているのだと思ってください。
まぁ、此処で説明するのは『配列の使い方』なので、『BackNumber[Index]』が何を表しているのかが解っていただければ結構です。
BackNumberは変数(配列)の名前。背番号を入れようとしています。
Indexも変数の名前。ループの中で0〜8に動いていきます。
『BackNumber[Index]』というのは、つまりBackNumberという配列のIndexが現す番号という事です。
例えば、一番初めIndexは0を入れてますので、Indexの数字は0ですね。
ループに入って、『Index < 9』の判定を行いますので、置き換えると『0 < 9』。その式は正しいのでループに入ります。
『printf("背番号入力")』で、画面に『背番号入力』と表示され、『scanf(〜)』で、入力を待ちます。
数字を入力されてEnterキーが押されれば、『BackNumber[Index]』にその数字が入ります。
Indexは今0ですので、『BackNumber[0]』にその数字が入るというわけですね。
理解できたでしょうか?
此処で理解できなくとも、プログラムに慣れてくれば、次第に必要になってきますので、その時理解できると思います。
それと、此処では触れませんが、『BackNumber[9][9]』とすることで、二次元配列というものも作る事ができます。
頭の整理がついてきたら、そこらへんも頑張ってみてください。
◇演算子
誰もが知ってる『算数』でおなじみの演算子です。
『+、−、×、÷』と聴いて「はて?」と思う方は、算数からやり直してください。
プログラムの基本は『計算』だと自分は思っていますので、『足す』だの『引く』だのが解らない人はプログラムに向いてないと思います。(おいおい)
此処まで来る間に、サンプルプログラムで結構使っていたので、結構感覚的に理解できていると思いますが、演算子はプログラムの至る所に使われます。
そして、『=』の位置づけも算数とは少し違うのでよぉく理解してください。
◇イコール
前述したとおり、『=』の扱いは算数と異なり、『代入』という意味を持ちます。
『変数 = 0』とすることで、『変数』に『0』を入れるという意味になります。
足し算などを行う際も、『変数 = 変数 + 5』などとして、自分に5を足した数値を自分に代入という形を取る必要があります。
無理やり算数の『=』と同じように理解するならば、『=』という演算子を使って無理やり右辺と左辺を同じにするとお考えください。
『=』は基本の演算子となりますので、意味を取り違いないようにご注意ください。
◇足す、引く、かける、割る
これらの演算子は算数と全く同じです・・・と言いたい所なのですが、プログラムは基本的に『半角英数字』で記述します。
その為、『×』や『÷』といった記号は半角でない為に表せません。
プログラムでは、+は『+』、マイナスは『-(ハイフン)』で同じですが、×は『*(アスタリスク)』、÷は『/(スラッシュ)』で現す事になります。
全てキーボードの右の方にあるので、何処にあるのか確認しておきましょう。
また、『優先順位』は算数と全く同じです。
Total = 8 + 5 * 2 - 20
とすれば、算数の順番と同じように『5×2』を初めに行います。つまり、Totalには『-2』が入るわけですね。
これを足し算から行いたい場合には、『Total = (8 + 5) * 2 - 20』等と、算数と同じように括弧をつけてやればOKです。因みに、Totalには『6』が入ります。
また、計算式に変数を組み込む事も可能です。
a = 9;
b = 4;
Total = a + b;
|
とすれば、計算式は『Total = 9 + 4』と置き換えられ、Totalには『13』が入ります。
此処で一つだけ注意ですが、割り算を行う際に変数などを用いて『0』で割ってしまうと、『エラー』となってプログラムが止まってしまうことが多いので気をつけてください。
【エラーが発生する例】
a = 6;
b = 2;
c = 3;
b = b * c;
Total = a / b;
|
◇剰余
聴きなれない言葉かもしれませんが、剰余とは『割った余り』という意味です。
計算結果の範囲を限定する際などに利用できるので、結構重宝したりします。個人的に好きな演算子です(笑)
その演算子は、プログラム言語によってあったりなかったりしますが、基本的に『%』を用いります。
例)Total = 10 % 3
こうすると、Totalには『1』が入る事になります。
この『%』が使えるかどうかは書くプログラム言語でお確かめください。使えない場合でも、違う方法で余りを出す手が用意されています。
(例えば、VBだとModというものを使って余りを出します)
因みに、この『%』の優先順位は×や÷と同じ扱いです。+や−より先に行われるのですね。
◇比較演算子
数字の比較に使う演算子です。『制御』の『判断』の時に少し触れましたが、此処でもう一度おさらい&追記。
数学では『<、≦、=、≧、>』等が使えますが、プログラムでもこれは同じです。
ただし、×÷のように半角でない記号もありますので、プログラムでの書き方が少し違います。
プログラムで使用可能な比較演算子
| 小なり、〜より小さい | < | < |
| 小なりイコール、〜以下 | ≦ | <= |
| イコール、〜と同じ | = | == |
| 大なりイコール、〜以上 | ≧ | >= |
| 大なり、〜より大きい | > | > |
| ノットイコール、〜ではない | ¬ | !=もしくは<> |
こんな感じです。『大なり、小なり』は半角になっただけですが、イコールが絡むと少し異なりますね。
『イコール』は半角イコールを二つ繋げます。理由は、上記の代入演算子(=)特別を付ける為です。
判定式の中に『=』を入れることも可能なので、よくあるプログラムミスとして挙げられるので注意しましょう。
『ノットイコール』とは、『〜ではない』という意味を持つ比較です。集合の時に良く使われますが、プログラムでは「!」が『〜ではない』という意味を持つので、プログラムでは『!=』ですね。
『<>』というのは、VBなどで利用されるノットイコールです。
因みに、判定式自体に『!』をつけることも可能です。・・・つまり・・・Number1という変数とNumber2という変数が違うかどうかを現す時
『 Number1 != Number2 』と『 !(Number == Number) 』
というのは、同じ意味を持つことになります。
◇かつ(∧)、または(∨)
これも『集合』でよく使いますね。プログラムでも、比較と比較の結び付けで利用されます。
例えば、『Aは8以上 かつ Bは5以下』という具合にです。
『かつ』『または』の意味は理解できると思うので、早速どのように書くのかを現しましょうか。
プログラムで使用可能な『∧(かつ)』『∨(または)』
| 且つ | ∧ | && |
| 又は | ∨ | || |
上記の通り。
『且つ』は『アンド』を二つ重ねた形。『又は』は『パイプ』という縦棒を二つ重ねた形です。
パイプというのは英語の『I(アイ)』を縦に二つ重ねたものらしいですね、時によっては間が開いていますが、これは同じものを現しています。
因みに、キーボード上では一番右上の『¥』をシフトと一緒に押せば表示されます。
あと、特に今は気にしなくていいのですが、二つ重ねる理由はイコールと同じく『&』や『|』という一つの演算子が存在するからです。
これらの演算子は辞書のほうでご確認ください。
まぁ、普通にプログラムを組むのなら、使う機会はないと思いますが・・・
以上が大体の演算子です。(無論、これ以外にも存在します)
ですが、プログラムによっては表記の仕方が変わる場合が多々あります。
例えば、VB(ヴィジュアルベーシック)にいたってはノットイコールを『<>』と表記しますし、単なる『ノット』をそのまま英語で『Not』と書きます。
SQLという言語も、『かつ』や『または』をそのまま『AND』『OR』で表記します。
つまりは、やりたいプログラムによって変わるので、逐一堪忍せよ。という事ですね。
色々やってるとごっちゃになります・・・沢山の言語を使いたい方はお覚悟を・・・(汗)
|