基本情報技術者(FE)対策

擬似言語の記法

科目 B で使う言語は 1 つだけです

科目 B のアルゴリズム問題は、C 言語でも Java でもなく「擬似言語」という試験専用の書き方で出題されます。実際に計算機で動かす言語ではなく、人が読むためだけに決められた表記です。文法はとても小さいので、この 1 レッスンで全体像を掴めます。逆に言えば、記法を知らないまま問題文を読むと、書いてあることの意味が取れずに時間だけが溶けていきます。まずここを固めます。

宣言と代入

擬似言語では、使う変数を先に宣言します。変数とは値を入れておく箱のことです。

○整数型: goukei(整数型の配列: data) 整数型: i, sum sum ← 0

1 行目の丸印 ○ は「ここから 1 つの部品の定義が始まる」という目印です。○ の直後の「整数型」は返す値の型、goukei が名前、丸括弧の中が受け取る値の宣言です。2 行目は、この部品の中だけで使う変数 i と sum を整数型として用意する宣言です。宣言しただけでは、まだ値は入っていません。

3 行目の矢印 ← が代入です。右側を計算して、その結果を左側の変数に入れます。等号ではないので、sum ← sum + 1 のように左右に同じ変数が現れても矛盾しません。「今の sum に 1 を足したものを、新しい sum にする」と読みます。

比較と論理演算

条件の中で使う記号は次のとおりです。

記号意味
=等しい
等しくない
以下
以上
<より小さい
>より大きい

多くのプログラミング言語と違って、「等しい」は = の一文字です。二重の等号や感嘆符付きの記号は出てきません。複数の条件をつなぐときは and、or、not を使います。and は両方とも真のときだけ真、or はどちらか一方でも真なら真、not は真と偽をひっくり返します。

制御構造

分岐と繰返しは、終わりが必ず見える形で書かれます。

if (ten ≧ 80) rank ← 3 elseif (ten ≧ 60) rank ← 2 else rank ← 1 endif

if は endif で閉じます。同じように while は endwhile、for は endfor で閉じます。回数が最初に決まらない繰返しには while、決まった回数を回すには for を使い、少なくとも 1 回は実行したい繰返しだけ do と until の組で書きます。

for (i を 1 から 10 まで 1 ずつ増やす) sum ← sum + i endfor

for の丸括弧の中は日本語です。「どの変数を」「いくつから」「いくつまで」「いくつずつ」の 4 点がそのまま書いてあるので、読めば動きが分かります。ここは覚える対象ではなく、読む対象です。

配列と注釈

配列とは、同じ型の値をまとめて並べて置ける箱です。要素は data[1] のように角括弧で指定します。要素番号は 1 から始まります。多くの言語が 0 から始めるので、ここは取り違えが起きやすい場所です。要素の個数は「dataの要素数」と書かれます。

/**/ で囲まれた部分は注釈で、実行されません。ただし科目 B の注釈は、出題者が読み手に手がかりを与えるために置いていることがほとんどです。読み飛ばすと損をします。

次回から、この記法を 1 行ずつ実際に追いかける練習に入ります。

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部