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

~プログラムの流れを変えてみよう 2~(case)

piroko_jaran_ss前回の講座ではelsif(エルスイフ)を使って、条件(じょうけん)によってプログラムの流れを変えるやり方をおぼえました。流れを変える方法はほかにもあって、その中のひとつにcase(ケース)があります。今回はcaseの使い方をみてみましょう。
エディタに下の命令を入れて「動かす」ボタンを押してみてください。


t = Time.now.hour

case t

when 4,5,6,7,8,9
  puts "おはよう"

when 10..16
  puts "こんにちは"

when 17..21
  puts "こんばんは"

else
  puts "寝る時間ですよ"

end

朝なら「おはよう」、昼なら「こんにちは」、夜なら「こんばんは」と表示されるはずです。

プログラムのせつめい

1行目

Time.nowをおぼえていますか?ジャストタイムゲームで使いましたよね。Time.now.hourは、現在の時刻(じこく)を時間単位(たんい)で調べます。
時間を調べて、tという名前のついた箱に入れなさい。

3行目

tという名前のついた箱に入っている数が、つぎの条件と合うか調べなさいという命令。

5行目

when(ウェン|~のとき)は、あとにつづく値(あたい)に一致するならば、次の行に進みなさいという命令。この場合は、カンマ(,)で区切った 4,5,6,7,8,9 のいずれかと一致するなら、ということ。一致しないときは、つぎのwhenに進みます。

6行目

「a..b」は、「aからbまで」という意味。10..16は、10から16まで(午前10時から午後4時まで)。tに入っている数が10から16までなら、つぎの行に進みなさい。いずれにも一致しないときは、つぎのwhenに進みます。

9行目

同じく、17から21までなら。

いずれにも当てはまらなければ、elseに進みます。

ロボットを使って確かめよう

数字を入れるだけで、あらかじめ決められた動きをさせるプログラムを書いてみましょう。askとcaseを使うとできるよ。


require "mi100"

robo = Mi100.new "COM3"

puts "何する?番号をえらんで"

kotae = ask "1:回る 2:前に進む 3:いろいろ"

case kotae

when 1
  robo.spin "right",1000

when 2
  robo.move "forward",1000

when 3
  robo.good
  robo.spin "right",500
  robo.move "forward",500
  robo.move "backward",500
  robo.blink

else
  robo.bad

end

robo.close

プログラムのせつめい

1~3行目

ロボットを無線で動かせるようにするための、いつものステップですね。

5行目

出力タブに、「何する?番号をえらんで」と表示しなさい。

7行目

「1:回る 2:前に進む 3:いろいろ」と書いてある四角い箱を表示し、入れた数をkotaeという名前のついた箱に入れなさい。

9行目

kotaeに入っている数が、次の条件と一致するか調べなさい。

11行目

kotaeに入っている数が1なら、つぎの行に進みなさい。そうでないなら、つぎのwhenに進みなさい。

14行目

kotaeに入っている数が2なら、つぎの行に進みなさい。そうでないなら、つぎのwhenに進みなさい。

17行目

kotaeに入っている数が3なら、つぎの行に進みなさい。そうでないなら、elseに進みなさい。

おわり