プログラミング基礎 II

第四回 (2010年10月25日)

配列: 複数のデータをまとめる

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

Martin J. Dürst

AGU

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

目次

前回のまとめ

前回の演習・宿題

解答例: 都合により削除

プログラムの使い方

プログラムの実行の原則

.rb プログラムは

ruby コマンドで

一行一行

上から下へと

実行される

(早いので一瞬に見えることが多い)

配列

(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]

変数とその名前

文字列から配列へ

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"

プログラム内の日本語などの使用

複数行の自動処理

演習 1

提出: 10月29日 (金曜日) 22:00 までに Moodle に投稿

students.txt というデータを使って、行ごとに次の入力データ:

12345678, Reigai Taro, 80, 62, 例外 太郎

を次の出力データ

5678 例外太郎 (Taro Reigai): English: 80, Math: 62, Average: 71.0

に変更するプログラムを作りなさい。

ヒント:

演習 2

提出: 10月29日 (金曜日) 22:00 までに Moodle に投稿

一回目の演習2として集めたデータを整理、people.txt として提出

形式 (データを合流するために、厳守):