Skip to article frontmatterSkip to article content

擬似コード

法政大学

アルゴリズムは、さまざまな方法で表現できる。代表的な方法には、フローチャート、擬似コードがある。

擬似コード(Pseudocode)は、アルゴリズムを記述するための表記法である。厳密な構文はないが、自然言語より明確にアルゴリズムを表現できる。ここでは、曖昧さのない一般的に使われる擬似コードの表記法を紹介する。

代入

代入(assignment)とは、変数に値を設定する操作である。代入の擬似コードは以下の通りである。

variableexpression\texttt{variable} \gets \texttt{expression}

variable\texttt{variable}は変数、expression\texttt{expression}は値や式を表す。記号\getsは「代入」を意味する。プログラミング言語では、代入は通常=記号で表現される。

例えば、利益は収入からコストを引いた値と定義される。これを擬似コードで表現すると以下のようになる。

profitrevenuecost\texttt{profit} \gets \texttt{revenue} - \texttt{cost}

さらに、収入とコストを入力として、利益を出力するアルゴリズムは以下のように表現できる。

以下は、PythonとC言語での実装例である。

revenue = 1000
cost = 600
profit = revenue - cost
print(profit)

Program 1:Calculating profit in Python

#include <stdio.h>
int main() {
    int revenue = 1000;
    int cost = 600;
    int profit = revenue - cost;
    printf("%d\n", profit);
    return 0;
}

Program 2:Calculating profit in C

選択構造

選択構造(selection structure)は、条件に基づいて異なる処理を実行するための構造である。擬似コードでは、以下のように表現される。

読みやすくするために、擬似コードでは、字下げを用いて制御範囲を示す。Pythonでは、字下げが構文の一部であるため、特に重要である。

conditionは条件式で、結果はTrueまたはFalseである。条件がTrueの場合、then以下の処理が実行され、Falseの場合はelse以下の処理が実行される。

例えば、成績を判定するアルゴリズムは以下のように表現できる。

以下は、PythonとC言語での実装例である。

score = 75
if score >= 60:
    result = "Pass"
else:
    result = "Fail"
print(result)

Program 3:Evaluating score in Python

#include <stdio.h>
int main() {
    int score = 75;
    char result[10];
    if (score >= 60) {
        sprintf(result, "Pass");
    } else {
        sprintf(result, "Fail");
    }
    printf("%s\n", result);
    return 0;
}

Program 4:Evaluating score in C

反復構造

反復構造(repetition structure)は、特定の条件が満たされるまで同じ処理を繰り返すための構造である。擬似コードでは、以下のように表現される。

例えば、1からnまでの整数の合計、i=1ni\sum_{i=1}^{n} iを計算するアルゴリズムは以下のように表現できる。

以下は、PythonとC言語での実装例である。

n = 10
sum = 0
i = 1
while i <= n:
    sum += i
    i += 1
print(sum)

Program 5:Calculating sum in Python

#include <stdio.h>
int main() {
    int n = 10;
    int sum = 0;
    int i = 1;
    while (i <= n) {
        sum += i;
        i++;
    }
    printf("%d\n", sum);
    return 0;
}

Program 6:Calculating sum in C

反復構造は、よく一連のデータを順番に処理する場合に使用される。このような処理に対し、for-eachという構造を用いることもある。擬似コードでは、以下のように表現される。

例えば、[1, 2, 3, 4, 5]というリストの各要素の2乗を計算するpythonのコードは以下のようになる。

numbers = [1, 2, 3, 4, 5]

for number in numbers:
    square = number ** 2
    print(square)

Program 7:For-each structure in Python

練習問題

Solution to Exercise 1 #

擬似コードの解答例は省略。

def find_maximum(x1, x2, x3):
    x_max = x1
    if x2 > x_max:
        x_max = x2
    if x3 > x_max:
        x_max = x3
    return x_max

Program 8:Finding maximum value in Python

#include <stdio.h>
int find_maximum(int x1, int x2, int x3) {
    int x_max = x1;
    if (x2 > x_max) {
        x_max = x2;
    }
    if (x3 > x_max) {
        x_max = x3;
    }
    return x_max;
}

Program 9:Finding maximum value in C