擬似言語の記号・記述形式一覧|試験前のチェック早見表
ITパスポートや基本情報技術者試験の最大の難所といえば、やはり擬似言語ですよね。 多くの受験者が「プログラムなんて書いたことがないのに、どうやって読めばいいの?」と不安に感じているはずです。
実は、擬似言語には明確なルールがあり、それさえ押さえればパズルのように解くことができます。 私はエンジニアとして10年以上コードを書いてきましたが、擬似言語は実在するプログラミング言語よりもずっとシンプルに設計されています。
試験直前になって焦らないために、まずは基本となる記号や記述形式を整理しておきましょう。 この記事では、公式の試験要綱に基づいた正確なルールを、エンジニアの視点で分かりやすく解説します。
これを読み終える頃には、あの難解に見えたアルゴリズム問題が、驚くほどスッキリ理解できるようになっているはずです。
擬似言語とは何か:試験で求められる共通言語¶
擬似言語は、特定のプログラミング言語の知識を問うのではなく、アルゴリズム(手順)を考える力を測るための道具です。 JavaやPythonなど特定の言語に詳しくなくても、論理的に考えれば正解に辿り着けるように作られています。
まずは、試験で使われる公式な記述形式の全体像を把握することから始めましょう。 IPA(情報処理推進機構)が定義している基本的なルールを、以下の表にまとめました。
記述形式の基本ルール一覧¶
プログラムの全体構造を定義するための、最も基本的な記述方法です。 ITパスポートと基本情報技術者試験で、基本的には共通の形式が使われています。
| 項目 | 記述形式 | 説明 |
|---|---|---|
| 手続・関数の宣言 | ○手続名又は関数名 | 手続又は関数を宣言します。 |
| 変数の宣言 | 型名: 変数名 | 変数を宣言します。 |
| 代入 | 変数名 <- 式 | 変数に式の値を代入します。 |
| 関数呼び出し | 手続名又は関数名(引数...) | 手続又は関数を呼び出し、引数を受け渡します。 |
| 注釈(コメント) | / 注釈 / または Δ 注釈 | 注釈を記述します。実行には影響しません。 |
なぜ「=」ではなく「<-」を使うのか¶
初心者の方が最初につまずくポイントが、代入の <- という記号です。 算数の授業では「=」が等しいことを意味しますが、プログラムの世界では「入れる」という動作を区別する必要があります。
エンジニアの感覚からすると、この矢印は非常に親切な記号だと言えます。 「右から左へデータが流れている」という方向性が一目でわかるため、代入の順序を間違えるミスを防いでくれるからです。
試験問題では、左辺にあるのが「箱(変数)」で、右辺にあるのが「中身(値や計算結果)」だと意識して読んでみてください。 これだけで、代入式の意味を取り違えることはなくなるはずです。
演算子と優先順位:計算のルールを完璧にする¶
式の中で使われる記号(演算子)には、計算する順番が決まっています。 この優先順位を間違えると、どんなにアルゴリズムが理解できていても正解に辿り着けません。
特に mod などの見慣れない記号は、試験で頻出するので注意が必要です。 まずは演算子の種類と、その強さ(優先度)を整理した表を確認しましょう。
演算子の優先順位早見表¶
上にあるものほど優先的に計算され、同じ優先度の場合は左から順番に計算されます。
| 種類 | 演算子 | 優先度 |
|---|---|---|
| 括弧 | ( ) | 最高[cite: 1] |
| 単項演算子 | not, +, - | 高[cite: 1] |
| 乗除・剰余 | ×, ÷, mod | 中[cite: 1] |
| 加減 | +, - | 中[cite: 1] |
| 関係(比較) | <, =, >, ≠, ≦, ≧ | 低[cite: 1] |
| 論理積 | and | 低[cite: 1] |
| 論理和 | or | 最低[cite: 1] |
注:演算子 mod は、剰余算(割り算の余り)を表します。
注意すべき「mod」と「÷」の違い¶
擬似言語において mod は剰余、つまり「割り算の余り」を求める演算です。 例えば「10 mod 3」の結果は、10を3で割った余りである「1」になります。
一方の「÷」は通常の割り算ですが、整数型同士の計算では小数点以下がどう扱われるかに注意が必要です。 エンジニアがバグを出す原因の多くは、こうした細かい計算仕様の勘違いにあります。
余りを求める処理は、アルゴリズム問題で「偶数か奇数かを判定する」際などによく使われます。 「x mod 2 = 0」なら偶数、といったパターンを覚えておくと、読解スピードが上がりますよ。
論理演算の「and」と「or」を攻略する¶
複数の条件を組み合わせる and(論理積) と or(論理和) は、判定の要です。 and は両方が真(true)のときだけ真になり、or はどちらか一方が真であれば真になります。
試験問題では、優先順位の関係で and が先に評価されることを忘れないでください。 不安なときは、自分で式に ( ) を書き加えて、計算の順番を視覚化するのがエンジニア流のコツです。
選択処理(if文):条件による分岐をマスターする¶
アルゴリズムの華とも言えるのが、条件によって処理を変える「選択処理」です。 擬似言語では、if から始まり endif で終わる構造が使われます。
基本情報の試験などでは、複数の条件を重ねる elseif がよく登場します。 まずは、最も基本的な書き方から順に見ていきましょう。
if文の基本構造¶
条件が1つだけの場合のシンプルな形です。 「もし〜なら処理をする」という、人間の思考に近い記述になっています。
if (条件式1)
処理1
else
処理2
endif
複数の条件がある場合の elseif¶
「条件1ではないが、条件2には当てはまる」という場合に使うのが elseif です。 上から順番に評価され、最初に真になった場所の処理だけが実行されるのがポイントです。
if (条件式1)
処理1
elseif (条件式2)
処理2
else
処理+1
endif
どの条件式も真にならないときは、最後の else の後の処理が実行されます。 各処理は、0以上の文の集まりで構成されます。
プロの視点:elseの重要性¶
エンジニアとしてコードを書く際、私は else を非常に大切にしています。 どの条件にも当てはまらなかった場合の「逃げ道」をあらかじめ定義しておくことで、想定外の動作を防げるからです。
試験問題でも、最後の else がどのようなケースをカバーしているかを考えることが重要です。 条件の漏れがないかを確認する癖をつけると、正答率がぐっと上がります。
繰返し処理(ループ):効率的な処理の核心¶
同じ処理を何度も実行する「繰返し処理」は、プログラムの真骨頂です。 擬似言語には、主に3つのループの形が用意されています。
「いつまで繰り返すのか」という終了条件の見極めが、ループ攻略の鍵を握ります。 それぞれの特徴を正しく理解し、使い分けられるようになりましょう。
while文(前判定)¶
処理を実行する前に条件をチェックする形式です。 条件式が真の間、処理を繰り返し実行します。
while (条件式)
処理
endwhile
条件が最初から偽の場合は、一度も処理が実行されないという特徴があります。 データの読み込みなど、データがない場合は何もしたくない時に使われます。
do-while文(後判定)¶
処理を一度実行してから、次も繰り返すかどうかを判断します。 処理を実行し、条件式が真の間、処理を繰り返し実行する仕組みです。
do
処理
while (条件式)
そのため、どんな条件であっても「最低1回」は必ず処理が実行されます。 ユーザーからの入力を受け取ってからチェックする場合などに適しています。
for文(制御記述による繰返し)¶
「何回繰り返すか」が決まっているときに便利な形式です。 制御記述の内容に基づいて、処理を繰り返し実行します。
for (制御記述)
処理
endfor
試験では「i を 1 から 10 まで 1 ずつ増やす」といった日本語による指定が一般的です。 回数が決まっているため、トレース(値の追跡)がしやすいのも特徴ですね。
無限ループを防ぐためのチェックポイント¶
現場のエンジニアが最も恐れるのは、ループが終わらなくなる「無限ループ」というバグです。 試験でも、ループの中で変数が正しく更新されているかを常に確認してください。
例えば、while の条件に使っている変数が、ループの中で全く変化していなければ要注意です。 指を使って、1回目、2回目……と変数の値の変化を追うトレースが、最も確実な対策になります。
配列とデータ構造:データのまとまりを扱う¶
大量のデータを効率よく管理するために使われるのが「配列」です。 擬似言語における配列は、添字(要素番号)を使って各データにアクセスします。
ここで注意が必要なのが、要素番号の数え方です。 公式の記述形式では、要素番号を指定するために [ ] を使用します。
一次元配列の扱い方¶
データを一列に並べたものが一次元配列です。
アクセスする際は 配列名[要素番号] という形式を使います。
/* 要素番号 4の要素にアクセス */
exampleArray[4]
配列の内容を示すときは { } を使用します。
例として、要素が {11, 12, 13, 14, 15} のとき、exampleArray[4] は 14 を指します。
二次元配列(行列)の扱い方¶
表のような形をしたデータ構造が二次元配列です。 要素番号は、行番号と列番号の順に「,(カンマ)」で区切って指定します。
/* 2行目 5列目の要素にアクセス */
exampleArray[2, 5]
二次元配列の初期化では、内側の { } が1行分の内容を表します。 {{11, 12}, {21, 22}} のような多重構造になるので、視覚的にイメージを持ちましょう。
エンジニアが教える「境界値」の罠¶
配列を扱う際に最もミスが起きやすいのは、最初と最後の要素です。 「1番目」から始まるのか、それとも「最後が要素数と同じ」なのか、ここを1つ間違えるだけで答えが変わってしまいます。
IPAの例示では要素番号が1から始まるケースが紹介されていますが、問題文に独自の指定がないか必ず確認しましょう。 ループの終了条件が配列のサイズを超えていないかをチェックする慎重さが、凡ミスを防ぎます。
試験別の微妙な違い:ITパスポート vs 基本情報¶
ITパスポートと基本情報技術者試験では、使われる擬似言語にいくつかの共通点と相違点があります。 基本情報の方がより詳細な概念が含まれる傾向にあります。
特に、基本情報技術者試験ではアルゴリズムの重要度が高いため、より厳密な定義がなされています。 それぞれの試験で注目すべき固有のルールを整理しておきましょう。
基本情報に登場する「未定義」の状態¶
基本情報技術者試験の擬似言語には、「未定義」 という概念が存在します。 変数に値が格納されていない状態を指し、変数に「未定義の値」を代入することも可能です。
実務でも「変数の中身が空(Null)であること」による不具合は非常に多いです。 試験でも「この変数に初期値が入っているか?」を疑う視点を持つことで、論理的な落とし穴を回避できるようになります。
メンバ変数へのアクセス(ドット演算子)¶
基本情報の擬似言語では、演算子 「.」 が使われることがあります。 これはメンバ変数やメソッドへのアクセスを表すための記号です。
/* メンバ変数へのアクセス例 */
object.memberVariable
一見難しそうですが、要は「〇〇の××」という持ち物を指定しているだけだと考えれば簡単です。 オブジェクト指向的な考え方が含まれる問題で登場するため、記号の意味を正しく理解しておきましょう。
まとめ:記号を味方につけて合格を勝ち取ろう¶
擬似言語は決してあなたを苦しめるために存在しているのではありません。 むしろ、複雑な問題を整理して考えるための、世界中で共有されている知恵の結晶です。
今回紹介した記号や記述形式をマスターすれば、問題文の読み解きスピードは確実に上がります。 最後に、この記事の重要ポイントを振り返ってみましょう。
- 代入の <- は右から左へのデータの流れを意識する。
- 演算子の優先順位、特に mod と and/or の順序に注意する。
- ループ(while, do, for)は「いつ終わるか」を正確に見極める。
- 配列のアクセスには [ ] を使い、要素番号の範囲を死守する。
試験本番では、焦らずに一歩ずつ、自分がコンピュータになったつもりで処理を追ってみてください。 あなたがこれまで積み上げてきた論理的な思考は、必ず正解を導き出してくれるはずです。
合格通知を受け取ったとき、この擬似言語の学習が確かな土台になっていることに気づくでしょう。 皆さんの試験の成功を、心から応援しています!
ここまでお読みいただきありがとうございます。