配列と関数|添字の数え方・2次元配列・度数を数える型と関数の読み方
たくさんのデータをまとめて扱うのが配列、よく使う処理をひとまとめにしたのが関数です。共通テストの第3問では、配列と関数を組み合わせたプログラムが毎年出題されています。特に添字の数え方は、問題ごとに条件を確認する必要がある重要なポイントです。
配列とは
配列は、複数の値を一つの名前でまとめ、番号で区別して扱う仕組みです。この番号を添字(インデックス)といいます。共通テスト用プログラム表記では、配列の名前は先頭を大文字にします。
Tokuten = [72, 85, 64, 90]
| 添字 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 値 | 72 | 85 | 64 | 90 |
Tokuten[1] は 85、Tokuten[3] は 90 です。
添字は0から?1から?
共通テスト用プログラム表記では、特に説明がなければ添字は0から始まります。ところが、2025年・2026年の本試験 第3問では、どちらも問題文に「配列の添字は1から始まる」と明記されていました。来訪者の1人目を添字1にするなど、人の数え方と合わせた方が読みやすいからです。
| 問題文の条件 | 4つの要素の添字 | 最後の要素 |
|---|---|---|
| 0から始まる(標準) | 0, 1, 2, 3 | Data[要素数(Data) − 1] |
| 1から始まる | 1, 2, 3, 4 | Data[要素数(Data)] |
問題文の添字の条件を、プログラムを読む前に必ず確認する習慣をつけましょう。
要素数
関数「要素数」は、配列の要素の個数を返します。要素数(Tokuten) は 4 です。添字が0から始まるとき、最後の要素の添字は「要素数 − 1」になる点に注意しましょう。
2次元配列
縦と横の2つの添字で要素を指定する配列を2次元配列といいます。表のデータを扱うのに使います。
Seki = [[3, 8, 5],
[7, 2, 6]]
| 列0 | 列1 | 列2 | |
|---|---|---|---|
| 行0 | 3 | 8 | 5 |
| 行1 | 7 | 2 | 6 |
Seki[1, 2] は「行1・列2」で 6 です。すべての要素を調べるには、行と列の二重ループを使います。
配列を使った典型的な処理
最小値の位置(添字)を探す
Akibi = [5, 3, 4]
tantou = 0
i を 1 から 2 まで 1 ずつ増やしながら繰り返す:
| もし Akibi[i] < Akibi[tantou] ならば:
⎿ ⎿ tantou = i
| i | Akibi[i] | Akibi[tantou] | 比較 | tantou |
|---|---|---|---|---|
| (開始前) | — | — | — | 0 |
| 1 | 3 | 5 | 3 < 5 | 1 |
| 2 | 4 | 3 | 4 < 3 ではない | 1 |
最小値(3)の添字1が求まります。値ではなく位置を覚えておくと、「何番目の人か」が分かります。
< と <= の違い: 最小値が複数あるとき、< なら最初に見つかった位置、<= なら最後に見つかった位置が残ります。2025年の本試験 第3問 では、空き日が同じ部員がいるときに、部員番号の小さい方を選ぶため < が使われていました。
度数を数える(配列をカウンタとして使う)
テストの得点(0〜10点)ごとの人数を数えるには、得点を添字にした配列を使います。
Tokuten = [3, 7, 3, 10, 7, 3]
Kazu = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 添字0〜10
i を 0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら繰り返す:
⎿ Kazu[Tokuten[i]] = Kazu[Tokuten[i]] + 1
実行後、Kazu[3] は 3、Kazu[7] は 2、Kazu[10] は 1 になります。Kazu[Tokuten[i]] のように、配列の値を別の配列の添字に使う書き方は、慣れるまで読みにくいので、内側から順に値を置き換えて読みましょう。
前の要素の値を使う
Shuryou[i - 1] のように、1つ前の要素を参照する書き方もよく出ます。2026年の本試験 第3問 では、i 番目の来訪者の開始時刻を 最大値(Shuryou[i - 1], Touchaku[i])(直前の人の終了時刻と、本人の到着時刻の大きい方)で求めました。最初の要素には「1つ前」がないので、繰り返しの前に別に設定しておく(Shuryou[1] = taiken)のが定番です。
関数
**関数**は、値(引数)を受け取って処理を行い、結果(戻り値)を返すものです。
kazu = 要素数(Data) # Data が引数、要素の個数が戻り値
x = 最大値(3, 8) # 3 と 8 が引数、8 が戻り値
表示する("合計は", goukei) # 値を返さず、表示だけする関数
【関数の説明】を読む
共通テストでは、使う関数が問題文の【関数の説明】で示されます。
- 関数名と、引数として何を与えるか
- 何を返すか(戻り値)
- 使用例(例:最大値(1, 5) は 5、最大値(2, 2) は 2)
関数の中身がどう作られているかを知らなくても、説明どおりに使えば解けます。使用例で、引数が同じ値のときの戻り値など、境界の場合がどう扱われるかを確認しておきましょう。
共通テストでの出題
- 2025年の本試験 第3問:配列 Akibi の最小値の位置を探して担当を決め、その部員の空き日を更新する処理を、工芸品の数だけ繰り返すプログラム。添字は1から。
- 2026年の本試験 第3問:配列 Touchaku・Kaishi・Shuryou と関数「要素数」「最大値」を使って、待ち時間を求めるプログラム。添字は1から。
よくある間違い
- 添字の始まりを確認しない:0からか1からかで、繰り返しの範囲や最後の要素の添字が変わります。
- 値と添字の混同:「最小値」を求めるのか、「最小値の位置」を求めるのかを区別しましょう。
- 2次元配列の行と列の順番:
Seki[1, 2]は行1・列2です。問題文の定義を確認します。
まとめ
- 配列は添字で要素を指定する。添字が0からか1からかは、問題文で必ず確認する
- 2次元配列は行と列の2つの添字で指定し、二重ループで全要素を調べる
- 最小値の位置・度数の数え上げ・1つ前の要素の参照は、よく出る型
- 関数は【関数の説明】の使用例まで読み、説明どおりに使う