疑似言語の解説(基本情報技術者シラバス用語)

目次

疑似言語とは

疑似言語(ぎじげんご)とは、プログラムの処理手順(アルゴリズム)を人間にとって分かりやすく表現するために作られた、架空のプログラミング言語のことです。実際のコンピュータ上でそのまま実行することはできませんが、特定のプログラミング言語(JavaやPython、C言語など)の細かな書き方のルールにとらわれず、アルゴリズムの論理的な構造や流れだけを整理して伝えるために用いられます。日本のIT国家試験である「基本情報技術者試験」などの問題文でも、プログラミング能力の本質的な考え方を問うためにこの疑似言語が採用されています。

具体例

例えば、変数に値を代入したりループ処理を行ったりするアルゴリズムを、実際のプログラミング言語と疑似言語で比較してみましょう。以下は疑似言語による記述のイメージです。

■ 変数 x に 10 を代入する
■ x が 100 未満の間、以下を繰り返す
|   x に x + 5 を代入する
■ 繰り返しを終了する
■ 変数 x の値を表示する

もう少し詳しく

疑似言語は、英語で「Pseudocode(シュードコード)」と呼ばれ、特定のプログラミング言語に依存しない、アルゴリズムの純粋なロジックを表現するための共通言語です。実際のシステム開発現場でも、複雑な処理をいきなりプログラムコードに書き起こすのではなく、まずは日本語などの自然言語とプログラミング言語の中間のような形式である疑似言語を使って、処理の流れを設計・共有することがよくあります。

プログラミング言語には、例えばC言語、Java、Pythonなど様々な種類があり、それぞれ変数宣言の書き方やループ処理の構文(for文やwhile文など)、行末のセミコロンの有無など、厳密で細かな文法ルール(シンタックス)が存在します。実際のプログラミングでは、アルゴリズムの論理自体は正しくても、たった一つのカンマや括弧が抜けているだけでコンパイルエラーや実行エラーになってしまいます。

しかし、疑似言語を用いることで、そうした言語特有の煩わしい文法ルールを一旦忘れ、「どのような条件で分岐するか」「何回処理を繰り返すか」「変数の値がどう変化していくか」という、問題解決の本質的なステップ(アルゴリズム)の考案と確認にのみ集中することができます。フローチャート(流れ図)もアルゴリズムを表現する手法の一つですが、処理が複雑になると図が巨大で複雑になりすぎるという欠点があります。疑似言語はテキストベースであるため、構造化プログラミング(順次・分岐・反復)の構成をシンプルかつ簡潔に記述できるという強みを持っています。

試験でのポイント

基本情報技術者試験では、午後(現在は科目B)の「アルゴリズムとプログラミング」分野において、すべての問題がこの疑似言語を用いて出題されます。特定の言語(CやJavaなど)を知らなくても、プログラミングの基礎的な思考力があれば解けるようにするための配慮です。

試験対策として絶対に押さえておくべきポイントは、試験独自の「疑似言語の記述仕様(ルール)」を完全に理解することです。例えば、配列の要素の指定方法です。多くの実際のプログラミング言語では配列のインデックス(添字)は「0」から始まりますが、試験の疑似言語では問題の指示がない限り「1」から始まるルールになっていることが多く、この違いを意識していないと、ループの終了条件などで「1つずれる(オフバイワンエラー)」という致命的なミスを犯してしまいます。

また、代入処理を表す記号として「←」が使われたり、等しいことを表す条件式に「=」や「==」が使われたり、論理演算子(かつ、または、否定)の表記方法が決まっていたりします。これらの記法に慣れておくことは必須です。

問題へのアプローチ方法としては、「トレース(机上デバッグ)」の技術を磨くことが最も重要です。トレースとは、疑似言語で書かれたプログラムを読みながら、変数の値がどのように変化していくかを表にして書き出し、手作業でプログラムを実行していく作業のことです。試験では、一見複雑に見えるループ処理や再帰呼び出しの疑似言語が出題されますが、落ち着いて変数の値の変化を余白に書き出していけば、必ず正しい答え(出力結果や、空欄に入るべき処理)を導き出すことができます。

関連する用語

アルゴリズム、フローチャート、構造化プログラミング

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ