子どもRubyプログラミング講座「ロボット編」第13回

2014/06/30

~プログラムの流れを変えてみよう 3~

piroko_jaran_ss前回と前々回の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なら、次の行に進みなさい。

 

おわり