前回は、配列の箱と要素番号を見ました。今回はその箱を作り、読み、書き換えるところです。ここでいちばん多い取り違えは、data[3] が「読む」のか「書く」のかを逆に取ることです。見分けるのは← のどちら側にあるかだけです。
第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コンストラクタ
配列の作り方 ── 出てくるのは5つ
実際の出題に出てくる形を、1つずつ見ます。どれも「宣言」+「初めに入れておくもの」という組み立てです。
1つ目は、中身を並べて書く形。いちばん多く出てきます。
整数型の配列: data ← {1, 2, 3, 4, 5}
{ } の中に並べた数が、そのまま data[1] 〜 data[5] になります。要素数は5です。
2つ目は、空っぽで作る形。
整数型の配列: out ← {}
{ } の中が空なので、要素数0の配列ができます。箱が1つもない状態です。ここに後から足していくという使い方をします(この回の最後で扱います)。
3つ目は、個数だけ決めて、中身を決めない形。
整数型の配列: work ← {(n1 + n2)個の 未定義の値}
「◯個の △」という書き方で、箱の数と、初めに入れる値を指定します。ここでは n1 + n2 個ぶんの箱を用意して、中身は未定義のまま置いています。「あとで全部埋めるので、場所だけ先に取っておく」という形です。
4つ目は、個数を決めて、同じ値で埋める形。
整数型の配列: arrayK ← {otherItemsの要素数個の0}
3つ目と同じ書き方で、中身を 0 にしています。箱の数を別の配列の要素数に合わせるのもよく出る形です。数を数える処理では、この「全部0で始める」がほぼ決まり文句になります。
5つ目は、宣言だけして、何も入れない形。
整数型の配列: data
← がありません。名前と型だけ決めて、中身はまだ無い状態です。変数の宣言と同じで、あとの行で入れます。
| 書き方 | できるもの |
|---|---|
整数型の配列: data ← {1, 2, 3, 4, 5} |
中身を並べて指定する。要素数5 |
整数型の配列: out ← {} |
要素数0の配列。空の状態から始める |
整数型の配列: work ← {(n1 + n2)個の 未定義の値} |
個数だけ決めて、中身は未定義 |
整数型の配列: arrayK ← {otherItemsの要素数個の0} |
個数だけ決めて、全部0で埋める |
整数型の配列: data |
箱の宣言だけ。中身はまだ無い |
出典:基本情報技術者試験 科目B サンプル問題 問3/令和6年度 公開問題 問4・問5/令和8年度 公開問題 問1
5つの形をどれも暗記する必要はありません。問題を読むときに要るのは「この配列は、いま何個の箱を持っているか」だけです。
{1, 2, 3} なら3個、{} なら0個、{5個の 0} なら5個 ── そこだけ拾えば、あとの行が追えます。
次の宣言のあと、a はどうなっていますか。
整数型の配列: a ← {3個の0}
読み書き ── ← の左右で決まる
← の左右で、読むか書くかが決まる
整数型の配列: data ← {1, 2, 3, 4, 5}
top ← data[3] data が右にある = 読むだけ
11
22
33▲
44
55
top3
data は変わらない。3 の写しが top に入る
data[3] ← top data が左にある = 書き換わる
11
22
39
44
55
top9
もとの 3 は消える。top のほうは変わらない
同じ data[3] でも、← のどちら側にあるかで意味が変わる
data[3] という書き方は、読むときにも書くときにも使います。どちら側にあるかで意味が変わります。
| 書き方 | data がある側 |
data はどうなるか |
|---|---|---|
top ← data[len] |
矢印の右 | 変わらない(中身を見ただけ) |
data[1] ← top |
矢印の左 | data[1] が書き換わる |
出典:令和8年度 基本情報技術者試験 科目B 公開問題 問1
要素に代入すると、そこに入っていた値は消えます。G2-3 でやった a ← b とまったく同じです。箱に番号が付いただけで、性質は変わりません。
動かす前に、ひとつ予想してみましょう
data[1] と data[3] を入れ替えようとして、次のように書きました。実行したあと、data の中身はどうなりますか。
整数型の配列: data ← {5, 3, 8}
data[1] ← data[3]
data[3] ← data[1]
正しく入れ替えるには、G2と同じく避難用の箱がいります。動かして確かめます。▲が指しているセルを見てください。
トレースシミュレータ 配列の2つの要素を入れ替える
当サイトオリジナルの例題
ループ開始前
配列
いま計算していること
変数の状態
結果
トレース表(進めると1行ずつ積み上がります)
末尾への追加 ── 要素数が1増える
配列は、あとから要素を足せます。実際の出題では日本語の1文で書かれます。
出典:基本情報技術者試験 科目B サンプル問題 問3(プログラムの一部)
outの末尾 に in[1]の値 を追加する
これで out の要素数が1増えます。空(要素数0)の配列に1つ足せば要素数1になり、その値は out[1] で読めます。
out(追加する前)= 要素数 0
↓ outの末尾 に in[1]の値 を追加する
out(追加したあと)= 要素数 1
読まれた側(in)は変わりません。値がコピーされて out に足されるだけです。
次の3行を実行したあと、out[1] と outの要素数 はそれぞれどうなりますか。
整数型の配列: out ← {}
outの末尾 に 5 を追加する
outの末尾 に 9 を追加する
つまずきポイントまとめ
| まちがえ方 | 正しい理解 |
|---|---|
{3個の0} の 3 を中身だと読む |
3 は箱の数、0 が中身。「◯個の △」 |
data[3] がいつも「読む」だと思う |
← の左にあれば書き換える側 |
| 2行で入れ替えられると思う | 先に上書きすると元の値が消える。避難用の箱がいる |
| 末尾に追加しても要素数が同じだと思う | 1増える。追加した値が新しい末尾になる |
| 追加すると読まれた側も変わると思う | 読まれた側は変わらない。値がコピーされるだけ |
次に読む
この記事で引用した資料
- 擬似言語の記述形式 科目Bの公開問題・サンプル問題の各冊子に掲載。冊子上の名称は年度により「基本情報技術者試験用」と「基本情報技術者試験,応用情報技術者試験用」があるが、本文は同一
- 基本情報技術者試験 科目B サンプル問題(2022年12月26日公開)
- 令和6年度 基本情報技術者試験 科目B 公開問題(2024年7月5日公開)
- 令和8年度 基本情報技術者試験 科目B 公開問題(2026年7月1日公開)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

