配列とは ── 同じデータ型のデータが複数並んだもの
配列は、同じ型のデータを複数まとめて管理する仕組みです。 たとえば5人の点数を管理したいとき、変数を5つ用意する代わりに配列1つで済みます。
整数型の配列: scores
整数型の配列: scores
scores ← {85, 72, 91, 68, 77}
カンマで区切られた値が要素番号1番から順に代入されます。
「先頭の要素番号」「末尾の要素番号」は、0始まり/1始まりで値が変わります。 特に末尾の要素番号を表すときに「要素数」と「要素数 − 1」のどちらを使うのか、混乱しやすいので整理しておきます。
| 0始まり(0オリジン) | 1始まり(1オリジン) | |
|---|---|---|
| 要素数 | 5 | 5 |
| 先頭の要素番号 | 0 | 1 |
| 末尾の要素番号 | 4 要素数 − 1 |
5 要素数 と同じ |
配列名の後ろに [要素番号] を書いてアクセスします。
整数型の配列: scores ← {85, 72, 91, 68, 77}
// 参照(読み出し)
整数型: x ← scores[3] // x に 91 が入る
// 代入(書き込み)
scores[2] ← 80 // scores[2] が 72 → 80 に変わる
配列の全要素を処理するには、カウンタ変数を要素番号として使うのが定番パターンです。 これが配列とfor文を組み合わせる最大のメリットです。
整数型の配列: scores ← {85, 72, 91, 68, 77}
整数型: i
整数型: total ← 0
for ( i を 1 から 5 まで 1 ずつ増やす )
total ← total + scores[i]
endfor
total を出力 // 出力:393
for ( i を 1 から scores の要素数 まで 1 ずつ増やす )
total ← total + scores[i]
endfor
scores の要素数 と書くと、配列の長さが変わっても修正不要になります。
試験のプログラムでもこの書き方が頻繁に登場します。
2変数の値の入れ替えと同じく、temp(一時変数)を使います。
整数型の配列: a ← {10, 20, 30}
整数型: temp
temp ← a[1] // temp に 10 を退避
a[1] ← a[3] // a[1] を 30 に上書き
a[3] ← temp // a[3] を 10 に
// 結果:a = {30, 20, 10}
最初は空(要素数0)の配列を用意しておき、条件に合った要素を見つけたら配列の末尾に追加していくパターンは、 試験でもよく出題されます。
整数型の配列: result ← {} // 要素数0の空配列
result の末尾に X の値を追加する
この操作によって result の要素数が1つ増え、追加した値が末尾の要素番号に入ります。
scores 配列に5人の点数が入っているとき、不合格者(60点未満)の番号を result 配列に集めるプログラム。
整数型の配列: scores ← {85, 50, 72, 40, 95}
整数型の配列: result ← {} // 要素数0の空配列
整数型: i
for ( i を 1 から scores の要素数 まで 1 ずつ増やす )
if ( scores[i] が 60 未満 )
result の末尾に i の値を追加する
endif
endfor
// 実行後:result = {2, 4}
| i | scores[i] | 60 未満? | result |
|---|---|---|---|
| 1 | 85 | × | { } |
| 2 | 50 | ○ → 2 を追加 | { 2 } |
| 3 | 72 | × | { 2 } |
| 4 | 40 | ○ → 4 を追加 | { 2, 4 } |
| 5 | 95 | × | { 2, 4 } |
result = {2, 4}(2番目と4番目の生徒が不合格)になります。
result ← {} で空配列を準備する(要素数0からスタート)result の末尾に … を追加する を実行する次のコードを実行すると x の値はいくつになるか。
整数型の配列: data ← {10, 20, 30, 40, 50}
整数型: x ← data[3]
次のコードを実行すると total の値はいくつになるか。
整数型の配列: data ← {2, 4, 6, 8, 10}
整数型: i
整数型: total ← 0
for ( i を 1 から 5 まで 1 ずつ増やす )
total ← total + data[i]
endfor
次のコードを実行した後の a[1]、a[2]、a[3] の値の組み合わせとして正しいものを選びなさい。
整数型の配列: a ← {1, 2, 3}
整数型: temp
temp ← a[1]
a[1] ← a[3]
a[3] ← temp
次のコードは配列の全要素を出力するプログラムである。空欄 [ A ] に入るものを選びなさい。
整数型の配列: nums ← {5, 10, 15, 20}
整数型: i
for ( i を 1 から [ A ] まで 1 ずつ増やす )
nums[i] を出力
endfor
次のコードを実行すると max の値はいくつになるか。
整数型の配列: score ← {45, 72, 68, 91, 53}
整数型: i
整数型: max ← score[1]
for ( i を 2 から score の要素数 まで 1 ずつ増やす )
if ( score[i] が max より大きい )
max ← score[i]
endif
endfor