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

演算データ、処理の流れ、装置などを表現するために記号を用いて表した図表のこと。 フローチャートを用いることによりプログラムの流れや使用する装置などが正確に把握でき、 第三者にも伝えることが可能となる。

フローチャートが描けるということは与えられた問題を分析し、 そして理解できたということにつながる。 これは優秀なプログラマになるための第一歩である。

フローチャートの例

変数xを入力し、その絶対値を表示するプログラムのフローチャートである。

フローチャート

フローチャート例の図 PNG 1KB

プログラム

#include<stdio.h>

int main(void)
{
    int x;

    printf("Input x ->");
    scanf("%d", &x);
    if(x < 0)
        x = -x;
    printf("|x| = %d\n",x);

    return 0;
}

フローチャート記号

端子 端子。プログラムの流れの開始、終了などを表すほか、外部環境への出口、外部環境からの入口を表す
処理 処理。任意の種類の処理機能を表す。演算や演算群の実行を表す。
判断 判断。1つの入口といくつかの択一的な出口を持ち、定義された条件の評価に従って出口を選ぶ判断機能を示す。
線、矢印 線、矢印。データや制御の流れを示す。流れの向きを明示する必要があるときは、矢印をつけなければならない。
定義済み処理 定義済み処理。関数、サブルーチンなど別の場所で定義された演算・命令群からなる処理を表す。
破線 破線。注釈の対象範囲を囲む。
結合子 結合子。同じフローチャート中の他の部分への出口、または他の部分からの入口を表したり、線を中断し他の場所に続けたりするのに用いる。
手操作入力 手操作入力。手で操作して入力するあらゆる種類の媒体上のデータを表す。オンライン鍵盤、スイッチ、ライトペン、バーコードなど。
ループ ループ。2つの部分からなり、ループの始めと終わりを表す。記号の部分は同じ名前を持つ。ループの始端や終端記号の中に初期値、増分(減分)、終了条件を記入する。
定義 定義、準備。変数の宣言や手続き・関数の定義を示す。また初期設定の準備なども行う。
表示 表示。表示装置の画面など、人が利用するあらゆる表示媒体およびそのデータ。

switch〜case文

switch〜case文のフローチャートの例を以下に示す。

switch〜case文

label=aの場合は処理1を、label=b,label=c,label=dの場合は処理2を、defaultの場合は処理3を実行する。

前置判定と後置判定

前置判定

前置判定とはwhile文やfor文を指す。フローチャートで表すと次のようになる。

前置判定

条件が「真」の間処理2を続け(ループ)、条件が「偽」になるとループから抜ける。条件次第では1度も処理2をしない場合もある。

後置判定

後置判定とはdo〜while文を指す。フローチャートで表すと次のようになる。

後置判定

処理2の後にループ条件を判定する。「真」ならば再び処理2を続け、「偽」ならばループから抜け出す。前置判定とは違い、どのような条件でも必ず1度は処理2を行う。

二重ループ

繰返し文の中にもう1つ繰返し文を入れることを「二重ループ」と言う。フローチャートで表すと次のようになる。

二重ループ

無限ループ

半永久的に繰返す処理を「無限ループ」と言う。

無限ループ

無限ループを終了するための「条件」を用意し、その条件が真のとき「break」で抜ける。

if〜else文

次のプログラムをフローチャートで表すと下図のようになる。(プログラムの一部分だけを抜き出した)

    if(条件1){
        処理A;
    }
    else if(条件2){
        処理B;
    }
    else if(条件3){
        処理C;
    }
    else{
        処理D;
    }

if〜else文

if〜else文とswitch〜case文を混同しないように。

関数

下のフローチャートはmain関数の中で『関数A』を呼び出した図である。

関数

プログラマが定義した関数をフローチャートに描く場合、main関数のフローチャートでは関数の名前だけをいれ、その関数のフローチャートは別に描く。