擬似言語とは?基本情報 科目B の読み方をやさしく解説

擬似言語とは?基本情報 科目B の読み方をやさしく解説

科目Bの擬似言語の問題文に戸惑う受験者のイメージ
「擬似言語の記号、どう読めばいいの?」
「分岐や繰返しが入ると、追えなくなる…」
「そもそも何のためにこの書き方なの?」

基本情報の科目Bを開いて、最初に身構えるのがこの見慣れない表記です。でも、正体を知れば恐れる必要はありません。

擬似言語とは、特定の言語に依存せず手順だけを共通の記号で書いた表記法です。実在の言語ではなく、科目Bのために手順の骨格だけを取り出したものと考えてください。

 

この記事では、なぜ科目Bがこの表記を使うのかを押さえ、3つの制御構造と代入記号の向きを確認し、実際に変数の値を1行ずつ手で追う「トレース」をあなたと一緒にやってみます。最後に、試験での問われ方まで示します。基本情報 科目Bのアルゴリズム対策に直接効きます。

 

1. なぜ科目Bは擬似言語で出題するのか

言語に依存しない共通表記で公平に出題する仕組みのイメージ

基本情報の科目Bは、アルゴリズムとプログラミングが出題の中心を占め、その問題文は擬似言語で記述されるとIPAが公表しています。ここで疑問が湧きます。なぜ Python や Java のような本物の言語を使わないのか。

 

理由は受験者の得意言語に左右されず、手順を読む力そのものを測るためです。もし Python で出題すれば、Python 経験者が有利になります。特定の言語に依存しない共通の記号で書けば、初学者もベテランも同じ土俵で手順を追うことになります。

 

たとえるなら、楽譜です。ピアノでもギターでも、同じ音符の並びから同じ旋律を再現できます。楽器(=プログラミング言語)が違っても、音符(=手順)は共通の記号で読める。擬似言語は、その「手順だけを書いた楽譜」にあたります。

 

だから、あなたが目指すのは記号の丸暗記ではありません。上から1行ずつ、書かれた手順のとおりに処理を追えること。これが科目Bで問われる力の本体です。前提となる考え方は アルゴリズム基礎とは で整理しています。手順を設計図として捉える視点を先に持っておくと、擬似言語の読み取りが安定します。

 

2. 手順は3つの部品でできている(順次・選択・繰返し)

順次・選択・繰返しの3つの制御構造を整理するイメージ

どんなに複雑な手順も、突き詰めると順次・選択(分岐)・繰返し(反復)の3部品の組み合わせでできています。まずこの3つを対応表で押さえてください。

 

制御構造 意味 擬似言語での見え方
順次 書かれた順に上から実行する 1行ずつ縦に並ぶ
選択(分岐) 条件によって処理を分ける if 条件 … else …
繰返し(反復) 条件が成り立つ間、同じ処理を回す while 条件 / for 変数を範囲で

 

あなたが問題文を読むとき、まずこの3部品のどれが使われているかに印をつけると、構造が一気に見えてきます。とくに選択の中に繰返しが入る「入れ子」が読みの山場です。どこで条件を見て、どこへ戻るのか。矢印で経路をなぞる感覚で追うと、頭の中の動きが安定します。

 

3部品は別々の知識ではなく、「並べる・分ける・繰り返す」という手順の組み立て方そのものです。この3つ以外に制御構造は出てきません。だから、初見の問題でも「どこが分岐で、どこが繰返しか」を見分けられれば、あなたは手順を追い切れます。

 

3. 代入記号「←」が示している向き

代入記号が右辺の値を左辺の変数へ入れる向きを示すイメージ

擬似言語で最初につまずきやすいのが、代入の記号です。数学のイコール「=」ではなく、「←」で右辺の値を左辺の変数へ入れると書きます。

 

たとえば「合計 ← 合計 + i」は、等式ではありません。「今の合計に i を足した結果を、あらためて合計に入れ直す」という操作の向きを表しています。数学のイコールだと「合計=合計+i」は矛盾に見えますが、代入だと考えれば「上書き」なので何の問題もありません。あなたが混乱するとしたら、たいていこの一点です。

 

もう一つ、擬似言語では条件の書き方も日本語に近く整えられています。「もし 得点 ≧ 60 ならば『合格』を表示する、そうでなければ『不合格』を表示する」のように、日本語のメモとほぼ同じ流れで読めます。記号に身構えるより、書かれている日本語の意味をそのまま追うほうが、あなたには速く正確です。

 

実在言語に慣れた人ほど、ここで一度立ち止まると混乱を防げます。「変数は値を入れておく箱」「← は箱への入れ直し」。この2つのイメージを持てば、代入が並んだ処理も落ち着いて追えます。箱の中身は、代入のたびに書き換わっていくと意識してください。

 

4. 1から10までの合計を、手でトレースしてみる

変数の値を1行ずつ手で追うトレースのイメージ

読む力は、目で追うだけでは伸びません。変数の値を紙の上で1つずつ更新していく「トレース」が、いちばん効きます。次の3行の手順を、あなたも実際に手で追ってみましょう。

 

①合計 ← 0 / ②i を 1 から 10 まで 1 ずつ増やしながら繰返す / ③合計 ← 合計 + i。この繰返しで、合計はどう変わっていくか。最初の数回を表にしました。

 

i の値 ③の計算 繰返し後の合計
1 0 + 1 1
2 1 + 2 3
3 3 + 3 6
4 6 + 4 10
10 45 + 10 55

 

合計は最終的に 55 になります。ここで大事なのは答えそのものより、「i が1つ進むたびに合計の箱が書き換わる」様子を、あなたが目で確かめたことです。この作業を数問こなすと、繰返しの動きが体に入ります。頭の中だけで追おうとせず、値を紙に書き出す。これが遠回りに見えて最短です。慣れると、表を書かなくても頭の中で同じトレースが走るようになります。

 

5. 配列・手続きと、試験で狙われる読み方

配列と手続きの読み方と試験での着眼点を整理するイメージ

基本構文の次に出てくるのが配列手続き(関数)です。配列は同じ型の値を並べて「配列名[添字]」で1つずつ取り出す仕組み、手続きは一連の処理に名前を付け、引数で値を受け取り戻り値で結果を返す仕組みです。配列はほぼ繰返しとセットで、要素を順に処理します。この先の連結リストやスタックは データ構造とは でまとめています。

 

現場でも、仕様を言語に依存しない形で共有したい場面では、擬似言語に近い書き方でロジックをメモします。SE歴15年以上の経験から言うと、手続きを読む要点は「何を渡し、何が返るか」を先に確認することです。呼び出し側と手続きの内部を分けて追えば、入れ子でもあなたは混乱しません。

 

科目Bで狙われるのは、記号の意味そのものより「トレースの正確さ」です。とくに繰返しの終了条件(どこで抜けるか)と、配列の添字が1始まりか0始まりかは取り違えの定番。設問の擬似言語仕様の注記を先に読み、添字の起点を確かめてから追うと、ケアレスミスがぐっと減ります。ここを外すと、手順は合っているのに答えだけずれる事故が起きます。

 

次のステップ

擬似言語が科目A・科目Bのどこに位置づくかを俯瞰したいなら、基本情報技術者試験の試験範囲と勉強法ガイド で全体像を先に押さえると、学習の順序が決まります。

読む力がついたかを確かめるなら、基本情報技術者 科目B アルゴリズムの問題集 で、実際の擬似言語を手でトレースして慣れておくのが近道です。