2次元配列の走査|外側のループが読む向きを決める【基本情報技術者試験 科目B】

基本情報技術者試験

現行FE シラバス Ver9.2 準拠擬似言語の記述形式は2022年から変更なし最終更新 2026-10-17

縦横に並んだ表を扱う回です。Excel の表とまったく同じで、行と列でマスが決まります。新しい考え方は出てきません。くり返しが2重になるだけです。

期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円2,600円中身を見る ›

行と列で、1つのマスが決まる

記述形式に、はっきり書かれています ── 「二次元配列の要素番号は,行番号,列番号の順に “,” で区切って」。

行と列で、1つのマスが決まる

整数型の二次元配列: hyou ← {{10, 20, 30}, {40, 50, 60}}

hyou[1, 2] は「1行目の2列目」

1 2 3
1 10 20 30
2 40 50 60

行が先、列があと。左と上の数字が、そのまま要素番号

記述形式にも「行番号,列番号の順」と書かれている

順番を取り違えない

hyou[1, 2] は 1行目の2列目。行が先、列があとです。

迷ったら表を書いてしまうのがいちばん確実です。2次元配列はそのまま表の形で書けます。

くり返しは2重になる

全部のマスを見るには、行のループの中に、列のループを入れます。

整数型の二次元配列: hyou ← {{10, 20, 30}, {40, 50, 60}}
整数型: r, c

for (r を 1 から hyouの行数 まで 1 ずつ増やす)
  for (c を 1 から hyouの列数 まで 1 ずつ増やす)
    hyou[r, c]の値 を出力する
  endfor
endfor

2次元配列の走査を1行ずつ動かす

当サイトオリジナルの例題


ループ開始前

配列

▲ いま読んでいる▲ いま書いた

いま計算していること

まだ計算していません

変数の状態

トレース表(進めると1行ずつ積み上がります)

出力は 10, 20, 30, 40, 50, 60 の順です。1行目を左から右へ、そのあと2行目を左から右へ並んでいます。

内側のループは、外側が1周するたびに、c = 1 から 3 までまわり直します。だから 2行3列 なら、内側の hyou[r, c]の値 を出力する は 3回 × 2周 で合計6回実行されます。

外側のループが、読む向きを決める

外側のループが、読む向きを決める

同じ表でも、外側と内側を入れ替えると通る順が変わる

外が行なら、横に読む

1 2 3
1 10① 20② 30③
2 40④ 50⑤ 60⑥

出力は 10 20 30 40 50 60。1行目を左から右へ読み終えてから、2行目へ

外が列なら、縦に読む

1 2 3
1 10① 20③ 30⑤
2 40② 50④ 60⑥

出力は 10 40 20 50 30 60。1列目を上から下へ読んでから、2列目へ

どちらでも6マス全部を1回ずつ通る。変わるのは順番だけ

外側と内側を入れ替えたプログラムが、これです。入れ替わったのは for の2行だけで、hyou[r, c] の書き方はそのままです。

整数型の二次元配列: hyou ← {{10, 20, 30}, {40, 50, 60}}
整数型: r, c

for (c を 1 から hyouの列数 まで 1 ずつ増やす)
  for (r を 1 から hyouの行数 まで 1 ずつ増やす)
    hyou[r, c]の値 を出力する
  endfor
endfor

出力は 10 40 20 50 30 60 になります。1列目を上から下へ読んでから、2列目に移っています。

入れ替えても、マスは全部通る

どちらでも6マス全部を1回ずつ通ります。違うのは通る順番だけです。

だから「合計を出す」なら答えは同じ。「順に出力する」なら答えが変わります。問われているのがどちらかを見てください。

行数と列数の書き方

行数と列数の書き方

令和7年度 問5 では 整数型: row ← dataの行数 と、先に変数へ入れてから使っている

hyouの行数 は縦、hyouの列数 は横

1 2 3
1 10 20 30
2 40 50 60

この表なら 行数 は 2(左の行番号が 1・2)、列数 は 3(橙の 10・20・30 の3マス)

取り違えると、外側と内側の上限が入れ替わる

用意するときの書き方

同じ問題で、空の2次元配列は {row行col列の 未定義の値} と書かれています。「何行何列を、何で埋めるか」という読み方です。

つまずきポイントまとめ

まちがえ方 正しい読み方
[2, 1] を2列1行と読む 行が先、列があと
要素番号を0から数える 問題文に「1 から始まる」とあれば、行も列も1から
内側のループは、全体で1度しか回らないと思う 外側が1周するたびに、最初からまわり直す
入れ替えても同じだと思う 通る順番が変わる。出力の順は変わる
行数と列数を取り違える hyouの行数 は縦、hyouの列数 は横

次に読む

A3-2 2次元配列の集計 ─ 0を入れる場所で決まる
A2-1 配列を全部見る ─ 番号を1つずつ変えて読む
G9-1 2次元配列 ─ 行と列の書き方
G9-2 2重ループ ─ 内側と外側の回り方
目次 基本情報技術者試験 科目B 攻略ガイド

この記事で引用した資料

いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では、引用した箇所の文言を改変していません(省略や補いがある場合は、その場に明記しています)。

本文の例題は当サイトのオリジナルです。

タイトルとURLをコピーしました