C++言語解説:1.構造化プログラミング
2002-06-30 |
[C++ Index Top] [Prev] [Next] |
[概要] 構造化プログラミングについて説明します。従来で言うところの「C言語」学習に 相当していますが、説明する文法はC++に準拠します。 ●構造化プログラミングとは ◆プログラミングについて最初に考えること ・プログラミングについて最初に考えることは「言語」ではありません。プログラム の「設計手法」が土台になります。 ・例えばC++は「複雑で大規模」な論理を分析/設計するために考え出された「オブジ ェクト指向プログラミング」を実践するために作られた言語です。 ・「複雑で大規模」とはどの程度か? それは「構造化プログラミング」では開発と保 守がつらいと言われる分量(一般的に25,000〜100,000行)です。この管理限界は1970 年代後半から叫ばれていた問題でした。 ・「C++を学ぶ」というのは「オブジェクト指向プログラミングを学ぶ」ということな のですが、何故これが必要かを理解するには、その前段階となる「構造化プログラ ミング」を知っている必要があります。 ◆ダイクストラのgoto有害論 ・「構造化プログラミング(Structure Programming)」の思想は、オランダの学者であ るダイクストラ(Edsger Wybe Dijkstra)が、1968年に論文 Go To Statement Considered Harmful で提唱したものです。 ・ここでは「プログラムは連接(successive)、選択(conditional)、反復(repetition) で記述できる」という考え方を示しています。gotoは結果的に排除される(*1)と言 っています。まともに設計されたプログラムならば、このように記述できるし、あ とで変更が入っても保守性が高くなります。 ・「まともな設計」とは、分割統治(divide and conquer)の考え方が基本となってい ます。つまり全体の処理を小さな単位に分割し、複雑さを軽減させていくというも のです。 ・この小さな単位を構成する際「処理の入口と出口は一つ」というのが構造化プログ ラミングのポイントであり、それを実現するために「連接、選択、反復」で論理を 構築していきます。 ・さて、構造化プログラミングをサポートする言語は何種類か存在しますが、最もメ ジャーなものは「C」です。そしてC++は構造化プログラミングという点においてCを 完全に包含します。 ・そこで第1編では、C/C++でほぼ共通(*2)となる、構造化プログラミングの観点から C++を学習していきたいと思います。 以上 (*1)現実的にはgotoも残っています。論理の外、つまり「例外」を処理する際にはgotoが 便利というケースもあるからです。 (*2)C++はオブジェクト指向への拡張機能を持つため、Cが従来持っていた部分でも若干異 なる表記があります。 [Revision Table] |Revision |Date |Comments |----------|-----------|----------------------------------------------------- |1.00 |2002-05-06 |初版 |1.01 |2002-05-12 |リンク,概要コメント追加 |1.02 |2002-05-18 |ファイル名変更 |1.03 |2002-06-30 |タイトル変更 [end] |
Copyright(C) 2002 Altmo
|
[C++ Index Top] [Prev] [Next] |