配列は箱が一列に並んだものでした。2次元配列は、それが表のかたちに並んだものです。行と列の2つを指定して、はじめて箱が1つ決まります。指定の順番と、よく似た別の書き方との見分けが、この回の中身です。
期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円この回の内容を動画で見る
次のページで講義の目次と無料の講義を見られます。受講ボタンとクーポンコードもそこにあります。
この回の内容を動画で見る
解くための再現性が身につく講義29本小テスト86問模試3回分IT資格の森で見る
講義「2次元配列と2重ループ」(全7分24秒)は、IT資格の森(月額1,280円)の会員向けです。科目Bは、1行ずつ値を追うアニメの講義と、講義ごとの小テスト、本番と同じ形の模擬試験がそろっています。
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列の並びとして取り出す
- カンマの後ろを読む ── これが列番号。取り出した行の左から何番目か
科目Bの問題文は、配列を使うたびに「配列の要素番号は1から始まる」と断ります。2次元配列でも、行番号・列番号とも [1] から数えます。
ふだん「3行目の2列目」と言うときと同じ順で、行が先です。[2, 3] は「2行3列」であって「2列3行」ではありません。
逆に読むと、行数と列数が違う表では範囲外になることがあり、同じ表でもまったく別の箱を読むことになります。
次の宣言のあと、a[3, 1] はいくつですか。配列の要素番号は1から始まります。
整数型の二次元配列: a ← {{1, 2}, {3, 4}, {5, 6}}
行数と列数 ── 1次元の「要素数」にあたるもの
1次元の配列で dataの要素数 と書いたところは、2次元では2つに分かれます。
出典:令和7年度 基本情報技術者試験 科目B 公開問題 問5(プログラムの一部)
整数型: row ← dataの行数 整数型: col ← dataの列数
◯◯の行数 と ◯◯の列数。はじめの表で確かめます。
整数型の二次元配列: hyou ← {{10, 20, 30}, {40, 50, 60}}
行数が 2、列数が 3 です。そして行数がそのまま最後の行番号、列数がそのまま最後の列番号になります。
1次元の {5個の 0} にあたる書き方が、2次元にもあります。
整数型の二次元配列: adjMatrix ← {nodeNum行nodeNum列の 0}
実数型の二次元配列: result ← {row行col列の 未定義の値}
(上=令和6年度 問3、下=令和7年度 問5)行数・列数と、初めに入れる値を書く形です。答えを入れる表を、先に同じ大きさで用意するときに使われます。
次の宣言のあと、存在する箱を指しているのはどれですか。配列の要素番号は1から始まります。
整数型の二次元配列: b ← {3行4列の 0}
1行ずつ動かして確かめる
読むところと書くところを、実際に見てください。▲が付いた箱が、その行で読み書きしているところです。
表の箱を、行と列で指す
当サイトオリジナルの例題
ループ開始前
配列
いま計算していること
変数の状態
出力
トレース表(進めると1行ずつ積み上がります)
よく似た別物 ── [i][1] という書き方
実際の出題には、角括弧を2つ続ける書き方も出てきます。
出典:令和6年度 基本情報技術者試験 科目B 公開問題 問3(プログラムの一部)
整数型の二次元配列: adjMatrix ← {nodeNum行nodeNum列の 0}
…
u ← edgeList[i][1]
…
この edgeList は、同じプログラムの1行目で 整数型配列の配列: edgeList と宣言されています。
同じプログラムの中に、二次元配列(adjMatrix)と配列の配列(edgeList)が同居しています。
宣言を見れば、どちらか決まる
整数型の二次元配列→ adjMatrix[行, 列] カンマで区切る
整数型配列の配列→ edgeList[i][1] 角括弧を2つ続ける
配列の配列は、「配列を要素として持つ配列」です。edgeList[i] で1本の配列を取り出し、そのうしろの [1] でその配列の1番目を取ります。
中の配列は1本ずつ長さが違っても構いません。令和6年度 問5 の orders は {{"A", "B", "D"}, {"A", "D"}, {"A"}, …} と、3個・2個・1個の配列を並べています。
edgeList[i][1] も adjMatrix[行, 列] も、先に外側(何本目・何行目)、次に内側(何番目・何列目)という順番は変わりません。
違うのは区切り記号だけです。どちらの記号が使われるかは、宣言の型で決まります。プログラムを読むとき、迷ったら宣言の行まで戻ってください。
次の宣言のあと、p[2][3] はいくつですか。配列の要素番号は1から始まります。
整数型配列の配列: p ← {{1, 2}, {3, 4, 5}}
つまずきポイントまとめ
| まちがえ方 | 正しい理解 |
|---|---|
[2, 3] を「2列3行」と読む |
行が先、列があと。記述形式にそう書かれている |
内側の { } を列だと思う |
内側の { } が1行分。その個数が行数 |
{3行4列の 0} に [4, 3] があると思う |
行数=最後の行番号、列数=最後の列番号。行は1〜3、列は1〜4 |
[i][1] と [i, 1] を混同する |
別物。宣言の型がどちらかを決める |
| 行番号や列番号を0から数える | 問題文の「配列の要素番号は1から始まる」のとおり、どちらも [1] から |
次に読む
この記事で引用した資料
- 擬似言語の記述形式 IPAが公開している科目Bの公開問題・サンプル問題(PDF)の冒頭に掲載。名称は年度により「基本情報技術者試験用」と「基本情報技術者試験,応用情報技術者試験用」があるが、本文は同一
- 令和6年度 基本情報技術者試験 科目B 公開問題(2024年7月5日公開)
- 令和7年度 基本情報技術者試験 科目B 公開問題(2025年7月4日公開)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では、引用した箇所の文言を改変していません(省略や補いがある場合は、その場に明記しています)。
シミュレータと練習問題は当サイトのオリジナルです。


