4.4 フローチャート(2)- 場合分けが2つの時

Sくん
うーん.車を道の真ん中を走らせるためには....
Tさん
どうしたの?
Sくん
今までの車では道の端を走ってしまうから,道の真ん中を走らせようとしているんだ.
M先生
それなら色違いのセンサーを2つ用意するのがオススメだね.こんな感じかな.

Sくん
そうか.そうすると場合分けタイルが2つ必要になるのか.
M先生
まずはプログラムを組み立てたら,車を走らせる前に先生に見せてくれるかい?
Sくん
僕のプログラムはこうなりました.

Tさん
私のはこうなりました.

Sくん
わー,場合分けタイルの中に場合分けタイルが入るんだ.はじめて知ったよ.
M先生
そうだね.こういう状態を「 入れ子 」と呼ぶよ.
M先生
じゃあ,それぞれのプログラムをフローチャートで書くとどうなる?
Tさん
こうでしょうか.

M先生
どうだろう.このフローチャートを見て,それぞれの車の動きは違うか同じか予想してみよう.
Sくん
えっと,僕のは前に作ったのと同じで,必ず進む命令が実行される. だから,進めるドット数を大きくするとコースアウトしてしまうと思います.
Tさん
私のプログラムは道からはみ出ていない時だけ車が進むから,S君の車と違ってコースアウトはしませんね.
Sくん
実行する前からコースアウトすることが分かるなんて....しょぼーん.
M先生
じゃあ実験してみよう.
Tさん
やっぱり進めるドット数を大きくするとS君の車はコースアウトね.
M先生
まぁまぁ.フローチャートを書くことで,実行する前からプログラムの動作を予測しやすくなっただろ. S君だってどのように直せばコースアウトしないか分かったはずだよね.
Sくん
はい.

「考えてみよう!」

センサーを2つにすると,今まで走れなかったような形のコースでも走れるようになります.

センサーが1つだとうまく一周することができないコースはどんなものがあるでしょうか. 例えば以下のようなヘアピンカーブのあるコースは,センサーが1つの車でうまく走れるでしょうか.



「考えてみよう!」

例題で作ったプログラムを,以下のように別々のスクリプトに分割し,同時に実行すると車はどのような動きをするでしょうか.