~プログラムの流れを変えてみよう 1~ (elsif)
運動会のプログラムが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行目に進みなさい。
おわり