3秒でわかる
処理の流れを決まった記号と矢印で表した図。分岐や繰り返しの考え漏れを、コードを書き始める前に目で見つけるために使われます。
もう少し詳しく
どういうものか
フローチャートは、処理の順序を図記号でつないで表した図です。記号の意味は JIS で決まっており、長円が開始と終了、長方形が処理、ひし形が判断、平行四辺形が入出力を表します。矢印は流れの向きです。
構造は 3 つの組み合わせで書けます。順次、選択、繰り返しの 3 つで、どんな処理もこの組み合わせで表現できるという考え方が構造化プログラミングです。
なぜ必要か
書く前に穴が見つかります。ひし形を置くと、必ず「はい」と「いいえ」の両方の行き先を書く必要があるため、条件に当てはまらなかった場合の処理を忘れているとその場で気付きます。
もうひとつは、プログラムを書けない人と話せる点です。業務の担当者に仕様を確認するとき、コードを見せても判断できませんが、フローチャートなら「この場合は例外的に承認が要る」といった指摘が返ってきます。
具体例
割引を判定する処理を図にします。
( 開始 )
|
[ 会員種別を読む ]
|
< 有料会員か >
はい / \ いいえ
/ \
[ 20%引き ] < 3回以上購入か >
\ はい / \ いいえ
\ / \
\ [ 5%引き ] [ 割引なし ]
\____|_________/
|
[ 金額を表示 ]
|
( 終了 )同じ処理をコードにすると次のようになります。
def discount_rate(member_type, purchase_count):
if member_type == "paid":
return 0.20
if purchase_count >= 3:
return 0.05
return 0.0図のひし形が if、矢印の合流が return の後の共通処理に対応します。
つまずきやすいところ
判断の分岐に片方しか矢印を書かない誤りが多いです。ひし形からは必ず 2 本以上出ます。
矢印が上へ戻ると繰り返しになりますが、戻る位置を間違えると条件の更新が飛ばされ、終わらない繰り返しになります。図の段階で、繰り返しのたびに何が変わるのかを書き添えると防げます。
規模の見極めも大切です。数十個の記号を超えると、図のほうがコードより読みにくくなります。全体を 1 枚に描かず、処理を分けて 1 枚あたり 10 個程度に収めます。
覚え方
四角は「やる」、ひし形は「決める」。この 2 つだけで大半の図は読めます。
