プログラムの3つの基本処理

プログラムには、3つの基本的な動きがあります。

  • 「順次」
  • 「条件分岐」
  • 「繰り返し(反復)」

の3つです。

プログラミングは、どんな複雑なものであっても、これらの基本的な処理の組み合わせで構成されています。今回は、この3つの基本処理について解説したいと思います。

順次処理

プログラミングはたくさんの命令の集まりで構成されますが、命令には実行順序があります。組み合わされた命令を上から順番に実行していくので「順次」と呼ばれています。
プログラムは「どんなタイミングで」「どんな順番で」「どんな命令を」実行していくのかを構成しますので、この「順番」はプログラムの構成を考える上で大変重要な要素となります。


上記はScratchのスクリプト例です。上から順番に、50歩動いて、30度向きを変えて、「こんにちは!」と言う、という流れで処理を実行します。

もし、「50歩動かす」ブロックと「30度回す」ブロックが逆だったら、どうなるでしょう?
50歩動いてから向きを変えるのと、向きを変えてから50歩動くのでは、進む方向が変わるので、実行結果は異なってきます。この様に、処理の順番が異なると結果も変わってきますので、どの命令をどういう順番で実行するのか、きちんと整理してプログラミングするようにしましょう。

条件分岐

全ての場合に実行するのではなく、特定の条件に当てはまる時だけ実行したい命令があります。そういう場合、条件によって処理を分ける必要があります。

Scratchで条件分岐を使ったスクリプト例を見てみましょう。


このスクリプトでは、『スプライトがステージの端にたどり着くと180度方向転換する』という処理になっています。この「180度回す」というブロックは、「もし端に触れたなら」という条件に当てはまる場合にだけ実行されますので、それ以外の場合に方向転換はしません。

ちなみにScratchには、「もし端に着いたら、跳ね返る」というブロックがありますが、これは上記のスクリプトと全く同じ動きをします。「もし端に着いたら〜」は単一のブロックですが、処理の内容としては、上記のスクリプトと同様に、内部で条件を判定して実行するブロックとなります。

また、条件に当てはまる場合/当てはまらない場合で、別々の処理を実行するようなケースもあります。


これは、『会った回数が0』つまり『今回初めて会う』場合と、そうでない場合で処理を分けています。今回初めて会う場合は「初めまして!」と、そうでない、つまり『これまでに会ったことがある』場合は「こんにちは!」と言います。

条件処理の中に別の条件を組み合わせて、処理をさらに分けることも可能です。


この場合、『今回初めて会う』場合の処理は前述のものと同じ、「初めまして!」という処理ですが、それ以外、つまり『これまでに会ったことがある』場合は、さらに別の条件で処理を分けています。『最後に会ってからの日数が10より大きい(11日以上)』の場合は、「久しぶり!」と、そうでない、つまり『最後に会ってからの日数が10日以内』の場合は、「こんにちは!」と言います。

繰り返し(反復)処理

ある一定の決まった処理を繰り返します。繰り返し回数や、終了条件などを指定して使います。
Scratchのブロックでは以下の繰り返しブロックが用意されています。

1) ずっと繰り返し
「すべてを中止」するまで、終わりなく繰り返されます。下記のスクリプト例では、スプライトを「マウスのポインター」の位置へ移動させる処理を、ずっと繰り返しています。


「マウスのポインターへ行く」ブロックを1回だけ実行しても、その時のマウスのポインターへ移動して終わってしまうので、作品中ずっとマウスのポインターの位置にスプライトを移動させたい場合は、このように「ずっと」繰り返す必要があります。

2) 回数を指定する繰り返し
下記のスクリプト例では、100歩前に進んでから90度方向転換する、という一連の流れを4回繰り返しています。この処理を実行すると、スプライトは正方形の軌道で動くことになります。

3) 終了条件を指定する繰り返し
どうなるまで繰り返すのか、繰り返しの終了条件を指定します。下記のスクリプトでは、スプライトがネコのキャラクターに触れるまで、ネコに向かって進み続けるという動作になります。


Scratchでは、条件を指定する繰り返しブロックとしてこの他に、「もし〜なら、ずっと」というブロックがあります。こちらは、繰り返しを終了する条件ではなく、繰り返しを続ける条件の指定になります。

まとめ

いかがでしたでしょうか?
複雑な処理を行っているように見えるプログラムも、細かくひとつひとつの処理を分解してみれば、これら3つの処理の組み合わせに過ぎません。
これらの構成を意識して、実現したい処理はどういう命令をどう組み合わせればよいのか、きちんと整理してプログラミングするようにしましょう。