プログラムは通常上から下へ一直線に解釈実行される。
この流れを変えるのが制御構造 である。以下で説明する各構造の
「条件」の部分には、なんらかの条件式を書く。条件式は
true
または false
を返す。
よく使う制御構造を以下に示す。現段階ではきわめてよく使う
if, while
の意味をよく理解しておこう。
if…then…elsif…else…end
if a1 [then] ほげほげ elsif a2 げほげほ else うはうは end
条件 a1 が成立している(true
)ならば
「ほげほげ」の部分を実行。a1が成り立たなくて
(false
で)、a2が成立していれば
「げほげほ」の部分を実行。いずれでもなければ
「うはうは」の
部分を実行する。elsif と else は不要なら省略できる。
while…end
while a1 とりゃ end
条件 a1 がtrue
である間
「とりゃ」の部分を繰り返し実行する。何度も繰り返す処理
のことをループという。
case…when…when…when…else…end
case a1 when b1,[,b2,..] くすくす when d1 こそこそ else せこせこ end
最初の a1 の値を順次 when の直後と比べて行き、マッチ したときにその直後の文を実行する。たとえば、a1 が b2 に 等しいかマッチしたら「くすくす」の部分を、 a1がd1に等しいかマッチしたら 「こそこそ」の部分を、どれでもなければ 「せこせこ」の部分を実行する。 elseは必要なければ省略可能。
for…end
for var in obj えいえいおー end
ここでobjは単なる変数でなく、複数の値を持っている「配列」 などを指定する。すると、objの先頭の値から順に var 変数に代入してそ の個数だけ「えいえいおー」の部分を繰り返す。 実際の使用例は「配列」の講義のときに登場する。
break、next、redo
これらは、while/until/for ループの中で使う。 break はそこでループの実行を中止しループを終了する。 next はループの残りを実行せず、次のループに突入する。 redoはその回のループを先頭からやりなおす(つまりループ入口の 条件判断はしない)。