コンピュータが動く仕組みは「順次」「分岐」「反復」の3つだけ(1)
身近で動くプログラムの具体例を紹介する前に、コンピュータ制御の仕組みについて説明します。コンピュータで実現されたゲームや、CGを多用した映画などを見ると、とても複雑なことを実現しているように見えます。その視覚的な効果があまりにもすごすぎて、プログラミングは「むずかしいもの」と考えられがちです。
しかし、コンピュータ内部の制御機構(動く仕組み)は、「1.順次」「2.分岐」「3.反復」といった単純な要素だけでできあがっています。これらを組み合わせて複雑な制御を行っているのです。この3つの制御構造について、人間の簡単な行動を例に学んでいきましょう。
1. 順次
まず、一番よく利用される構造「順次」です。
「順次」とは、その名の通り、先頭から順番に処理を実行します。この順次構造は、処理の基本です。何を行うにも、この順次処理が含まれています。そろばんの「読み上げ算」を思い浮かべてください。足し合わせる数を、1つずつ順番に読み上げていって、計算する人は1つずつ、そろばんを使って足し算を行っていきます。このように、順番に1つ1つの処理を行っていく処理を「順次」と呼びます。
例えば、人間の「鍵を開けててドアを開ける」という行動を制御する場合、次のような順次処理になります。
- 鍵を出す
- 鍵を持つ
- 鍵をドアの鍵穴に差し込む
- 鍵を回す
- 鍵を抜く
- 鍵をしまう
- ドアノブを握る
- ドアノブを回す
- ドアを開ける
図で示すと以下の通り、上から順番にシンプルに処理を実行している様子がわかります。
ある行動の一連の流れ、それが順次です。
2. 分岐
2つ目は「分岐」です。これは、条件によってAを行うか、Bを行うか、内容を変えて処理するやり方です。この条件の部分には、一般的に「式」が利用されます。例えば「A > 1」とあれば、「Aが1よりも大きい場合は」といった意味です。コンピュータは数式しか扱うことができませんから、数や存在の有無といったことでのみ、条件を指定することができます。
先ほどの「ドアを開ける」の部分ですが、ドアのタイプによってドアの明け方を分岐制御させると、どのようになるでしょうか。
- ドアのタイプを調べる
- もし、ドアのタイプが「引き戸」なら、ドアを左へスライドさせる
- もし、ドアのタイプが「開き戸」なら、ドアを手前に引く
- もし、いずれでもなかったら、ドアをとりあえず押してみる
ドアに3つのタイプがある前提で分岐処理を考えてみましたが、どのような分岐方式でも「状態を調べる(計算を行う)」「状態(式の結果)によって、どの処理を実行するか選択する」といった流れになります。
図で表すと以下の通り、条件式によって複数の処理へ「分岐」していることがわかります。
このように、条件式の結果によって処理する内容を選択させることができる制御構造のことを、分岐と呼びます。