【基本情報技術者試験対策】疑似言語をわかりやすく解説!初心者向けの読み方・解き方

基本情報技術者試験対策

基本情報技術者試験に出題される疑似言語を図解で解説します。
代入・条件分岐・繰り返し・配列探索の問題の読み方をわかりやすく紹介します。

疑似言語とは

疑似言語は何をどの順番で行うかを人間に分かりやすく書いたものです。

疑似言語の目的

疑似言語とは、プログラムの処理手順(アルゴリズム)を人が理解しやすい形で表現するための記述方法です。

実際のプログラミング言語(C言語やJavaやPythonなど)は、言語の書き方を理解する必要がありますが、疑似言語では、特定のプログラミング言語に依存せず、処理の流れを日本語に近い形式で表現できます。
そのため、プログラムの動作を理解したり、アルゴリズムを設計したりする際に役立ちます。

また、疑似言語の目的は「プログラムの文法を学ぶこと」ではなく、「アルゴリズムや処理の流れを理解すること」にあります。

プログラミング言語との違い

実際に疑似言語とプログラミング言語の違いを見てみます。

例として、「1~10までの数字のうち、偶数のみの合計を求めて表示」の疑似言語とプログラミング言語(C言語)を提示します。

sum ← 0

i を 1 から 10 まで 1 ずつ増やしながら繰り返す
もし i mod 2 = 0 ならば
sum ← sum + i
を実行する
を繰り返す

sum を表示する

※ i mod 2は、iを2で割った余りを意味します。

#include <stdio.h>

int main(void)
{
    int sum = 0;

    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            sum += i;
        }
    }

    printf("%d\n", sum);

    return 0;
}

疑似言語問題の解き方

疑似言語の基本的な読み方

代入

プログラミングは変数に数値などの値を入れて計算をしたり、表示をしたりします。
代入は変数に値を入れたり、計算結果を保存したりすることです。

疑似言語での代入は「変数 ← 値」という書き方となります。
次の例は変数Xに10を代入しています。

X ← 10

条件分岐

条件分岐は、ある条件を満たした場合に処理をします。

疑似言語での分岐条件は、条件を書いて、条件を満たす場合の処理をその下にインデント(右に字をずらす)で記述します。
次の例は変数Xが10より大きい場合、 “Xは10より大きい”と表示します。

X > 10 の場合
“Xは10より大きい”と表示

繰り返し

繰り返しは、同じ処理を何度も繰り返したいときに使う処理です。

疑似言語での繰り返しは、繰り返しをする条件を書いて、条件を満たす場合の処理をその下にインデント(右に字をずらす)で記述します。
次の例は、Xが10未満の間、Xを1ずつ増やす処理を繰り返す議事言語です。

X < 10の間、処理を繰り返す
X ← X + 1

簡単な例で説明

合計値を求める疑似言語の例

1から5までの合計を計算して結果を表示する疑似言語で解説します。

この例では「合計」と「i」という2つの変数が登場し、「合計」に計算結果を格納しています。
・最初の2行は、変数「合計」に0を、変数「i」に1を代入しています。
・次に「i が 5 以下なら次の処理を繰返す」とあり、「次の処理」というのがインデント(少し右にずれている)次の2つの計算です。
  合計 ← 合計 + i
  i ← i + 1
・この計算では、変数「i」を1増やしながら「合計」に「i」を足していき、1から5までの合計を求めることができます。

疑似言語の例

検索をする疑似言語の例

次の例は、配列 B = [4, 1, 6, 8, 2] の中に値 6 が含まれているかを確認する疑似言語です。

疑似言語の例(線形検索)

配列とは、配列は「番号付き箱の集まり」のようなもので、複数のデータを順番に処理するなど便利な仕組みです。
配列には番号が付いており、この番号は、添字やインデックスと呼ばれます。

配列

今回の例は変数「i」を1から順に増やし、「i」を配列Bの添字に使用して配列Bの値が6かどうかを確認しています。

疑似言語の例(線形検索)

情報技術者試験では、変数にどのような値が入るかや、繰り返し処理が何回実行されるかといった問題が問われることが多いです。
今回の説明でもあった、変数の表を作るなどして、変数の値がどのように変化するかを追跡すると良いです。

腕試し(理解テスト)

腕試し(理解テスト)に挑戦する場合はこちらをクリック。

コメント

タイトルとURLをコピーしました