配列は箱が一列に並んだものでした。2次元配列は、それが表のかたちに並んだものです。行と列の2つを指定して、はじめて箱が1つ決まります。指定の順番と、よく似た別の書き方との見分けが、この回の中身です。
第1部 擬似言語の教科書 地図+20回
G1擬似言語の地図(入口)G2-1変数と宣言G2-2データ型G2-3代入「←」G3-1部品を呼ぶ/戻るG3-2引数G3-3戻り値・手続と関数G4-1配列と要素番号G4-2配列の読み書きG5選択処理 ifG6-1繰返し forG6-2配列を for で回すG7繰返し whileG8-1算術演算子と優先順位G8-2and / or / notG9-12次元配列G9-22重ループG10大域変数と局所変数G11未定義G12-1演算子 . の読み方G12-2クラスとはG12-3コンストラクタ
2次元配列 ── 箱が表のかたちに並ぶ
Excel の表を思い浮かべてください。縦に行、横に列が並んでいて、「3行目の2列目」と言えばマスが1つ決まります。座席表も、カレンダーも、成績表も同じ形です。
2次元配列はそれと同じもので、指し方まで同じです。行と列の2つを言えば、箱が1つ決まります。
宣言は、型の名前が変わるだけです。
整数型の二次元配列: hyou ← {{10, 20, 30}, {40, 50, 60}}
{ } が二重になっています。この書き方について、記述形式にはっきり書かれています。
出典:IPA「擬似言語の記述形式」〔配列〕
“{”は配列の内容の始まりを,“}”は配列の内容の終わりを表す。ただし,二次元配列において,内側の“{”と“}”に囲まれた部分は,1 行分の内容を表す。
つまり {10, 20, 30} が1行目、{40, 50, 60} が2行目。表にするとこうなります。
hyou の中身 = 2行3列
1行目10 20 30
2行目40 50 60
内側の { } の個数が行数、その中の値の個数が列数です。ここでは2行3列。
次の宣言で、a は何行何列ですか。
整数型の二次元配列: a ← {{1, 2}, {3, 4}, {5, 6}}
[行, 列] ── 行が先、列があと
箱を1つ指すには、2つの番号が要ります。
出典:IPA「擬似言語の記述形式」〔配列〕
配列の要素は,“[”と“]”の間にアクセス対象要素の要素番号を指定することでアクセスする。なお,二次元配列の要素番号は,行番号,列番号の順に“,”で区切って指定する。
さきほどの hyou なら、hyou[2, 3] は 60 です。
行番号が先、列番号があと
整数型の二次元配列: hyou ← {{10, 20, 30}, {40, 50, 60}}
hyou[2, 3] は「2行目の3列目」で 60
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 10 |
20 |
30 |
| 2 | 40 |
50 |
60 |
左の数字が行番号、上の数字が列番号
カンマの前が行、うしろが列
[ ] にカンマが入っていたときの手順
- カンマの前を読む ── これが行番号。上から何番目か
- その行だけを、1列の並びとして取り出す
- カンマの後ろを読む ── これが列番号。取り出した行の左から何番目か
行も列も1から始まります。1次元のときと同じで、0番はありません。
数学の行列も、表計算ソフトの表も、行が先という順番で共通しています。[2, 3] は「2行3列」であって「2列3行」ではありません。
逆に読むと、行数と列数が違う表では範囲外になり、同じ表でもまったく別の箱を読むことになります。
二次元配列の要素は [行, 列] の順に指定します。行も列も1から数えます。
hyou が次の中身のとき、hyou[1, 2] はいくつですか。
整数型の二次元配列: hyou ← {{10, 20, 30}, {40, 50, 60}}
行数と列数 ── 1次元の「要素数」にあたるもの
1次元の配列で dataの要素数 と書いたところは、2次元では2つに分かれます。
出典:令和7年度 基本情報技術者試験 科目B 公開問題 問5(プログラムの一部)
整数型: row ← dataの行数 整数型: col ← dataの列数
◯◯の行数 と ◯◯の列数。hyou なら行数が 2、列数が 3 です。そして行数がそのまま最後の行番号、列数がそのまま最後の列番号になります。
1次元の {5個の 0} にあたる書き方が、2次元にもあります。
整数型の二次元配列: adjMatrix ← {nodeNum行nodeNum列の 0}
実数型の二次元配列: result ← {row行col列の 未定義の値}
(上=令和6年度 問3、下=令和7年度 問5)行数・列数と、初めに入れる値を書く形です。答えを入れる表を、先に同じ大きさで用意するときに使われます。
次の宣言のあと、b の行数と列数はいくつですか。
整数型の二次元配列: b ← {3行4列の 0}
1行ずつ動かして確かめる
読むところと書くところを、実際に見てください。▲が付いた箱が、その行で読み書きしているところです。
表の箱を、行と列で指す
当サイトオリジナルの例題
ループ開始前
配列
いま計算していること
変数の状態
出力
トレース表(進めると1行ずつ積み上がります)
よく似た別物 ── [i][1] という書き方
実際の出題には、角括弧を2つ続ける書き方も出てきます。
出典:令和6年度 基本情報技術者試験 科目B 公開問題 問3(プログラムの一部)
整数型の二次元配列: adjMatrix ← {nodeNum行nodeNum列の 0}
…
u ← edgeList[i][1]
…
adjMatrix[u, v] ← 1
この edgeList は、同じプログラムの1行目で 整数型配列の配列: edgeList と宣言されています。
同じプログラムの中に、2つの書き方が同居しています。
宣言を見れば、どちらか決まる
整数型の二次元配列→ adjMatrix[u, v] カンマで区切る
整数型配列の配列→ edgeList[i][1] 角括弧を2つ続ける
配列の配列は、「配列を要素として持つ配列」です。edgeList[i] で1本の配列を取り出し、そのうしろの [1] でその配列の1番目を取ります。
edgeList[i][1] も adjMatrix[u, v] も、先に外側(何本目・何行目)、次に内側(何番目・何列目)という順番は変わりません。
違うのは区切り記号だけです。どちらの記号が使われるかは、宣言の型で決まります。プログラムを読むとき、迷ったら宣言の行まで戻ってください。
二次元配列と宣言されたものは [行, 列]、配列の配列と宣言されたものは [ ][ ] で書きます。
整数型の二次元配列: a ← {{10, 20, 30}, {40, 50, 60}}
整数型の配列の配列: b ← {{10, 20, 30}, {40, 50, 60}}
次のうち、書き方が間違っているのはどれですか。
つまずきポイントまとめ
| まちがえ方 | 正しい理解 |
|---|---|
[2, 3] を「2列3行」と読む |
行が先、列があと。記述形式にそう書かれている |
内側の { } を列だと思う |
内側の { } が1行分。その個数が行数 |
| 2次元配列に「要素数」を使う | 行数と列数の2つで表す |
[i][1] と [i, 1] を混同する |
別物。宣言の型がどちらかを決める |
| 行番号や列番号を0から数える | 1次元と同じくどちらも1から |
次に読む
この記事で引用した資料
- 擬似言語の記述形式 科目Bの公開問題・サンプル問題の各冊子に掲載。冊子上の名称は年度により「基本情報技術者試験用」と「基本情報技術者試験,応用情報技術者試験用」があるが、本文は同一
- 令和6年度 基本情報技術者試験 科目B 公開問題(2024年7月5日公開)
- 令和7年度 基本情報技術者試験 科目B 公開問題(2025年7月4日公開)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。
シミュレータと練習問題は当サイトのオリジナルです。

