実みつるのPreプログラミング

プログラミングの学習を考えている方へ

3-3 漏れは無いか?

第三章 条件分岐

(3)漏れは無いか?

これまで見てきた条件分岐を使えば、条件に応じ結果を分ける事ができます。ところでこの仕組みを利用すれば、現象の判断に応用する事もできます。例えば「勝ち」「負け」といった勝負事の結果も表せます。

 

では身近な勝負事、「じゃんけん」の結果を判断する条件分岐を考えてみます。じゃんけんで自分の出したもの(グーやパー)が勝ったのか、或いは負けたのかを判断するには、相手の出したものと自分のものを比較します。当たり前ですが、以下にまとめます。

 

自分:グー/相手:チョキ      → 勝ち

自分:グー/相手:パー      → 負け

自分:チョキ/相手:パー     → 勝ち

自分:チョキ/相手:グー      → 負け

自分:パー/相手:グー        → 勝ち

自分:パー/相手:チョキ     → 負け

 

勝敗は以上の6パターンしか有りません。これを図で表すと以下の様になります。

 

 

今までよりも多くのひし形が出てきましたが、これで自分の勝敗を判断する事ができます。

 

さて、プログラミングで条件分岐を考える際に一点重要な事が有ります。それは、「起こり得る現象の想定に漏れが無い様にする」という事です。

 

コンピューターは速度の性能が優れているとはいえ、実は不測の事態には弱いのです。人間の様に臨機応変に対応できれば良いのですが、コンピューターの場合は予期せぬ現象にぶつかると、そこで止まってしまうのです。

 

例えば、もう一度じゃんけんを考えてみます。先ほど図で表した条件分岐には「あいこ(引き分け)」の現象が入っていません。「その場合はもう一回じゃんけんすれば良い」と考えられるのは人間だけで、コンピューターは「どうしたら良いのか?」と迷ってしまうのです。

 

そこで、もし「あいこの場合は引き分けとする」と決めるのであれば、条件分岐は以下の様になります。

 

 

先ほどの図に対し、「引き分け」という結果が加わりました。

 

ここで一つ注目する点が有ります。図の中では「あいこかどうか」の判定を行っていません。じゃんけんの場合、勝ちでも負けでもなければ、残る可能性はあいこしか有りません。ですから、自分の出したものが判断できた後は、相手の出したものが何か、という判断は2回で済みます。

 

例えば、自分の出したものがグーであれば、相手の出したものがチョキか、もしくはパーかを判断するだけで結論が出ます。なぜなら、じゃんけんで出せるものは3種類しかないからです。2種類の判断ができれば、残りは1種類しか有り得ないからです(相手が何も出さなかったという状況はここでは考えません)。

 

ではもう一つ考えてみます。あいこの場合は再度じゃんけんをする(「あいこでしょ」です)と決めた場合です。この場合、これまで見てきた条件分岐をもう一度行うようにします。以下の様になります。

 

 

ポイントは、もう一度じゃんけんをした後「条件分岐のスタート地点に戻る」という仕組みを入れた点です。こうすると、決着がつくまでじゃんけんが繰り返される様になります。

 

この項では、「条件分岐を考える際、その結果に漏れが無いか」という事を考えてみました。「こうなったらどうなるの?」「この場合はどう対応したら良いの?」などと「条件と結果」を想像する事は、プログラミングに於いて重要な要素になります。機会が有れば身の回りにある「条件分岐」を図式化してみて、「漏れ」が無いか考えてみて下さい。

 

条件分岐の章は今回で終わります。次回は「繰り返し」について考えていきたいと思います。