|
|
|
|
|
フローチャートの書き方(記号) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
フローチャートの記号は日本ではJIS規格(日本工業規格)で決められている。 |
順次構造 |
|
|
したがって好き勝手に記号を作ったりしてはいけない。 |
|
|
順次構造とはその名の通り、処理が上から下へ単純に並んでいる構造を言う。
最も単純な構造なので、手直しなども簡単である。順次構造の例を右に示した。 |
|
|
|
端子 |
フローチャートの始まり及び終わりを表す |
|
|
|
|
|
|
処理 |
計算、代入などの処理を表す |
|
|
|
|
判断 |
条件によって分岐する |
|
|
|
|
ループ |
繰り返しの始まりと終わり |
|
|
|
|
入力 |
キーボードからの入力 |
|
|
|
|
表示 |
ディスプレイへの表示 |
|
|
|
サブルーチン |
サブルーチン(モジュール) |
|
分岐構造 |
分岐構造とは、ある条件によって処理が別れる構造である。
条件は「yes」か「no」で表される物が多く単純であるが、
いくつかの条件を同時に満たしているとか、複数の条件のうち一つ以上を満たしているとか、
ある値が1だったら○○○、2だったら△△△、3だったら◇◇◇、
それ以外だったら×××、というような分岐もある。
ここで重要なことは、処理が別れても、後に合流することである。 |
|
|
|
書類 |
印刷する |
|
|
|
|
|
入出力 |
ファイルへの入出力 |
|
|
|
|
|
結合子 |
ページ内の結合 |
|
|
|
|
|
結合子 |
ページ外の結合 |
|
|
|
条件分岐は、分岐の仕方で次の3つに大別できます。 |
|
|
|
|
|
|
単一分岐 |
|
多重分岐
|
|
ケース(多方向分岐) |
|
|
単一分岐 |
処理を2つに分ける。もっとも単純な分岐 |
|
変数nが0なら処理1を、 |
nがm以上なら処理1を、 |
|
C言語での表記 |
|
|
多重分岐 |
単一分岐を複数組み合わせたもの。 |
|
0以外なら処理2を実行する |
未満なら処理2を実行する |
|
if(条件1){ |
|
3つ以上の異なった処理の中から、条件にあった処理を行うことを多方向分岐と言い、次のような書き方をする。なお、アセンブリ言語などこのようなアルゴリズムをサポートしていない言語もある。 |
|
|
多方向分岐、ケース |
複数の条件の中から当てはまる1つの処理を実行 |
|
|
|
if(条件2){ |
|
|
|
|
|
|
|
if(n==0){ |
if(n>=m){ |
|
処理3; |
|
|
|
|
|
|
|
処理1; |
処理1; |
|
} |
|
例) charaの内容が'A'だったらwに65を、'B'ならば66をそれ以外なら0を代入する。 |
|
|
|
|
|
} |
} |
|
else{ |
|
|
|
|
一般に条件とは2つの値の大小関係を比較することが多い。フローチャートでは、以下の記号を用いる。 |
|
|
else{ |
else{ |
|
処理2; |
|
|
|
|
|
|
|
処理2; |
処理2; |
|
} |
|
|
|
|
|
< |
小さい(未満、以上でない) |
|
} |
} |
|
} |
|
|
|
|
≦ |
以下(大きくない) |
|
|
|
else{ |
|
|
|
|
= |
等しい |
|
|
|
|
処理1; |
|
|
|
|
≧ |
以上(小さくない) |
|
|
} |
|
|
|
|
> |
大きい(超過、以下でない) |
|
|
|
|
|
|
|
≠ |
等しくない |
|
|
|
switch(chara){ |
|
|
<> |
等しくない |
|
|
case 'A' : w=65;
break; |
|
|
|
case 'B' : w=66;
break; |
|
|
|
default : w=0 ; break; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なお、C言語表記中の「break;」を忘れ、下のようなプログラムにすると、左のフローチャートになる。しかし、このようなフローチャートは悪い見本であり、正式なフローチャートではない。(正しく動かないという意味ではなく、このようなアルゴリズムがきれいなアルゴリズムではないという意味。) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch(chara){ |
|
|
|
|
case 'A' : w=65; |
|
|
|
case 'B' : w=66; |
|
|
|
default : w=0 ; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
charの内容が'A'であれば処理1を実行し、 |
|
|
|
それ以外ならば何もしない |
|
|
|
|
|
|
|
if(ch=='A'){ |
|
|
|
処理1; |
|
|
|
} |
|
|
|
else{ |
|
|
処理2; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|