(BACK)

2時限目.分岐と繰り返し

変数の使い方は、言うなれば「ただ処理をする」という単純な物である。
次に学ぶのは、「もしも〜〜であれば〜〜する」というような、条件によって色々な別々の処理をするという、分岐に関するものである。

「if」だけは絶対に必要だが、それ以外はそうでもないので、後で読み返す程度でも構わない。

2−1.もしも〜ならば〜そうでなければ (if(イフ)else(エルス))
分岐の中でも最も単純なのが、日本語ではもしも〜ならばという意味を持つ、「if(イフ)」による分岐である。

例えば、変数aが1であれば特別な処理をしたい、というような場合、

if (a == 1) {
	(処理) ;
}

というような記述になる。
は左右が同じである事を示す記号であり、「=」とは違う。
(a == 1) の部分を条件式と呼び、必ずカッコ で囲む。
処理の部分を、中カッコ で大きく囲む。

条件式には、同じかどうかを調べる他にも、以下のような書き方がある。
a == baとbが同じである 文字列の比較にも使う
a != baとbが違う 文字列の比較にも使う
a > baがbより大きい
a >= baがb以上である 「=>」では駄目
a < baがbより小さい
a <= baがb以下である 「=<」では駄目
a変数だけを書くと、 a == true と同じ意味である
条件式1 && 条件式2条件式1と条件式2が両方成り立つ
if (条件式1 かつ 条件式2)
条件式1 || 条件式2条件式1と条件式2の少なくともどちらかが成り立つ
if (条件式1 または 条件式2)」



&&|| は、複数の条件式を調べる場合に使う。「|」は[SHIFT]+[\]。
例えば、(a == 1)と(b == 2)が両方成り立つ場合を調べる場合は、

if (a == 1 && b == 2)

となる。
無理矢理日本語にするならば、
もしも (a == 1 かつ b == 2) ならば〜
という感じになる。



基本的な記述は以下のようになる。右側は、日本語に訳したものである。
if ( 条件式 ) {
「条件が成り立つ場合の処理」
}
(L)
もしも ( 条件式 ) ならば {
「条件が成り立つ場合の処理」
}
(L)
この使い方が全ての基本となる。
条件が成り立った場合、で囲まれた部分の処理を行う。
{ と } は離れている事が多いので、必ず一対になっているかに注意する必要がある。
成り立たなかった場合は、{〜}を全て無視して、if処理の終わりである(L)地点にジャンプする。
(L)地点は便宜上書いているだけなので、本当に書いたりしないこと。



else(エルス) は、日本語で言うならば「そうでなければ」という意味であり、条件が成り立たなかった場合の処理を、別に行うことが出来る。
if ( 条件式 ) {
A.「条件が成り立つ場合の処理」
} else {
B.「条件が成り立たない場合の処理」
}
(L)
もしも ( 条件式 ) ならば {
A.「条件が成り立つ場合の処理」
} そうでなければ {
B.「条件が成り立たない場合の処理」
}
(L)
条件が成り立つ場合は、Aを実行した後、ifの終わりである(L)の地点にジャンプする。
条件が成り立たない場合は、Bを実行した後、(L)の地点にジャンプする。
2つの処理があるが、どんな場合であっても、どれか1つの処理を行い、ifの終わりまでジャンプするという事を覚えておく必要がある。



さらに、elseの時にifでもう一度分岐をする事も出来る。別にここまで覚える必要はないが、まあ記述を見ればどういう意味か判る事だろう。
if ( 条件式1 ) {
A.「条件1が成り立つ場合の処理」
} else if (条件式2) {
B.「条件2が成り立つ場合の処理」
} else {
C.「どの条件も成り立たない場合の処理」
}
(L)
もしも ( 条件式1 ) ならば {
A.「条件1が成り立つ場合の処理」
} そうでなければ もしも (条件式2) ならば {
B.「条件2が成り立つ場合の処理」
} そうでなければ {
C.「どの条件も成り立たない場合の処理」
}
(L)
条件1が成り立つ場合は、Aを実行した後、ifの終わりである(L)の地点にジャンプする。
条件1が成り立たない場合は、次に条件2を調べる。
条件2が成り立つ場合は、Bを実行した後、(L)の地点にジャンプする。
条件2も成り立たない場合は、Cを実行した後、(L)の地点にジャンプする。


例.
aは最初0である
bが1 であれば aに1を足す
bが2 かつ cが4以下 であれば aに1を足す
dが0 であれば aに1を足す そうでなければ aから1を引く
a = 0;

if (b == 1) {
	a = a + 1;
}

if (b == 2 && c <= 4) {
	a = a + 1;
}

if (d == 0) {
	a = a + 1;
} else {
	a = a - 1;
}

この例を含めて全ての例では、
if (条件式) {
<タブ>(処理)
}
のように、
ifの中での処理は、行の頭にタブを入れて間を空けている。
これは、見やすくするための慣習と考えていい。
ifに限らず、中カッコで囲まれている間は、全ての行頭をタブで空けることを推奨する。

また、中カッコがこのように離れていなければならないという規則はない。
同様に、セミコロンを書いたら改行しなければいけないという規則もない。
書く順番さえ合っていれば、そのあたりは自由である。従って、
if (a == 1) {
	b = 100;
	c = "なぎさ";
}
は、以下のように詰めて書く事もできる。
if (a == 1) { b = 100; c = "なぎさ"; }
が、慣れないうちはセミコロンの置きかたなどがわかり難くなる為に推奨しない。

2−2.ある変数が〜の場合 (switch(スイッチ)case(ケース))
ifとは違い、対象となる変数を最初に決めておいて、その内容が「1ならば〜」「2ならば〜」とそれぞれの処理を書くのがswitchによる分岐である。
完全にifで代用出来る事なので、面倒なら覚えなくてもよい。

例えば、aという変数が1か2か3かによって別々の処理をする場合は、

switch (a) {
	case 1 :
		(処理) ;         
		break;
	case 2 :
		(処理) ;
		break;
	case 3 :
		(処理) ;
		break;
	default :
		(処理) ;
		break;
}

のように書く。
最初のswitchのあとに、対象となる変数をカッコで囲む。
その直後から、switchの最後までを、ifと同様に中カッコで囲む。
ここまでで準備は終了。

case X :
のように、変数の中身となる内容を「case X」と書き、その後に、セミコロンではなくコロンを書く事。
その後、普通に処理を書き、この部分の処理が終わったら、 break;(ブレイク)と書けば終わり。
「:」と「break;」が、処理のはじまりと終わりを示していると思えば良い。

default :(デフォルト)
は、「どれでもなければ」という意味である。コロンを忘れない事。

2−3.回数を決めた繰り返し (for(フォー))
全く同じ処理を複数回したい時には、forによる繰り返しを使うと便利である。
ぱっと見で判り難いので公式で覚えてよい。

for (i=最初の値; i<=最後の値; i++ ) {
	(繰り返す処理) ;
}

例えば、最初の値=1 最後の値=10 とすると、
1から10までなので、全部で10回、この処理を繰り返す事になる。

最初の値=11 最後の値=20 の場合は、
11から20までなので、やはり繰り返す回数は10回である。

taiko = 0;
for (i=11;i<=20;i++){
	taiko = taiko  + 1;
}
//taikoの中身は10である

iという変数を使っているが、とりあえずこれが何者なのかは気にしなくてよい。
しかし、想像出来るかもしれないが、例えば、最初の値=1,最後の値=10 である場合、1回目のループの時にはi=1であり、2回目の時にはi=2、というように増えていく。
この時のiの値を利用する事も可能である。

ちなみに、変数名が何故iなのかというと、太古の昔より、繰り返しの時に使う変数は何故かiだからである…(説明になってない)
もちろん自分で好きな名前の変数を使っても構わない。

以上で、基礎については終わりである。
次からは、いよいよparaflaでASを使う。

(次の講義へ)

(BACK)