- 締切済み
「構造化プログラミングの基本的な考え方について述べなさい.また,構造化
「構造化プログラミングの基本的な考え方について述べなさい.また,構造化プログラ ミングと関連付けて基本制御構造について説明しなさい。」という問題があるのですが、調べてると構造化プログラミングと基本制御構造の区別があまりつきにくくて説明がうまくできません。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
構造化プログラミングは、プログラムの正当性を証明できるように、あるいは後から証明しやすいように心がけてプログラミングするという考え方です。 構造化プログラミングを提唱したE.W.ダイクストラは「テストはプログラムにバグがあることは示せるが、バグが無いことは証明できない」と述べています(The Humble Programmer, 1972)。 ダイクストラは、無秩序なgoto文の利用が正当性の証明を難しくしバグの発見や修正を困難にすることを見出して、プログラミング言語からgoto文を排除した方が良いと述べました(Go To Statement Considerd Harmlful, 1968)。当時goto文の利用は一般的だったので、これは大きな論争を引き起こしました。 この頃、プログラムの正当性を証明する最も有力な手法の一つがC.A.R.ホーアが提案した公理に基づく証明方法でした。ホーアは、順次(;)・選択(if)・反復(while)の3つの基本制御構造について推論規則を定義し、記号論理に基づいてプログラムにバグが存在しないことを証明できることを示しました(An Axiomatic Basis for Computer Programming, 1969)。これはホーア論理として知られています。 自身が引き起こした論争に応えてダイクストラは、推論規則の定義された制御構造を用い、大きな処理から小さな処理へと徐々に問題を小さく分解しながら証明しやすい構造のプログラムを作るという、段階的詳細化(stepwise refinement)の考えを示しました。すなわちこれが構造化プログラミングです(Structured Programming, 1972, E.W.ダイクストラ, C.A.R.ホーア, O.J.ダール)。 その後、ホーア論理は形式手法(formal method)の研究の流れに受け継がれていきました。一方、構造化プログラミングの注目を受けて、段階的詳細化や基本制御構造のアイディアは設計や分析の工程にも適用され、構造化設計や構造化分析として広まりました。良く知られている構造化○○の「分かりやすいプログラムを作る」という考え方は後者から来たものです。 C.BohnとG.Jacopiniはダイクストラが論文で引用したので引き合いに出されますが、3つの制御構造だけでもプログラムは書けるという言及が含まれるだけで、構造化プログラミング自身とはさほど関係が深くありません。BohnとJacopiniの論文のタイトルも3つではなく2つです(Flow Diagrams, Turing Machines and Languaes with Only Two Formation Rules, 1966)。
- gyrocompas
- ベストアンサー率23% (24/104)
「ストラクチャード定理」というものが、ござんす。 この定理の提唱者は Bohm と Jacopini という名前の人です (あたしは、この人達はよく知らない) 定理とは いかなるアルゴリズムでも 3つの制御構造 「順次」「選択」「繰り返し」 のみで、組み立てることができる。 と言うものです。 「順次」とは機能(命令群)を現れた順に実行する型 「選択」とはある条件によって異なる二つの機能(命令群)のうちどちらかを選択する いわゆる IF-THEN-ELSE 「繰り返し」とは、条件が真であるかぎりある機能(命令群)を繰り返す DO-WHILE型と言われています。 この定理こそが 「構造化プログラミングの基本的な考え方」 だと思いますが。
- alice_44
- ベストアンサー率44% (2109/4759)
カテ違い: ここは数学カテだにょん。 「構造化プログラミング」というのは、一時期流行した、内容の無い言葉で、 スッキリ見通しのよいプログラムを書こうよ…というムーブメントの標語。 「基本制御構造」を使い、goto とラベルは廃止して、変数を局所化するよう 努めたプログラムや、そのようなスタイルをサポートするプログラム言語が 上等であるとされ、初期には研究に予算が付いたり、後日は啓蒙書が売れたり、 商業雑誌のページが埋まったりした。 その後、流行は「オブジェクト指向」や「デザインパターン」に交替したが、 変わったのは標語と使用するプログラム言語だけで、言っている内容には さしたる違いは無い。
- Tacosan
- ベストアンサー率23% (3656/15482)
とりあえず関連は無視して, 「構造化プログラミング」と「基本制御構造」のそれぞれを別個に説明できますか?
補足
構造化プログラミングはなんとか。