配列は番号のついた箱が一列に並んだものです。科目Bのプログラムはほとんどが配列を扱うので、ここは避けて通れません。そして擬似言語でいちばん多い取り違えが、この番号です。1 から始まります。
正典が定めていること
出典:擬似言語の記述形式(基本情報技術者試験用)
〔配列〕
配列の要素は,“[”と“]”の間にアクセス対象要素の要素番号を指定することでアクセスする。なお,二次元配列の要素番号は,行番号,列番号の順に“,”で区切って指定する。
“{”は配列の内容の始まりを,“}”は配列の内容の終わりを表す。ただし,二次元配列において,内側の“{”と“}”に囲まれた部分は,1 行分の内容を表す。
記号の役割は2つに分かれています。
| 記号 | 役割 | 例 |
|---|---|---|
[ ] |
何番目かを指す | data[3] = data の3番目 |
{ } |
中身をまとめて書く | {5, 3, 8} = 5と3と8が入った配列 |
二次元配列({ の中にさらに { があるもの)は G9 で扱います。この回では一列のものだけを見ます。
要素番号は 1 から
実際の問題文には、ほぼ毎回この一文が入っています。
出典:令和8年度 基本情報技術者試験 科目B 公開問題 問1(同じ断り書きが各年度の問題文にある)
ここで,配列の要素番号は1 から始まる。
つまり 整数型の配列: data ← {5, 3, 8, 1} と書いたとき、箱と番号はこう対応します。
data の中身
data[1] が先頭の 5。data[0] は存在しません。
0から数える言語に慣れているほど、ここで1つずれた答えを選んでしまいます。問題文にわざわざ断り書きがあるのは、それだけ間違えやすいからだと考えてください。
整数型の配列: data ← {5, 3, 8, 1} のとき、data[2] の値はいくつですか。
要素数 ── そのまま最後の番号になる
配列にいくつ入っているかは 〜の要素数 と書きます。
整数型: len ← dataの要素数
出典:令和8年度 基本情報技術者試験 科目B 公開問題 問1
さきほどの data なら 4 です。そして番号が1から始まるので、次のことが言えます。
要素数が4なら、最後の箱は data[4]。要素数から1を引く必要はありません。
実際の出題でも、末尾を取り出すときは data[dataの要素数] のようにそのまま書かれます。0から数える言語では len - 1 が末尾なので、ここは意識して切り替えてください。
同じ data ← {5, 3, 8, 1} で、dataの要素数 と末尾の要素番号の組合せとして正しいものはどれですか。
配列を用意する5つの書き方
実際の出題に出てくる形は、次の5つです。最後の1つを除いて、いずれも { と } で中身を書いています。
| 書き方 | できるもの |
|---|---|
整数型の配列: data ← {1, 2, 3, 4, 5} |
中身を並べて指定する。要素数5 |
整数型の配列: out ← {} |
要素数0の配列。空の状態から始める |
整数型の配列: work ← {(n1 + n2)個の 未定義の値} |
個数だけ決めて、中身は未定義にしておく |
整数型の配列: arrayK ← {otherItemsの要素数個の0} |
個数だけ決めて、全部0で埋める |
整数型の配列: data |
箱の宣言だけ。中身はまだ無い |
出典:基本情報技術者試験 科目B サンプル問題 問3/令和6年度 公開問題 問4・問5/令和8年度 公開問題 問1
{} と書けば要素数0の配列ができます。空っぽの配列を用意して、そこに後から足していく ── これが科目Bで最もよく出る作り方です。
要素を読む・要素に書く
data[3] という書き方は、読むときにも書くときにも使います。どちら側にあるかで意味が変わります。
| 書き方 | 意味 |
|---|---|
top ← data[len] |
← の右にある → 読む。data は変わらない |
data[1] ← top |
← の左にある → 書く。data[1] の中身が変わる |
出典:令和8年度 基本情報技術者試験 科目B 公開問題 問1
要素に代入すると、そこに入っていた値は消えます。G2でやった a ← b とまったく同じです。箱に番号が付いただけで、性質は変わりません。
動かす前に、ひとつ予想してみましょう
整数型の配列: data ← {5, 3, 8} があります。data[1] と data[3] を入れ替えようとして、次の2行を書きました。data はどうなりますか。
data[1] ← data[3] と書いて、次の行に data[3] ← data[1] と書きます。
正しく入れ替えるには、G2と同じく避難用の箱がいります。動かして確かめます。▲が指しているセルを見てください。
トレースシミュレータ 配列の2つの要素を入れ替える
当サイトオリジナルの例題
ループ開始前
配列
いま計算していること
変数の状態
結果
トレース表(進めると1行ずつ積み上がります)
末尾に足して伸ばす
配列は、あとから要素を足せます。実際の出題では日本語の1文で書かれます。
出典:基本情報技術者試験 科目B サンプル問題 問3
outの末尾 に in[1]の値 を追加する
これで out の要素数が1増えます。空(要素数0)の配列に1つ足せば要素数1になり、その値は out[1] で読めます。
out(追加する前)= 要素数 0
↓ outの末尾 に in[1]の値 を追加する
out(追加したあと)= 要素数 1
読まれた側(in)は変わりません。値がコピーされて out に足されるだけです。
要素数0の配列 out に対して outの末尾 に in[1]の値 を追加する を実行しました。何が起きますか。
つまずきポイントまとめ
| まちがえ方 | 正しい理解 |
|---|---|
先頭を data[0] だと思う |
先頭は data[1]。data[0] は無い |
| 末尾を「要素数 - 1」で取る | 要素数がそのまま最後の番号。data[dataの要素数] が末尾 |
{} を「空じゃない何か」だと思う |
要素数0の配列。ここから足していく形が定番 |
| 要素どうしの入れ替えを2行で書く | 先に上書きされて値が消える。避難用の箱がいる |
[ ] と { } を混同する |
[ ] は何番目かを指す、{ } は中身をまとめて書く |
次に読む
本記事で引用した出典:擬似言語の記述形式(基本情報技術者試験用)/基本情報技術者試験 科目B サンプル問題 問3/令和6年度・令和8年度 基本情報技術者試験 科目B 公開問題(独立行政法人情報処理推進機構)。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。{5, 3, 8} を使った入れ替えの例題は当サイトのオリジナルです。

