C言語のきほん|アルゴリズムの表現方法

いきなりコードが難しいなら、まず図で考えよう!流れ図で“手順”を見える化すると、アルゴリズムがスッと書けるよ。

アルゴリズムは「問題を解く手順書」だけど、手順が長くなると、頭の中だけで整理するのがしんどくなってきます。特にソートみたいに「比較」「交換」「繰り返し」が絡む手順は、途中で迷子になりやすいんですよね。

そんなときに助けになるのが、アルゴリズムを図や文章で表現する方法です。
いきなりC言語のコードにせず、

  • 手順を箇条書きで並べる
  • 表で整理する
  • 図で流れを描く

みたいに「先に見える形」にすると、考え方がスッキリします。

この記事では、とくに初学者に役立つ 流れ図(フローチャート) を中心に、アルゴリズムの表現方法を解説します。

なぜ“表現方法”が必要なの?

アルゴリズムにはたいてい次の要素が入ってきます。

よく出る操作
順番どおりに処理する入力 → 計算 → 表示
条件で分けるもし点数が60以上なら合格
繰り返す5回繰り返す、条件を満たすまで繰り返す

この3つが組み合わさると、口で説明するのは意外と大変です。
だからこそ、図や決まったルールで表現して、他人にも自分にも伝わりやすくします。

流れ図(フローチャート)とは

流れ図(フローチャート)は、処理の流れを図にしたものです。
ざっくり言うと「上から下へ、矢印で手順をつないだ図」です。

流れ図が役立つ場面

目的どう嬉しい?
処理手順を整理する何をどの順番でやるかが見える
他人に説明する図を見せれば一発で伝わりやすい
コードを書く準備if や for の形が自然に決まってくる

「コードを書く前の下書き」として使うと、とても強いです。

流れ図の主な記号(覚えるのはまず少数でOK)

流れ図にはJISで決まった記号があります。全部を暗記しなくても大丈夫で、最初は頻出だけ押さえるのがおすすめです。

最初に覚える5つ(これだけでだいたい描ける)

記号の名前役割
端子開始・終了開始 / 終了
処理計算や代入合計を計算
判断条件分岐合計が100以上?
データ入力やデータ数値を入力
表示画面出力結果を表示

他にも「定義済み処理」「ループ端」などがありますが、まずはこの5つで十分に練習できます。

流れ図で表すと何が見える?

ここではソートじゃなく、もっとシンプルな例に置き換えて「図にする意味」を体感します。
例として「2つの値を入力して、大きい方を表示する」を考えます。

手順を文章で書く(まずはこれでOK)

  1. a と b を入力する
  2. a が b より大きいか判定する
  3. 大きい方を表示する
  4. 終了する

この時点でもアルゴリズムですが、流れ図にすると分岐がよりはっきりします。

流れ図っぽい表現(文字で表す)

こうしておくと、C言語で書くときに if が必要だな、と自然に見えてきます。

流れ図をC言語に落とす(別のシンプル例に変更)

上の例を、そのままC言語にします。

ファイル名:7_3_1.c

#include <stdio.h>

int main(void)
{
    int a, b;

    printf("整数を2つ入力してください。\n");
    printf("1つ目 > ");
    scanf("%d", &a);
    printf("2つ目 > ");
    scanf("%d", &b);

    /* 判断:aがbより大きいかどうか */
    if (a > b) {
        printf("大きい方は%dです。\n", a);
    } else {
        printf("大きい方は%dです。\n", b);
    }

    printf("メッセージ: 流れ図で分岐を整理すると、ifが書きやすくなるよ。\n");
    return 0;
}

「判断」が if に対応しているのが分かれば、流れ図を描く価値が一気に見えてきます。

流れ図を作るときの注意点

複雑にしすぎない

流れ図は自由に描ける分、手順を全部盛りにすると図がぐちゃぐちゃになりがちです。
大きくなりそうなら、「定義済み処理」っぽくまとめて、処理を分割する意識が大切です。

記号の使い方を統一する

同じ意味の処理は同じ記号で書く、と決めると読みやすさが上がります。

上から下が基本

流れ図は基本的に上から下へ流します。逆向きに戻るときは、矢印をはっきり描きます。とくにループは「どこに戻るか」を迷わせないのがコツです。

開発現場では流れ図は少ないけど、学習には強い

実際の現場だと、流れ図は大規模になるほど読みづらくなりやすく、あまり使われないことが多いです。代わりに、モジュール設計や構造化された設計図のほうが向いています。

でも、初学者が

  • 順次
  • 分岐
  • 繰り返し

を直感で掴むには、流れ図はすごく強いです。
紙でもメモでもいいので、まずは「手順を図にするクセ」を付けると、アルゴリズムが書けるスピードが上がっていきます。