読者です 読者をやめる 読者になる 読者になる

分岐2

分岐のふるまいに慣れるため 分岐1でおこなった if, else, endの使ってもう少し複雑な会話練習をしてみましょう。

学校の先生がある生徒に彼女の妹の名前を聞きます。そのやりとりを if, else, endを使って会話の流れをプログラミングしてみましょう

いちからプログラムを書くのは難しい。文法に慣れず細かなerror修正に時間がかかった。出来てみるとなるほどと思いますが 日本語からプログラミング言語への翻訳は、算数文章問題の答えを知った後につじつまを合わせて式とひっ算を書く作業と似てる気がした。

puts 'ハロー、今から家庭科の授業を始めます。'
puts 'わたしはミス ボヘミアン。あなたの名前は?'
name = gets.chomp

puts 'オッケー' + name + ', あなたの妹の名前を教えてください。'
name2 = gets.chomp

if name2 == name2.capitalize
  puts 'どうもありがとうございました'

 else 
  puts 'ぬ。' + name + ', それ妹?妹以外?どっち。'
 
  reply = gets.chomp
 
 if reply == ''
  puts 'そうか、とてもよい名前ですね。ありがとう。'
 
 else
  puts 'だいじょうぶ?'
 end
end
  • 妹の名前はAlice
moomin:ProgrammingRuby tomomi$ ruby ifend.rb
ハロー、今から家庭科の授業を始めます。
わたしはミス ボヘミアン。あなたの名前は?
tomomii
オッケーtomomii, あなたの妹の名前を教えてください。
Alice
どうもありがとうございました
  • 妹の名前はtacos
moomin:ProgrammingRuby tomomi$ ruby ifend.rb
ハロー、今から家庭科の授業を始めます。
わたしはミス ボヘミアン。あなたの名前は?
tomomii
オッケーtomomii, あなたの妹の名前を教えてください。
tacos
ぬ。tomomii, それ妹?妹以外?どっち。
妹
そうか、とてもよい名前ですね。ありがとう。
  • 妹の名前はtacosではない("じゃあ妹の名前は?"→"Alice"と続けて聞くプログラムを書こうと思ったけど途中で挫折)
moomin:ProgrammingRuby tomomi$ ruby ifend.rb
ハロー、今から家庭科の授業を始めます。
わたしはミス ボヘミアン。あなたの名前は?
tomomii
オッケーtomomii, あなたの妹の名前を教えてください。
tacos
ぬ。tomomii, それ妹?妹以外?どっち。
妹以外
だいじょうぶ?

今回は妹/妹以外の2パターンのみの分岐でしたが、何パターンもの分岐があり さらに複雑なプログラミングになると、if, else, endの関係性がごっちゃになりそうですね。後から閲覧して分かりやすいよう字下げするなどの工夫が必要で、それも慣れるまで少し時間がかかりそう。
残念ながら既に混乱しました。