構造化プログラミング



構造化プログラミングとは

プログラム上の手続きをいくつかの単位に分け、メインとなる処理では大まかな処理を記述し、サブルーチンによって細部を記述していく方法です。

大規模化したプログラムを効率よく記述し、設計上のミスが起こりづらいようにするための方法論として、構造化定理をもとにエドガー・ダイクストラらによって提唱されました。

典型的な構造化言語は、CやPascalといったいわゆるALGOL系の言語です。


構造化定理

構造化定理とは、1つの入り口と1つの出口を持つプログラムは、「順次・反復・分岐」の3つの基本的な論理構造によって記述できます。


構造化の要素

構造化定理の論理構造を元にして、サブルーチンに機能を抽象化します。

プログラムのモジュール性を高め、設計保守が容易になるように構造化します。


・順次(順接、順構造)

プログラムの記述順に、逐次処理(コンピュータの動作経過)を行なっていくプログラム構造。

・反復

一定の条件が満たされている間処理を繰り返す。

・分岐

ある条件が成立するなら処理Aを、そうでなければ処理Bを行なう。



非構造化プログラミングとは

全てのコードが一つの連続したブロックに含まれているプログラミングのことをいいます。

goto文のような実行フロー文に依存し、指定されたコード部分へ飛ぶことで処理を行います。


理論上、プログラミング言語は条件文とgoto文の組合せでプログラム構造が実装可能であり、それ以外の制御構造は必要ないといえます。

しかし、ソースコードは可読性が低くデバッグすることが難しくなります。

そのため、何らかの構造をサポートするプログラミング言語では使われない手法です。


非構造化プログラミング言語

非構造化プログラミングはまだMS-DOSのバッチファイルのようなスクリプト言語やBASICやFORTRANのような古いプログラミング言語で使われています。


アセンブリ言語はほとんどが非構造化言語です。

基本的な機械語は、基本的な「サブルーチンジャンプ; Jump to Subroutine」命令や、関数の始めと終わりを示すなどのコンパイラなどが必要とする記述だけであるためです。


スパゲティプログラム

実行順序がスパゲッティのように複雑に絡まり、整理されていないプログラムのことをいいます。


グローバル変数の濫用、一貫性のない記述により可読性が悪くなります。

プログラムの実行順序を追跡することを困難にするため、バグが発生してもなかなか原因を特定できなくなります。


関連

手続き型プログラミング



スポンサード リンク