• 締切済み

構造化プログラムについて

構造化プログラムは何か教えてください・またなぜこの 技術が使われるようになったかも知りたいです. お願いします。

みんなの回答

noname#208507
noname#208507
回答No.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)。

  • kokiriko
  • ベストアンサー率22% (121/535)
回答No.3

プログラムをいつも最初から作っていると大変ですよね。 それにプログラムの中には、いくつも同じようなロジックが出てくるのだから 他のプログラムでも使えるロジックを部品として考えれば、新しくプログラム を作るとき、前に作っておいておいた部品をそのまま使えると、開発の効率が 良くなりますよね。 プログラムによっては、部品とほんの少しの修正だけで出来るようになります。 また、部品を共同で使えるようにすると、プログラマの癖が無くなり誰が見て も判り易い物になります。 構造化はプログラムの作り方をブロック単位で考えて、実行の順序をグループ (階層化)として扱う方法です。 そのような作り方をすると、ひとつの大きなプログラムを数人のチームで作る ことが出来るようになります。

powerkido
質問者

お礼

私の質問に答えてくださって本当にありがとうございます. いいお世話になりましだ.

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

E.W.ダイクストラが提唱したプログラミングのアプローチです。 詳細はサイエンス社「構造化プログラミング(ISBN19-0276-6)」E.W.ダイクストラ、C.A.R.ホーア、O.-J.ダール著を読んでください。 一般にいわれる“構造化プログラミング”は機能設計以降のフェーズに特化して語られることが多いのですが、ダイクストラの提唱したものはもっと広い範囲を含んでいます。

  • inoue64
  • ベストアンサー率29% (334/1115)
回答No.1

こういうことだと思います。 (構造化プログラミング)

参考URL:
http://www.wdic.org/?word=%B9%BD%C2%A4%B2%BD%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0+%3ATECH
powerkido
質問者

お礼

わたしの質問に答えてくださって本当にありがとうございます. いい勉強になりましだ.

関連するQ&A