http://www.sw.it.aoyama.ac.jp/2011/PB2/lecture4.html
© 2006-11 Martin J. Dürst 青山学院大学
+
で連結、*
で繰り返しgets
による一行の入力>>>文字列<<<
解答例: strings.rb
irb
).rb
ファイルに書くruby file.rb
でファイル内が一行ごと実行
.rb
プログラムは
ruby
コマンドで
一行一行
上から下へと
実行される
(早いので一瞬に見えることが多い)
例: wait.rb
(array)
要素を [ ]
内に個っまでくぐって列挙する
numbers = [2, 27, 999, 1, 25]
stuff = [33, "Hello", 7.5, [1, 2, 3]]
要素を番地で指定:
numbers[2]
⇒ 999
要素の変更:
numbers[3] = 45
numbers
⇒ [2, 27, 999, 45, 25]
配列外の番地には何もない (nil
で表現)
numbers[5]
⇒ nil
配列が必要に応じて長くなる
numbers[7] = 88
numbers
⇒ [2, 27, 999, 45, 25, nil, nil, 88]
a
→ weight
Weight
→ weight
_
を入れるlowestweight
→
lowest_weight
number
→
numbers
sheeps
, peoples
, stuffs
string = "abc, def, ghi"
strings = string.split ", "
⇒ ["abc", "def", "ghi"]
split
で区切りの文字列を指定して一つの文字列を複数の文字列
(即ち、文字列の配列) に分割
配列の要素はすべて文字列
output = strings.join "; "
⇒ "abc; def; ghi"
join
で配列の要素を、指定した文字列でくぐって一つの文字列につなぐ
[1, 2, 3.45].join "*=*"
⇒ "1*=*2*=*3.45"
文字列以外の要素は文字列に変換
文字列は文字の列、配列は要素の列
Ruby では文字列と配列は別物
しかし、共通の操作は同じ名前で使う
string = 'abc def ghi'
string.reverse.split(' ').join('.')
⇒ "ihg.fed.cba"
string.split(' ').reverse.join('.')
⇒ "ghi.def.abc"
[1, 2, 3].length
⇒ 3
"abc"[1]
⇒ "b"
Shift_JIS
と最近の
UTF-8
があるShift_JIS
がよい# encoding: Shift_JIS
ruby -n program.rb <input.txt
>output.txt
<input.txt
: 入力はファイル
input.txt
から<output.txt
: 入力はファイル
output.txt
へ<output.txt
がない場合、画面に出力-n
: プログラムを行ごとに何回も実行$_
にあるinput_line = $_.chomp
chomp
で行末の改行を削除提出: 10月28日 (金曜日) 22:00 までに Moodle に投稿
students.txt というデータを使って、行ごとに次の入力データ:
12345678, Reigai Taro, 80, 62, 例外 太郎
を次の出力データ
5678 例外太郎 (Taro Reigai): English: 80, Math: 62, Average:
71.0
に変更するプログラムを作りなさい。
ヒント:
.chomp
メソッドが便利to_i
を使用
("123".to_i
⇒ 123
)提出: 10月28日 (金曜日) 22:00 までに Moodle に投稿
一回目の演習2として集めたデータを整理・補助し、people.txt
として提出
形式 (データを合流するために、厳守):
", "
で分ける