- 原点
- 特徴
- 構造化プログラミング理論
- 制御構造
- シーケンスまたは線形構造
- 決定構造または代替案
- 最初の質問でループまたは繰り返し構造
- プログラミング言語に依存しない
- 構造化プログラミングの例
- シーケンス
- 繰り返し
- 選択
- Visual Basicでの構造化プログラミング
- シーケンス
- 繰り返し
- 選択
- 利点
- より明確なプログラム
- わかりやすい
- 短所
- 同じコードが繰り返されました
- データ型を変更するのは面倒です
- 用途
- オブジェクトの取り扱い
- 参考文献
構造化プログラミングをよりよく考慮人間の思考の癖を取って、複雑さを管理するために、ソフトウェアの設計と建設の規定です。すべてのプログラムはアルゴリズムに基づいており、論理スキームで表すことができます。
これは、コンピュータ化されたプログラムの複雑さが増すことから生じました。これは、より長く安全に動作するプログラムを作成できる新しい技術を生み出した新しいプログラミングスキームになっています。
構造化プログラミングにおける決定構造とシーケンス構造。出典:I.hidekazu CC BY-SA(httpscreativecommons.orglicensesby-sa4.0)
コンピュータ化されたデータ処理の急速な発展のおかげで、1960年代後半にますます複雑な問題を解決することが可能になりました。ただし、これらのプログラムを理解、デバッグ、および変更すると、プログラムが信頼できなくなる問題が発生しました。
これらの問題のために作成された大規模なコンピュータープログラムは、ソースコードが非常に長く構造化されていないため、自分の作者であっても、いくつかのロジックを使用してアクセスおよびナビゲートするのが非常に複雑になりました。
原点
プログラマーは、プログラミング言語で「goto」コマンドを使用して条件付き分岐を実行しました。これにより、多くの場合、読みやすさにつながり、論理コンテキストが保持されませんでした。
そのソフトウェア危機では、より洗練されたプログラムを可能にする一般的で規律ある方法論を体系的に開発できるかどうかが検討され始めました。このアプローチへの対応として、構造化プログラミング手法が生まれました。
1968年、ダイクストラは「有害と見なされるコマンド、Goto」という記事を発表しました。このコマンドを無差別に使用すると、コンピュータープログラムの可読性と理解に悪影響があったことを指摘しました。
Niklaus Wirthは、1970年にリリースされたPascalと呼ばれる新しいプログラミング言語を設計しました。それ以来、構造化プログラミングの設計を教えるために広く使用されています。
特徴
このプログラミングモードの特徴は、プログラマがプログラムのソースコードを、ループ、論理ブロック、および条件付きコマンドで構成される論理的に構造化されたブロックに断片化できることです。
構造化プログラミングの目標は、作成、デバッグ、変更が簡単なプログラムを作成することです。取得したプログラムは、ジャンプなしで、明確で、順序付けられ、理解可能です。
構造化プログラミング理論
ダイクストラは構造化プログラミングに関連する理論を考案しました。これは、プログラムを設計するときは、次の基本事項を考慮すると便利であることを示しています。
-構造定理。これは、任意のプログラムが、順次構造、代替構造、反復構造の3つの必須制御構造のみを使用してコンパイルできることを示しています。
-プログラムの概要を説明するときは、上から下に呼ばれる降順のテクニックを適用することをお勧めします。
-変数とデータ構造の有効性と可視性の範囲を制限する必要があります。
制御構造
構造定理は、単一の開始点と終了点を持つアルゴリズムは、3つの制御構造の合成として構成できることを示しています。
これらのサポートされている制御構造を論理的かつ明確にプログラミングすることにより、構造化プログラミングは、困難を伴うことなく機能への効率的なアプローチを可能にします。
シーケンスまたは線形構造
この構造は、2つ以上の操作またはコマンドのシーケンスまたは連続です。
決定構造または代替案
これは、2つの可能な選択肢からのコマンドの選択です。3つ以上の選択肢から選択することもできます。
最初の質問でループまたは繰り返し構造
特定の条件が満たされている限り、特定のコマンドが繰り返されます。カウンタを使用してサイクルを実行することもできます。
プログラミング言語に依存しない
構造化プログラミングは、問題の特定の性質に従ってランク付けされた、明確に定義された機能モジュールに基づいています。このプログラミングは、プログラミング言語の独立した方法であり、プログラミングのスタイルに似ています。
これは、一定の制御構造のセットを使用して、確立されたルールに従ってプログラムを考案する方法です。
構造化プログラミングを使用すると、機械語に関係なく、自然に近い任意のプログラミング言語に変換可能な疑似コードでプログラムを作成できます。
構造化プログラミングの例
最新のプログラミング言語のほとんどすべてのサンプルコードスニペットは、構造化プログラミングの例です。
このプログラミングでは、ループ、条件、およびサブルーチンを使用してフローとモジュール性を制御し、コードの読み取りと再利用を容易にします。
シーケンス
ステートメントのリストは、上から下に順番に実行できます。この例では、パンを焼くための自然言語プログラムが例として示されています。
-小麦粉を追加します。
-酵母を追加します。
-塩を加えます。
-混ぜて。
- 水を加える。
-こねます。
-生地を浮かせてください。
- 焼く。
繰り返し
ステートメントのブロックは、条件が真である限り繰り返されます。例:皿洗い。
選択
最大で1つのアクションは、いくつかの代替条件から選択されます。例:メールを注文します。
Visual Basicでの構造化プログラミング
シーケンス
コードの行またはブロックは、順番に書き込まれ、実行されます。たとえば、次のようにします。
x = 6
y = 12
z = x + y
WriteLine(z)
繰り返し
条件が満たされている間、コードブロックが繰り返されます。ブロックを実行できる回数に制限はありません。例:
x = 2
x <100である限り
WriteLine(x)
x = x * x
終わり
選択
条件が真の場合、コードのブロックが実行されます。コードブロックは最大で1回実行されます。例:
x = ReadLine()
x Mod 2 = 0の場合
WriteLine( "数は偶数")
はいの終わり
利点
・お客様のニーズに応えるプログラムです。
-最初にコードを生成するのには時間がかかりますが、最初に実行したときにエラーなしで実行されるコードが生じることがよくあります。
-英語の単語や記号の語彙に似ています。
・将来の新仕様でのプログラム変更に対応しやすい。
-メンテナンスが簡単です。
-使いやすく、理解しやすいです。最終的に、コードの記述に必要な時間が短縮されます。学ぶ方が簡単です。
-高級言語で書かれたプログラムは、多くの機械語に翻訳できます。したがって、適切なトランスレータまたはコンパイラがある任意のコンピュータで実行できます。
-それらは、機械指向ではなく、主に問題指向です。
-それが使用されるコンピューターから独立しています。つまり、高級言語で開発されたプログラムは、どのコンピューターでも実行できます。
より明確なプログラム
構造化プログラミングにより、ある機能が別の機能に影響を与える可能性が低くなります。グローバル変数が削除されてローカル変数に置き換えられるため、プログラムがより明確になります。
この変更により、グローバル変数が占有するメモリ割り当てスペースを節約できます。
わかりやすい
組織は、プログラムの背後にあるロジックを理解するために、プログラミングロジックを簡単に理解するのに役立ちます。
また、あらゆるテック企業の新規参入者が他の業界の労働者によって作成されたプログラムを理解するのを助け、潜在的なコードのデバッグを容易にします。
短所
-翻訳者またはコンパイラーは、高級言語を機械語に翻訳する必要があります。したがって、コンピュータ時間の使用には代償を払わなければなりません。
-コンパイラによって生成されたオブジェクトコードは、同等のアセンブリ言語プログラムと比較すると非効率的です。
同じコードが繰り返されました
書かれたコードは、プログラムのさまざまな部分に現れる可能性があります。その場所により、さまざまな問題に対して脆弱になる可能性があります。プログラムには変数があります。つまり、プログラムの異なる部分で異なる値をとることができます。
データ型を変更するのは面倒です
データのタイプは多くの関数から来ています。したがって、そのタイプのデータに変更が発生した場合、対応する変更は、プログラム内のそのタイプのデータに作用する各場所で行う必要があります。プログラムが非常に大きい場合、これは本当に時間のかかる作業です。
ソフトウェア開発の場合を考えることができます。この場合、複数のプログラマーがアプリケーションのチームとして作業します。構造化プログラムでは、各プログラマーが特定の関数とデータ型のセットを作成するよう割り当てられます。
したがって、プログラマーが異なれば、データ型が互いに共有されている異なる関数を個別に処理します。
チームの他のプログラマは、プログラマが行ったデータ型の変更を、処理したデータ型に反映する必要があります。そうしないと、複数の関数を書き直す必要があります。
用途
構造化プログラミングは、数百万のプログラムと数十億行のコードに適しています。破棄する理由はありません。
特に、データを処理するプログラムと数値処理の両方で非常にうまく機能し、どちらも一度実行して応答を生成します。
2つの特性は、純粋に構造化された方法で対処できる問題を明確に定義する傾向があります。
-処理されるデータは、言語に統合されているデータのタイプとほぼ一致しています。通常、データは数値と文字列です。
-プログラムは、明確に定義された制御フローに従って、いくつかの入力に基づいて単一の結果を生成します。
これらの特性を持つコンピュータープログラムには、従来のコンピューターサイエンスコースの多くの教科書の例に加えて、多くの科学、工学、ワープロアプリケーションが含まれます。
当然のことながら、これらはまさにプログラミング言語を発明した最初の人々が解決したかった種類のプログラムです。
オブジェクトの取り扱い
最新のプログラミング言語のほとんどはこのように構造化されています。プログラム内にあるのはオブジェクトであり、ほとんどのコードはそれらのオブジェクトに格納されているデータを使用するさまざまな方法で構成されています。
構造化プログラムは通常、何がいつ発生するかを制御しますが、イベントベースのプログラムは、予測できない時間にイベントに応答できなければなりません。
参考文献
- MVPS(2020)。構造化プログラミング。取得元:mvps.net。
- アレクセイ(2019)。構造化プログラミングパラダイム。中。取得元:medium.com。
- ヘルプを含める(2020)。構造化プログラミング、その長所と短所。取得元:includehelp.com。
- ティム・トロット(2019)。構造化プログラミング言語。ローンウルフオンライン。取得元:lonewolfonline.net。
- OOポータル(2020)。従来の構造化プログラミングの使用と利点。ooportal.comから取得。
- Studeer Snel(2020)。最終レビュー-構造化プログラミングアプリケーションの概要。取得元:studeersnel.nl。