概用
処理の流れを、トップダウン方式(ウォーターフォール)で主に関数や式を使ったフローで書き、実装は末端の関数でするプログラミングスタイル。やってみると書きやすく、処理の流れもわかりやすい。
Hello Worldで具体例
# flow
def HellowWorld():
str = SetStr()
PrintStr(str)
# end
def SetStr():
return "Hello World!"
# end
def PrintStr(str):
print(str)
#flowがフローで、#endが実装。
ここまで簡単なプログラムだと冗長に見えるが、問題(処理)が分解され、アルゴリズムの概要が明確。正しいかどうかの検討も容易。
就活で例えると
def 就活(prof)
履歴書 = 履歴書作成(prof)
結果 = 履歴書投函(履歴書)
if 結果 == 合格
最終結果 = 面接()
else
最終結果 = 不合格
return 最終結果
def 履歴書作成(prof)
#実装を書きます
def 離席書投函(履歴書)
#実装を書きます
def 面接()
#実装を書きます
という感じ。流れが分かりやすいですね。
抽象的な構造の例
# flow
def flow(x):
x = f(x)
y = g(y)
r = h(z)
return r
# flow
def f(x)
y = r(x)
z = s(y)
return z
# end
def r(x)
# implementation
# end
def s(x)
# implementation
# end
def g(x)
# implementation
# end
def h(x)
# implementation
flowとendによる入れ子構造ですが、データ受け渡し含めてそのようでなくてもよく、フローにifやfor、その他処理を含めたり、プログラムの一部に使うなど、好きに改造してOKです。
終わりに
問題を分解することにより、アルゴリズムの複雑さが低減される、書き易い、などのメリットがあります。
デメリットは、フローの制作ができるかどうかや、関数が多くなること、プログラムが縦に長くなることなど。
見やすくするには、関数をネストするのが良いですが、python含めて、理想的にサポートされていないこともあります(pythonはネストされた関数を先に書かなくてはならないので、例の書き方は間違いなのですが、説明のため)。
気に入ったら試してみてください(−ω−)アリガトウゴザイマシタ