<<
Squeakで学ぶプログラミングVol.1
/
Squeakの基本操作とスクリプティング
/
車を道に沿って走らせてみよう
/フローチャート(1)- 場合分けが1つの時
>>
4.3 フローチャート(1)- 場合分けが1つの時
Sくん
先生,今度はコースを丸くしてみて,どっちが先に道に沿って走る車を完成できるか勝負してます.
M先生
なるほどね.どれどれ,プログラムを見せてみて.
Sくん
僕のはこうです.
Tさん
私はちょっと違います.
M先生
なるほど.どちらのプログラムでも車は道に沿って走れるようだね.
M先生
では,どちらが早くコースを一周できるか競争してみようか.車が速く走るようにプログラムを改造してもいいよ.
Sくん
車を速くするためには,進むドット数を大きくすればいいんだ.30ドット位にしてみようかな.
Tさん
私も.
Sくん
ぐはっ,進むドット数を30にすると,僕の車はコースアウトしてしまいました.
Tさん
私の車はコースアウトしませんね.
M先生
どうして違う結果になったのか説明できるかな?
Tさん
車が道から外れた時の動きが違うのかも....
Sくん
僕のプログラムでは,車を進める命令が場合分けタイルの外にあるよね.
Tさん
うん.問題は車が道から外れた時の動作の違いってことだね.
Sくん
場合分けタイルの外に進める命令があると,道から外れた状態でも車は進んでしまうんだ.
Tさん
私の場合は,車が道の方向に戻るまで進まないよ.
M先生
2人ともいい線いってるね.じゃあ,より整理して考えるために「 フローチャート 」という図法を紹介しよう. 2人のプログラムをフローチャートで表現するとこうなるね.
Sくん
微妙に違いますね.
M先生
ひし形が場合分けを表している.四角が命令を表現しているんだ.どこが違うかな?
Sくん
僕のプログラムは,まず進めるが実行されてから,場合分けが実行されるんだ.だから,進むドット数が大きすぎるとコースアウトしてしまうんですね.
Tさん
私のプログラムは,車が道から外れている場合は,回るだけです.だから進めるドット数を大きくしても大丈夫なんですね.
M先生
そうだね.Sくんのプログラムは,場合分けタイルの外に進めるという命令があるよね. これだと車が道から外れているかに関係なく,常に進める命令が実行されるということだ.
Sくん
なるほど.だから進めるドット数を大きくすると,コースアウトしてしまうんですね.
M先生
今回は既に作ってあるプログラムを整理するためにフローチャートを使ったけれど, プログラムを作る前にフローチャートを描いておくと,プログラムがどのように動作するかを考えやすくなるね.
「やってみよう!」
節[場合分け(1)- 各場合に実行する命令が1つの時]
と
節[場合分け(2)- 各場合に実行する命令が複数の時]
で作ったプログラムのフローチャートを描いてみましょう.
<<
Squeakで学ぶプログラミングVol.1
/
Squeakの基本操作とスクリプティング
/
車を道に沿って走らせてみよう
/フローチャート(1)- 場合分けが1つの時
>>