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

〜 くりかえしをやってみよう(until)〜

piroko_jaran_ss前回は while(ワイル|〜の間)を使ってくりかえすやり方をおぼえました。今回は、whileと同じように、条件に合うかどうかでくりかえしをさせる until(アンティル|~まで)の使い方をみてみましょう。whileは条件(じょうけん)を満たすかぎり、同じ処理(しょり)をくりかえしますが、until は条件を満たすまでくりかえしが行われます。エディタに次のプログラムを入れて「動かす」ボタンを押してみよう。


num = 0

until num >= 5
  puts num
  num = num + 1
end

0
1
2
3
4

0から4までの数字が表示されたかな。

プログラムのせつめい

1行目

numという名前のついた箱に0を入れなさい

3行目

numに入っている数が「5と同じ」、「5より大きい」のいずれかを満たすまで、endまでの命令をくり返しなさい。

4行目

numに入っている数を表示しなさい

5行目

numに入っている数に1を加えて、numに入れなおしなさい
numに1ずつ大きい数を入れなおしながら、同じ処理(しょり)がくりかえされます。このプログラムでは「5と同じ」という条件を満たしたとき、つまり、numに5が入ったときにくりかえしが終わります。
*プログラムの3行目を、while num < 5 にかえても結果が同じになることを確認しよう。

ロボットで動きを確認しよう

ここで問題を出すよ。ロボットはキャンディーを10個もっています。そのうち5個を残しておいて、あとの5個をひとつずつ友だちにくばります。これを until を使ったプログラムで書くとどうなるでしょう。じっさいにキャンディーをくばることはできないので、そのかわりに5回「ピポパ」とならして出力タブに「キャンディーあげるよ」と表示しよう。


require "mi100"

robo = Mi100.new "COM3"

num = 10

until num <= 5
  robo.movef
  robo.spinr
  robo.good
  puts "キャンディーあげるよ"
  num = num - 1
end

puts ""
puts "残りはボクのぶん"

robo.close

プログラムのせつめい

1行目〜3行目

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

5行目

numという名前のついた箱に10を入れなさい。キャンディーは10個だから。

7行目

numに入っている数が5と同じ、または5より小さいという条件を満たすまで、endまでの命令をくり返しなさい。

12行目

numに入っている数から1を引いて、numに入れなおしなさい。キャンディーの数は、くばるたびに1ずつへっていきますね。

num <= 5の条件を満たすまで、untilとendの間の命令がくりかえされます。numに5が入ったときにくり返しが終わり、15行目の命令に進みます。

15行目

“”で空白行を入れます

16行目

好きなセリフを入れてみよう。

おわり