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 <= 200
or
)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。]