• ベストアンサー

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

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

質問者が選んだベストアンサー

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

わお!思いっきり間違ってました。 『構造化プログラミング言語』ですね。 構造化プログラミング言語の最低条件は ・基本3構造を記述可能な制御構文をもっている ・サブルーチン、関数などの副プログラムをサポートしている ・分割コンパイルをサポートしている (インタプリタの場合は「外部ソースにある副プログラムの呼び出しが可能」) となります。 制御構文に関しては「ブロックIF文」と「後置条件ループ」の存在が分岐点でしょう。 「多岐選択分岐(switchなど)」は必須条件ではありませんがサポートされていることが多いようです。 一般的には ・他言語で記述された副プログラムを呼び出すことができる ・レコード型のデータ構造の表現ができる が加わります。 私的には ・再利用可能な副プログラムが記述できる ・再配置可能な副プログラムが記述できる の2点を(勝手に)加えています。 機種/OSに影響を受けますが ・再入可能な副プログラムが記述できる ・再帰呼び出しを利用できる 以上に加えてこの2点が満足されていればアルゴリズムの記述に困ることはほとんどありません。 現在パソコンで広く利用されている高級言語はほとんど当てはまります。 全てのオブジェクト指向プログラミング言語も構造化プログラミング言語の用件を満たしています。

nrktsm
質問者

お礼

とても丁寧に、どうもありがとうございました。とても参考になりました。

その他の回答 (4)

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.5

補足: > 昔のBasicなどは違いますが,最近の言語は基本的には構造化プログラミング言語と言っていいと思います. > この一歩先の概念が「オブジェクト指向」「オブジェクト指向言語」だと思います.「クラス」の概念の導入ですね.「Java」「C++」などはこれですね. 第1文で,「Java」「C++」も構造化プログラミング言語の一種(2種?)であることを(暗に)示し,第2文で,これらの言語はオブジェクト指向の概念を新たに導入している,ということを付け加えたつもりでした.ちょっと言葉がたりなかったかもしれません. 蛇足ですが,念のため補足しておきます.

nrktsm
質問者

お礼

どうもありがとうございました。

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

いわゆる『構造化プログラミング』は ・基本3構造によるプログラムロジックの記述  (順次、条件分岐、繰り返し) ・サブルーチン、関数など副プログラムの使用  (プログラム構造の階層化) ・データ構造主導のアルゴリズム選択  (配列ならループ、リストなら再帰など) といわれています。 昔、汎用系ソフト開発技術者の間で流行った『SPコーディング(構造化プログラミングコーディング)』では ・goto文は極力避ける ・プログラム制御構造にあわせた時下げを行う などの"比較的どうでもいい”条文が追加されていました。 構造化プログラミングの提唱者であるE.W.ダイクストラは「構造化プログラミングはコンピュータの機種選定、データ構造設計、プログラム構造設計、アルゴリズム選択、コード実装の全般で行われなければならない」と言っています。 真の構造化プログラミングを学ぶなら『構造化プログラミング』(サイエンス社、ダイクストラほか)を読んでみてください。 また、データ構造主導のアルゴリズム選択に関しては『アルゴリズム+データ構造=プログラム』(サイエンス社、ヴィルト)が良いでしょう。 アルゴリズム全体を見回した場合『Art of Computingシリーズ』(サイエンス社、クヌース)が最適です。 余談ですが、オブジェクト指向プログラミングパラダイムは構造化プログラミングに反するものではありません。 "いわゆる構造化プログラミング”(および、構造化プログラミングの説明で用いられる多くのアルゴリズム)が手続き型プログラミングパラダイムを前提とするためにオブジェクト指向における応用が難しいと思われがちですが、"真の意味での構造化プログラミング”はオブジェクト指向プログラミングにおいても大いに参考になります。

nrktsm
質問者

お礼

丁寧に、ありがとうございました。

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.2

専門家ではないので多少違っているかもしれませんが, for 文, while文, switch case 文, block if 文, 関数定義などを利用して, アルゴリズムの構造を明確にするプログラミング手法だと認識しています. if, goto だけでも基本的に同等のことはできるはずですが,何をやっているのかよくわからないプログラムになりがちです.そのようなソースコードは,スパゲッティ―のようだと形容された時代もありましたが,もう死語かもしれません. 昔のBasicなどは違いますが,最近の言語は基本的には構造化プログラミング言語と言っていいと思います. この一歩先の概念が「オブジェクト指向」「オブジェクト指向言語」だと思います.「クラス」の概念の導入ですね.「Java」「C++」などはこれですね.

nrktsm
質問者

お礼

どうもありがとうございます。

  • kanten
  • ベストアンサー率27% (479/1747)
回答No.1

構造化プログラミングが出来るプログラム言語のことです。 代表的なものにC や C++、Pascal があります。

参考URL:
http://visio.ge.niigata-u.ac.jp/tbasic/Intro2Basic/Structure.html
nrktsm
質問者

お礼

簡潔に、どうもありがとうございました。 さっそく調べてみます。

関連するQ&A