~プログラムの流れを変えてみよう 3~
前回と前々回の2回にわたり、プログラムの流れを変えるやり方をみてきました。elsif(エルスイフ)とcase(ケース)を使いましたね。今回は、プログラムの流れを変えた先を、さらに枝分かれさせるやり方をみてみましょう。
エディタに下のプログラムを入れてみましょう。
puts "食べものアンケート。数字でこたえてね" puts "らーめんは好き?" kotae = ask "1:はい 2:いいえ" if kotae == 1 puts "しょう油味とみそ味のどちらが好きですか" kotae = ask "1:しょう油 2:みそ" if kotae == 1 puts "しょう油味が好きなんですね" elsif kotae == 2 puts "みそ味が好きなんですね" end elsif kotae ==2 puts "ラーメンは嫌いなんですね" end
プログラムのせつめい
1行目~2行目
出力タブに「食べものアンケート。数字でこたえてね」「ラーメンは好き?」と表示します。
4行目
「1:はい 2:いいえ」と書かれた四角い箱を出し、そこに入れた数をkotaeという名前のついた箱に入れる。
6行目
kotaeという名前のついた箱に入っている数が1なら、次の行の命令に進みなさい。そうでなければ15行目のelsifに進みます。
7行目
出力タブに「しょう油味とみそ味のどちらが好きですか」と表示しなさい。
8行目
「1:しょう油 2:みそ」と書かれた四角い箱を出し、そこに入れた数をkotaeという名前のついた箱に入れなさい。
9行目~10行目
kotaeという名前のついた箱に入っている数が1なら、「しょう油味が好きなんですね」と表示しなさい。
11行目~12行目
kotaeという名前のついた箱に入っている数が2と同じなら、「みそ味が好きなんですね」と表示しなさい。
15行目
kotaeという名前のついた箱に入っている数が2なら、「ラーメンは嫌いなんですね」と表示しなさい。
大きなif~endの中に(6行目~18行目)、小さなif~end(9行目~13行目)が入っていることに注目してください。分岐した先ではスペース2個分ずつ右にずらしていってくださいね。ifに対応(たいおう)したendを書くのを忘れないようにしましょう。
ロボットを使って確かめよう
askを使って動きや秒数をえらびながらロボットを動かすプログラムを書いてみましょう。
require "mi100" robo = Mi100.new "COM3" puts "何する?番号をえらんで" kotae = ask "1:回る 2:前に進む" if kotae == 1 puts "何ミリ秒回りますか?" kotae = ask "1:500 2:1000" if kotae == 1 robo.spin "right",500 elsif kotae == 2 robo.spin "right",1000 end elsif kotae == 2 puts "何ミリ秒進みますか?" kotae = ask "1:500 2:1000" if kotae == 1 robo.move "forward",500 elsif kotae == 2 robo.move "forward",1000 end end robo.close
プログラムのせつめい
1行目~3行目
ロボットを無線で動かせるようにするための、いつものステップですね。
5行目
出力タブに「何する?番号をえらんで」と表示しなさい。
7行目
「1:回る 2:前に進む」と書かれた四角い箱を出し、そこに入れた数をkotaeという名前のついた箱に入れなさい。
9行目
kotaeという名前のついた箱に入っている数が1なら、次の行に進みなさい。1ではないなら、18行目のelsifに進みます。
10行目
出力タブに「何ミリ秒回りますか」と表示しなさい。
11行目
「1:500 2:1000」と書かれた四角い箱を出し、そこに入れた数をkotaeという名前のついた箱に入れなさい。
12行目
kotaeという名前のついた箱に入っている数が1なら、次の行に進みなさい。1ではないなら、14行目のelsifに進みます。
14行目
kotaeという名前のついた箱に入っている数が2なら、次の行に進みなさい。
18行目
kotaeという名前のついた箱に入っている数が2なら、次の行に進みなさい。
19行目
出力タブに「何ミリ秒進みますか」と表示しなさい。
20行目
「1:500 2:1000」と書かれた四角い箱を出し、そこに入れた数をkotaeという名前のついた箱に入れなさい。
21行目
kotaeという名前のついた箱に入っている数が1なら、次の行に進みなさい。1ではないなら、23行目のelsifに進みます。
23行目
kotaeという名前のついた箱に入っている数が2なら、次の行に進みなさい。
おわり