プログラミングでの配列における1始まりと0始まりの違いを解説

FE対策

はじめに

プログラミングにおける「配列」や「添字」の考え方は、初学者だけでなく、慣れた人でも戸惑う場面がある。
特に、試験問題や演習問題では「添字が0から始まるのか、それとも1からなのか」をきちんと理解しないと、思わぬミスを引き起こす。

この記事では、基本情報技術者試験のサンプル問題を例にしてその混乱を紐解き、ポイントを整理する。


スポンサーリンク
スポンサーリンク

data[5]が存在する理由は?

問題の概要

以下の配列 data を考える。

data ← {2, 1, 3, 5, 4}

ここで、問題文に「要素番号(添字)は1から始まる」と明記されている。
この設定のもとで data[5] の値を求めると「4」になる。
しかし、読者からは「data[5]は存在しないのでは?」という疑問が出ている。なぜそう思ったのかを掘り下げてみる。


添字の混乱の原因

プログラミング言語の多くは配列の添字を 0から始める。例えば、PythonやC言語では以下のように動作する。

# Pythonの場合
data = [2, 1, 3, 5, 4]
print(data[0]) # 出力: 2
print(data[4]) # 出力: 4

添字が0始まりであるため、要素番号「5」は存在しない。これに対して、今回の試験問題では 1から始まる添字 を採用している。ここが混乱の発端だ。


1始まりの配列

試験問題において「1始まり」と明記されている場合、次のように解釈する。

data[1] = 2
data[2] = 1
data[3] = 3
data[4] = 5
data[5] = 4

つまり、配列の1番目が「2」であり、5番目が「4」となる。
したがって、data[5] は有効である。このルールを見落とすと「添字エラー」と感じてしまうだろう。


なぜ1始まりを採用するのか?

ここで気になるのが、「なぜ添字を1から始めるのか?」という点だ。
多くのプログラミング言語が0始まりを採用しているにもかかわらず、試験問題や教育教材では1始まりを使うケースがある。
その理由として、以下が挙げられる。
1. 数学的感覚との整合性
数学ではリストや集合の要素番号を1から数えることが多い。これをプログラミングの学習に取り入れることで、初学者が直感的に理解しやすくなる。

  1. 誤解を減らす意図
    0始まりの配列に慣れていない初学者にとって、最初の要素を「0番目」とする概念は直感的でない。1始まりにすることで、初心者が混乱するポイントを減らす狙いがある。
  2. 試験問題の設計意図
    問題文に「添字は1から」と明記することで、読解力や注意力を問う意図がある。これは純粋なプログラミングスキル以外の力を評価するためだ。


読解ミスを防ぐには?

今回の例から得られる教訓は、「問題文の前提を見落とさないこと」である。以下のステップを習慣づけると良い。
1. 問題文をじっくり読む
特に「前提条件」や「補足説明」には目を通すこと。今回の問題では「1始まり」と書かれていた点を見逃さないことが重要だった。

  1. 直感に頼らない**
    自分の常識や経験に反する設定がある場合、必ず確認するクセをつける。たとえ自分の中で「data[1]は1」という感覚が強くても、問題文の指定に従う必要がある。
  2. 試験対策に慣れる
    試験問題独特のルールに慣れておくことで、戸惑いを減らす。過去問や模擬問題を解く際に「添字の始まり」など細かなルールをチェックするクセをつけよう。


まとめ

試験問題における配列の添字設定は、プログラミング言語の標準的な仕様とは異なる場合がある。
この違いを理解しないまま解答すると、思わぬミスを引き起こしてしまう。今回の問題では「1始まり」が明記されており、その前提を押さえることが正解への鍵だった。

初学者が陥りやすい「添字の混乱」は、問題文を正確に読む力を養うことで回避できる。あなたも次回からは、添字の始まりをしっかり確認して問題に取り組んでみてはいかがだろうか?

コメント