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

このQ&Aに関連する最新のQ&A

A 回答 (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)。
    • good
    • 0

プログラムをいつも最初から作っていると大変ですよね。


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

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

お礼日時:2001/07/20 22:48

E.W.ダイクストラが提唱したプログラミングのアプローチです。


詳細はサイエンス社「構造化プログラミング(ISBN19-0276-6)」E.W.ダイクストラ、C.A.R.ホーア、O.-J.ダール著を読んでください。

一般にいわれる“構造化プログラミング”は機能設計以降のフェーズに特化して語られることが多いのですが、ダイクストラの提唱したものはもっと広い範囲を含んでいます。
    • good
    • 0

こういうことだと思います。


(構造化プログラミング)

参考URL:http://www.wdic.org/?word=%B9%BD%C2%A4%B2%BD%A5% …
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/20 22:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q最適化に必要な、プログラム構造解析の機能

最適化のためには、プログラム構造解析がどのような機能を持っている必要がありますか?わかる方教えて下さい!お願いします。

Aベストアンサー

回答が載りませんね。他にしておられる数問も含め、大学授業での課題・テーマの丸投げって感じがするからですかね。総論的(特定の言語から離れた)な難しい問題でもあってよくわかりませんが。WEB照会すると
(1)コーディングレベルの最適化
(2)コンパイラレベルの最適化
(3)ソフト設計レベル・アルゴリズムレベルの最適化
(4)システム設計レベル
(5)最適化そのものの理論研究
並列化無し、並列化ありの2系列があり、
の議論が混ざって出てきます。どのあたりのことを問題にしていますか。上記の「座標軸」を頭に入れて、「最適化 プログラム」などでWEB照会し、整理して見られては。
http://www.geocities.jp/ago1960/kaihatuunnyou.html
など参考になればと思って、挙げてみます。読んでヒントがないか考えて見てください。
http://www.math.cit.nihon-u.ac.jp/~nekoma/htmls/Manual/PTPPXXXX.HTM
http://www1.plala.or.jp/Teraran/StudyRoom/prog004.html
http://www.ueda.info.waseda.ac.jp/~n-kato/slides/seq-pro0110/seqpro.html

回答が載りませんね。他にしておられる数問も含め、大学授業での課題・テーマの丸投げって感じがするからですかね。総論的(特定の言語から離れた)な難しい問題でもあってよくわかりませんが。WEB照会すると
(1)コーディングレベルの最適化
(2)コンパイラレベルの最適化
(3)ソフト設計レベル・アルゴリズムレベルの最適化
(4)システム設計レベル
(5)最適化そのものの理論研究
並列化無し、並列化ありの2系列があり、
の議論が混ざって出てきます。どのあたりのことを問題にしています...続きを読む

Q構造化プログラミング…

お世話になります。

構造化プログラミング記述用のチャートに
「TSチャート」というものがあるようなのですが…

この「TS」は何の略なのでしょうか?
こんな時間までネットで調べたのですが…
見つかりません。

ご存知の方が居られましたら、
ご教授いただきたく存じます。

Aベストアンサー

思考構造化チャート(Thought Structuring Charts,TSチャート)

参考URL:http://books.rakuten.co.jp/RBOOKS/NS/CSfLastGenGoodsPage_001.jsp?GOODS_NO=447321&rbx=X

Q構造化プログラミングについて、追加です。

構造化プログラミング言語とは、いったい何でしょうか??
先ほどは言葉足らずで申し訳ありません。

Aベストアンサー

わお!思いっきり間違ってました。
『構造化プログラミング言語』ですね。

構造化プログラミング言語の最低条件は
・基本3構造を記述可能な制御構文をもっている
・サブルーチン、関数などの副プログラムをサポートしている
・分割コンパイルをサポートしている
(インタプリタの場合は「外部ソースにある副プログラムの呼び出しが可能」)
となります。
制御構文に関しては「ブロックIF文」と「後置条件ループ」の存在が分岐点でしょう。
「多岐選択分岐(switchなど)」は必須条件ではありませんがサポートされていることが多いようです。

一般的には
・他言語で記述された副プログラムを呼び出すことができる
・レコード型のデータ構造の表現ができる
が加わります。

私的には
・再利用可能な副プログラムが記述できる
・再配置可能な副プログラムが記述できる
の2点を(勝手に)加えています。

機種/OSに影響を受けますが
・再入可能な副プログラムが記述できる
・再帰呼び出しを利用できる
以上に加えてこの2点が満足されていればアルゴリズムの記述に困ることはほとんどありません。

現在パソコンで広く利用されている高級言語はほとんど当てはまります。
全てのオブジェクト指向プログラミング言語も構造化プログラミング言語の用件を満たしています。

わお!思いっきり間違ってました。
『構造化プログラミング言語』ですね。

構造化プログラミング言語の最低条件は
・基本3構造を記述可能な制御構文をもっている
・サブルーチン、関数などの副プログラムをサポートしている
・分割コンパイルをサポートしている
(インタプリタの場合は「外部ソースにある副プログラムの呼び出しが可能」)
となります。
制御構文に関しては「ブロックIF文」と「後置条件ループ」の存在が分岐点でしょう。
「多岐選択分岐(switchなど)」は必須条件ではありませんがサポ...続きを読む

Qwebに関連するプログラミング技術は何か?

情報系の大学に通う一年生です。
将来はwebデザイナーを目指しています。

webサイトに関連しているもの
と言えば、CSSやHTMLといった基本的な物を
思い浮かべます。
そして、プログラム関係のPHPやSQL、java、C言語、PHPとたくさんあります。
これらのプログラム技術はwebサイトにどのように使われ、
どのように役立っているんですか?
また、webサイトに役立っている・関係しているプログラムはいくつ
あるのですか?

最初にwebデザイナーを目指していると言ったのですが、
どの程度を勉強すればいいのでしょうか。
ドリームウィーバーを使えるようになったりとか、
フラッシュを作れるとか、タグを打てるとか
その程度でなれるものとは思っていません。
もっとも今までタグ専門で、HP制作ソフトの
経験もまだ皆無に等しいのですが。
プログラムがどんなふうにwebサイトに使われているのか
わかれば、勉強する範囲がわかるかもしれないと、
質問しました。

Aベストアンサー

HTML、CSSだけで構成されたサイトは静的なサイト(変化しない)サイトです。PHPやJAVA、Cで作られたサイトは動的なサイト(変化するサイト)です。
掲示板やこのokwave系質問掲示板もそうですが、書き込んだり出来るサイトはデータベースとプログラム言語で動的にHTMLを生成しています。
アマゾンや楽天、ヤフーオークションなども動的に形成されるサイトですね。

SQLはデータベースの生成や検索に関わる言語です。
PHP、Perl、JAVA、C言語他はプログラミング言語(どんどん増えているので数を聞くのは無意味かも)。使用者の操作を受けてSQLを使ってデータベースにアクセスして情報を取り出しHTMLに整形して使用者に向けて表示するのが言語の役目です。

WEBデザイナーは経験がありませんので他の方にお任せします。

Q私たちの日常の行動は構造化プログラミング可能なんですか?

もしそうでない例があるんならばそれも教えてください

Aベストアンサー

おもしろい観点ですね。

実は仕事上、ちょっと調べたことがありまして・・・
(日常生活じゃないですが・・)

前の方の例でほぼ、言い表されているんですが、

「並行処理」と「イベント駆動」は、構造化の守備範囲外のようです。

並行処理
>音楽を聴きながら勉強する
さらに、お菓子を食べながらだったりして・・(^^)

イベント駆動
>突発的な衝動性やひらめき
プログラムで言うところの「割り込み処理」ですね。

ただ、「できないから・・」といって、ほうっておけない分野もあって、工業用ロボットなどで利用されるPLCという分類のコンピュータでは、さまざまな折衷案、解決策が実践されています。

下記URLは、その一例で、SFCという「イベント駆動」「並行処理」「構造化プログラム」を共存させるツール(手法?)です。(妥協・両立という説もありますが)

##3の方の「忘れるということをプログラミングできるか」というのは、かなり興味深いテーマですね。

では。

参考URL:http://www.yokogawa.co.jp/IA/fam3/pop.htm

おもしろい観点ですね。

実は仕事上、ちょっと調べたことがありまして・・・
(日常生活じゃないですが・・)

前の方の例でほぼ、言い表されているんですが、

「並行処理」と「イベント駆動」は、構造化の守備範囲外のようです。

並行処理
>音楽を聴きながら勉強する
さらに、お菓子を食べながらだったりして・・(^^)

イベント駆動
>突発的な衝動性やひらめき
プログラムで言うところの「割り込み処理」ですね。

ただ、「できないから・・」といって、ほうっておけない分野もあって...続きを読む


人気Q&Aランキング

おすすめ情報