いままでのプログラムは、基本的に実行文を上から順に実行していく単純な構造 (順次実行)をしていた。実際のプログラムでは、条件によって実行する文を変更したり、 同じ文を何回も実行したりと、必ずしも上から順に実行するわけでは無い。 このような、プログラムの流れを決定するものを、プログラムの制御構造と呼ぶ。
すべてのアルゴリズムは、たった3つの制御構造の組み合わせで記述することが できる。3つの制御構造とは、図1〜3が示すような順次実行、分岐実行、繰り返 し実行である。
順次実行とは、これまで登場したプログラム例のように、上から順番に1つずつ
文を実行していく構造である。
※Javaのメソッド呼び出しなども順次実行の一種と見なすことができる。
例えば、子供にお使いをお願いする時の説明は順次実行である場合が多い。
「まず八百屋さんに行って、
そこで大根を一本買って、
次に肉屋さんに行って、
豚バラ肉200gを買って、
最後にパン屋さんに行って、
バケットを一本買ってきてね。」
という具合いである。
分岐実行とは、ある条件によって複数の文の中のどれかを実行する構造である。
もっとも単純な分岐は、2つの文のどちらかを選択して実行するもので、これを
特に2分岐と呼び、if文がその代表である。また、Javaでは、n分岐のための
switch文も用意されている。
分岐実行は、「もし、ある条件を満たしていれば、一つの行動を起し、条件を満た
していなければ別の行動を起す」ような制御構造である。
先ほどの買い物の例をさらに続けると、買い物のお願いをされた子供は、順次実
行の指示に分岐実行を補足する場合が考えられる。
「もし買い物がすべて済んだあと、お釣りが100円以上あるなら、
100円のガチャガチャを1回やる。
しかしもしお釣りが100円より少ないなら、10円の駄菓子を買う。」
という具合いである。
この場合、100円のガチャガチャか10円の駄菓子かどちらかを一つ選ぶための分
岐条件がお釣りの金額が100円以上であるかどうかである。
繰り返し実行とは、ある条件が満足されている間は、同じ文が何度でも実行され
る構造である。Javaでは、while文(do-while文)、for文が用意されている。
繰り返し実行とは、「もし、ある条件が満たされていれば、
もう一度行動を繰り返す」ような制御構造である。
先ほどの買い物の子供の場合、さらに繰り返し制御も取り入れるかもしれない。
駄菓子を買うことを先の分岐実行で決定した子供は、
「おつりが10円以上なら
まず10円の駄菓子を一つ買う。
もう一度残ったおつりを確認し、まだ10円以上ならもう一度10円駄菓子を買う
行動を取る。
これをおつりが10円に満たなくなるまで繰り返す。」
という具合いである。
この場合、10円の駄菓子を買う行動を繰り返し実行し、繰り返し実行の繰り返し
条件がお釣りの金額が10円以上あるかどうかである。
実際のプログラムは、図4に示すように、これら3つの制御構造が組み合わされ て使用される。逆に言えば、どんなに複雑なプログラムでもこれら3つの制御構 造を使えば記述することができる。
|
端子 | -フローチャートの始まり及び終わりを表す |
|
処理 | -計算、代入などの処理を表す |
|
判断 | -条件によって分岐する |
図1 順次実行 | |
図2 分岐実行 | |
図3 繰り返し実行 |
図4 制御a 緑枠 制御b 赤枠 制御c 青枠 |
選択肢: 順次実行、分岐実行、繰り返し実行 |
図5 |