http://www.sw.it.aoyama.ac.jp/2010/PB2/lecture6.html
© 2006-10 Martin J. Dürst 青山学院大学
-n)while)each,...)if 式で条件によって処理を選択if, elsif, else, end
の順番で記述elsif は0個以上else はなくてもよいif と elsif で条件が必要<, >,
<=, >=, ==,
!=if, elsif, else
の後にその場合の処理を記述 (複数行可、字下げ!)提出: 11月 5日 (金曜日) 22:00 までに Moodle にファイル famous.txt を処理するプログラム
famous.rb を作成、投稿:
”」があるto_i
で結果が 0)unknown」、「不明」など(プログラムの呼び出しは ruby -n famous.rb
<famous.txt)
正解例: 都合により削除 (出力の文書は日本語でも結構)
elsif hobby=='不明' or hobby=='unknown' or ...
elsif ['不明', 'unknown', ...].include? hobby elsif hobby ~= /不明|unknown|.../and)height >= 100 and height <= 200or)unknown」hobby=='不明' or hobby=='unknown'not)not (price>1500)-n)
は簡単なプログラムしか使えないwhile)
は特殊なケースに限定すべきeach,...) は Ruby の強み一般的な形:
while 条件 繰り返す処理 end
応用例 (1):
while input_line = gets
if input_line.chomp.split(', ').length < 8
puts 'Not enough input fields'
end
end
応用例 (2):
input_data_array = []
while input_line = gets
input_data_array << input_line.chomp.split(', ')
end
[<< は配列への要素の追加]
一般的な形:
配列.method do |変数| 処理 # 変数を使いながら end
メソッド名は each
応用例:
sorted_data.each do |fields|
name, yomi, ... = fields
...
puts "#{name}, hobby: #{hobby}"
end
メソッド名は sort_by; do
ブロックの最後の値で並変え
応用例:
sorted_data = input_data_array.sort_by do |fields| name, yomi, ... = fields height_text.to_i # 身長による並び変え end
提出: 11月 12日 (金曜日) 22:00 までに Moodle に
famous_while.rb として投稿
-n から
while へ書換えるor と
include?)"Hobby missing (#{hobby})" で簡単化)提出: 11月 12日 (金曜日) 22:00 までに Moodle に
famous_sort.rb として投稿
while の応用例 (2)
を読み込んだ後、each で BMI を追加sort_by で体重ごとに並び変えeach で名前、身長、体重、BMI を出力[参考: BMI は Body Mass Index で、「太り具合」を数値で表現。計算式は weight / (height/100.0)2。]