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

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

piroko_jaran_ss運動会のプログラムが1番、2番…と順番に流れるように、コンピューターのプログラムも上から下に順番に流れま す。運動会では、「雨が降りそうだから、PTAリレーをやらずに3年生のダンスに進もう」と、プログラムの流れを変えることがありますが、コンピューターのプログラムもif(イフ)を使うことで、プログラムの流れを変えることができます。

前回はif~elseを使って、電圧が高ければ「ピポパ」、低ければ「ブー」とならすようにプログラムの流れを変えました。「電圧が高い」という条件(じょうけん)に合うかどうかでプログラムの流れを変えたのです。

でも、条件に合わなければ「ブー」では、ちょっとものたりない場合もありますよね。今回は、elsifを使って、
いろいろな条件で、いろんな動きをさせるやり方をみていきます。

エディタに下のプログラムを入れて「動かす」ボタンを押してみましょう。


kotae = ask "年れいは?"

if kotae > 18
  puts "大人ですね"
elsif kotae >12
  puts "中高生ですね"
elsif kotae > 5
  puts "小学生ですね"
else
  puts "パソコンできたね"
end

プログラムのせつめい

1行目~3行目

何度も登場しているask(アスク)とif(イフ)はもうおぼえましたよね。「年れいは ?」と書いてある四角い箱を出し、そこに入れた答えが18より大きいか調べなさい。18より大きければ次の行に進み、そうでなければ5行目に進みます。

5行目

elsif(エルスイフ)は、ifにつづく条件に合わない場合に、別の条件に合うかどうかを調べるための命令。kotaeに入っている数が12より大きいか調べなさい。12より大きければ次の行に進み、そうでなければ7行目に進みます。

7行目

もう一度elsifが出てきましたね。elsifは何度でも使うことができます。5より大きいか調べなさい。5より大きければ次の行に進み、そうでなければ9行目に進みます。

9行目

すべての条件に合わなかった場合は、elseのあとの命令に進みます。

条件がたくさんある場合は上から順に調べていき、いったん条件に合ったら、そのあとの条件については調べないことに注意しましょう。

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

ロボットの電圧によっていろいろな動きをさせるプログラムを書いてみましょう。


require "mi100"

robo = Mi100.new "COM3"

v = robo.power
puts "電圧は" + v.to_s + "ボルトです"

if v > 2.5
 robo.good
 robo.spinr
 robo.blink
 puts "元気いっぱいだよ"

elsif v > 2.3
 robo.good
 robo.spinr
 puts "まあまあ元気"

elsif v > 2.1
 robo.bad
 puts "おなかすいたなあ"

else
 puts "モーター回せるかな"

end

robo.close

プログラムのせつめい

1行目~3行目

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

5行目

電圧をしらべてvという名前のついた箱にいれなさい。

6行目

vという名前のついた箱に入っている数をto_sで文字列に変えて、「電圧は○○ボルトです」と表示しなさい。

8行目

電圧が2.5より大きければ、9行目から12行目をやりなさい。そうでなければ、14行目に進みなさい。

14行目

電圧が2.3より大きければ、15行目から17行目をやりなさい。そうでなければ、19行目に進みなさい。

19行目

電圧が2.1より大きければ、20行目と21行目をやりなさい。そうでなければ、23行目に進みなさい。

おわり