プログラミング基礎 II

第六回 (2010年11月8日)

繰返し

http://www.sw.it.aoyama.ac.jp/2010/PB2/lecture6.html

Martin J. Dürst

AGU

© 2006-10 Martin J. Dürst 青山学院大学

目次

前回のまとめ

前回の演習・宿題

提出: 11月 5日 (金曜日) 22:00 までに Moodle にファイル famous.txt を処理するプログラム famous.rb を作成、投稿:

(プログラムの呼び出しは ruby -n famous.rb <famous.txt)

正解例: 都合により削除 (出力の文書は日本語でも結構)

前回の演習の単純化

条件の組み合わせ

データの整理

繰り返しの目的と概要

明示的な繰返し

一般的な形:

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

演習 1

提出: 11月 12日 (金曜日) 22:00 までに Moodle に famous_while.rb として投稿

演習 2

提出: 11月 12日 (金曜日) 22:00 までに Moodle に famous_sort.rb として投稿

[参考: BMI は Body Mass Index で、「太り具合」を数値で表現。計算式は weight / (height/100.0)2。]