neverjpのぶらり日記

コンピューター関連の記事とぶらりと出かけた先の写真など

C言語その2&構造化プログラミング

C言語:豊富な演算子やデータ型、制御構造を持ち、構造化プログラミングに適しています。また、特定のプラットフォームに依存した部分を言語から切り離しているため、移植性の高いプログラムを記述することができます。 もともとシステムの記述用に開発されたので、ハードウェア寄りの低水準な処理を記述することもできます。実際、UNIXC言語で記述されています。
構造化プログラミング:コンピュータプログラムを記述する際の基本的な技法の一つで、標準的な制御構造のみを使い、プログラム全体を段階的に細かな単位に分割して処理を記述していく手法です。1960年代後半にオランダの情報工学エドガー・ダイクストラ*1氏らによって提唱されました。現在広く普及しているプログラミング言語や開発手法のほとんどは、その基盤の一つとして構造化プログラミングによる記述を前提としています。 ダイクストラ氏は1967年に発表した「構造化プログラミング」*2という論文で、「一つの入口と一つの出口を持つプログラムは、順次・選択・反復の3つの論理構造によって記述できる」という「構造化定理」を証明しました。構造化プログラミングでは、処理の制御はこの3種類の構文のみを使います*3。前回の例で云うと、Printf文、scanf文が続く構造が順次、if文が選択、while文が反復です。また、プログラム全体を大まかな機能単位に分割し、その中をさらに細かい機能単位に分割していくことにより、記述内容を段階的に詳細化していく技法*4も同時に提唱しました。分割された機能単位は必ず一つの入口と一つの出口を持ち、単位の連結・組み合わせは必ず3つの基本構文のみを使って行ないます。この原則に従うことにより、大規模なプログラムを効率よく、少ないミスで設計・記述できるようになりました。 当時のプログラムは、低水準言語のジャンプ命令をそのままプログラミング言語に実装した「goto文」によって処理をプログラム中の別の場所に移す制御が多用されていたため、規模が大きくなるほど処理の流れを把握しにくくなり、生産性の低下や記述上のミスの温床となっていました*5。構造化プログラミングの普及によって状況は大きく改善し、現在でも構造化プログラミングはプログラムを記述する上での基本的な作法としてプログラマの間で広く共有されています。gotoに相当する構文自体を廃止したプログラミング言語も多くあります。
人気blogランキングへ←人気blogランキングに参加しています。よろしければ1票を!

*1:Edsger Wybe Dijkstra

*2:Structured Programming

*3:基本三構造

*4:ステップワイズリファイアメント

*5:スパゲッティコーディング