基本情報技術者試験 (FE) 科目 B — 擬似言語
配列 — 添字が 1 から始まる仕様と操作
擬似言語の配列は「型の配列: 名前 ← {要素1, 要素2, ...}」で宣言する。添字は 1 から始まり、arr[1] が先頭要素、arr[要素数] が末尾要素になる。0 番目の要素は存在しない。
配列は「型の配列: 名前 ← {要素1, 要素2, ...}」
複数の値をまとめて扱いたいときは配列を使います。
整数型の配列: 点数 ← {70, 85, 92, 60, 78}
文字列型の配列: 名前 ← {"太郎", "花子", "次郎"}型の配列 で「その型の要素だけを入れる配列」を宣言します。 初期値は波括弧 { ... } の中にカンマ区切りで並べます。 配列も宣言と初期化はまとめて 1 行に書けます。
添字は 1 から始まる (0 ではない)
基本情報の擬似言語では、配列の添字は 1 から始まります。 Java や Python の 0 始まりとは違うので、これが最も引っかかりやすいポイントです。
点数[1] // 先頭要素 → 70
点数[3] // 3 番目 → 92
点数[5] // 末尾要素 → 78点数[0] や 点数[6] にアクセスすると「添字が範囲外」の実行時エラーになります。 下のコードでエラーの様子を確認できます。
変数
出力
ブラウザで動かしてみる
配列と for を組み合わせて、5 人分の点数の合計を求める例です。 for の i は 1 から 5 まで動くので、点数[i] で 1 番目から 5 番目までを順に足していきます。
変数
出力
出力は 385 になります。一行ずつ実行 を押していくと、合計 が 70, 155, 247, 307, 385 と積み上がっていく様子を追えます。
要素の書き換えと最大値の探索
点数[i] ← 新しい値 の形で要素を書き換えることもできます。 次の例は「最初の要素を仮の最大値として、 残りの要素と比べて更新していく」典型的な最大値探索です。
変数
出力
出力は 92 です。 「先頭を仮の最大値にする → 残りと比べて大きければ更新する」というアルゴリズムは、 科目 B の頻出パターンなのでコードを目で追えるようにしておきましょう。
Python / TypeScript との違い
擬似言語が 1 始まりなのに対し、Python も TypeScript も 0 始まりです。 この実行シミュレーターの 多言語横並び比較ツール で変換すると、擬似言語の arr[i] が Python / TypeScript の arr[i - 1] に置き換わり、「擬似言語は 1 始まりなので -1」 というコメントが自動で付きます。
なぜ -1 されるのか、その理由を目で確かめると、 「擬似言語の添字と実際の言語の添字がずれる」感覚が体に染みつきます。
試験でつまずきやすいポイント
- 1 始まりを忘れる: 「n 個の要素なら for は 1 から n まで」 — 0 から始めると 1 個ずつずれた答えになる
- 範囲外アクセス:
点数[n + 1]のように 1 つ超えた添字を書いてしまう - 初期値の型と配列の型がずれる: 整数型の配列に
{1.5, 2, 3}のような実数を入れると型不整合エラー - 配列を関数に渡す: 擬似言語では 「配列を丸ごと引数にする」ような書き方は避けられがちで、 要素数と要素を別々に受け取る問題文が多い
配列が読めるようになったら、最後のレッスン 関数と手続き に進みましょう。処理をまとめて名前を付けると、コードがぐっと読みやすくなります。
よくある疑問
理解できたか試す / 自由に動かす
この構文をもっと練習する(おすすめ書籍)
擬似言語の記法の読み方から、トレースして答えを出すまでを一冊で通せる科目B特化本。手を動かして追う練習量を確保したいときの定番。
プログラミング未経験を前提に、記号の意味とアルゴリズムの考え方を最小単位から積み上げる入門書。変数や条件分岐で手が止まる段階に向く。
科目Bの出題パターンを網羅的に演習できる対策書。構文を理解した後、解法の型を身につける段階で効く。
本セクションはAmazonアソシエイトのリンクを含みます。
プログラムの読み方でつまずいたら。
たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)