計算スキーム。 「VBAアルゴリズム開発。 ブロック図。 アルゴリズム構造。 Pascal プログラミング言語の入力および出力演算子

すべての人の日常生活では、仕事や勉強中にさまざまな複雑さの膨大な数のタスクを解決する必要があります。 一部のタスクは非常に単純であるため、それを実行するときに、私たちは何も考えずに特定のアクションを自動的に実行します。 最も単純な問題であっても、問題の解決は通常、いくつかのステップで順番に実行されます。 このように問題を解くときの順序をアルゴリズムと呼びます。 今日は、線形アルゴリズムとは何か、その構造がどのように描かれ、どのように解決され、プログラムされるのかを見ていきます。

アルゴリズム言語

この概念は、タスクを解決することを目的とした、特定の一連のアクションを実行するための正確な指示です。

この言語は、通常はユーザー指向のアルゴリズムを記述する手段です。

  • アルゴリズムの開始/終了ブロック。 ブロックには「始まり」または「終わり」の文字が刻まれています。
  • データ入出力ブロック。 このブロックは、平行四辺形として描かれています。 「入力」、「出力」、「印刷」の文字が刻まれています。 これらには、入力変数または出力変数のリストも伴います。
  • 算術ブロック、または決定ブロック。 長方形に相当します。 ブロックには「操作」、「操作のグループ」という文字が含まれている必要があります。

このようなブロック図の助けを借りて、線形アルゴリズムの解決策が示されます。 次に、値を割り当てる機能について説明します。

線形計算アルゴリズム

計算アルゴリズムにおける主な基本アクションは、特定の値を変数に代入することです。 定数の値がその表記法のタイプによって決定される場合、変数値は代入の結果としてのみ特定の値を受け取ります。 これは 2 つの方法で実行できます。1 つは割り当てコマンドを使用する方法です。 入力コマンドを使用して。

線形アルゴリズムのソリューションの例

線形アルゴリズムを使用して普通の分数を除算する規則の説明の例を示します。学校の教科書には次のような内容があります。

  • 分数 1 の分子には分数 2 の分母を掛ける必要があります。
  • 分数 1 の分母には分数 2 の分子を掛ける必要があります。
  • 分子が 1 点を完了した結果、分母が 2 点を完了した結果である分数を書き留める必要があります。 この規則の代数形式は次のとおりです。

a/b: c/d=(a*d)/(b*d)=m/n。

それでは、コンピュータ用に分数を割り算するアルゴリズムを構築してみましょう。 混乱を避けるために、変数には上記の式と同じ表記を使用します。 a、b、c、d - 整数変数の形式のソース データ。 結果も整数値になります。 アルゴリズム言語での解決策は次のようになります。

アルグ分数の割り算

無傷の a、b、c、d、m、n

a、b、c、dを入力

詐欺

ソリューションのグラフィック形式

上で説明した線形アルゴリズムの図は次のようになります。

値割り当てコマンドの形式は次のとおりです。

変数:=式。

「:=」記号はassignと読みます。

割り当ては、コンピュータが次のアクションを実行するために必要なコマンドです。

  • 式の計算。
  • 結果の値を変数に代入します。

上記のアルゴリズムには、割り当てとして 2 つのコマンドが含まれています。 ブロックダイアグラムでは、代入命令は演算ブロックと呼ばれる四角形の中に記述する必要があります。

線形アルゴリズムを記述する場合、式を記述するときに厳密なルールに厳密に従う必要は特にありません。 通常の数学形式を使用して記述できます。 結局のところ、これはプログラミング言語の厳密な構文ではありません。

与えられたアルゴリズムの例には、入力コマンドもあります。

a、b、c、dを入力します。

ブロック図における入力コマンドは、平行四辺形、つまり入出力ブロック内に記述されます。 このコマンドを実行すると、プロセッサはユーザーが特定のアクションを実行するまで動作を中断します。 つまり、ユーザーは入力変数 (その値) を (キーボード) に入力し、Enter キーとして機能する Enter キーを押す必要があります。 値は、入力リスト内の対応する変数と同じ順序で入力することが重要です。

線形アルゴリズム。 そのプログラミング

記事の冒頭で述べたように、線形プログラムには次のステートメントを含めることができます。

  • 割り当て;
  • 入力;
  • 結論。

つまり、リストされた演算子を使用してアルゴリズムが実装されます。

したがって、プログラム言語では次のように記述されます。

LET A = B、ここで A は変数、B は式です。 たとえば、A = Y + 20 となります。

入力ステートメントは次のようになります。

入力、例: INPUT C

データ、値を出力する演算子は次の形式で記述されます。

印刷します。 たとえば、PRINT S。

簡単な例を挙げてみましょう。 キーボードから入力された数値 A と B の合計を求めるプログラムを作成する必要があります。

プログラミング言語では、以下に示すテキストのプログラムを取得します。

Pascal プログラミング言語の入力および出力演算子

Pascal は、線形アルゴリズムが使用する入力または出力操作を示す特別な演算子を提供しません。 プログラムでは、組み込みプロシージャを使用して情報が交換されます。 標準プロシージャについては事前に説明する必要がないため、その呼び出しを含むすべてのプログラムで使用できます。 また、記載されているプロシージャの名前は予約語ではありません。

データを入力するとき、このような演算子は、プログラムにすでに組み込まれている標準のデータ入力手順を参照するために使用されます。

(A、B、C) を読み取ります。A、B、C は、記憶のために RAM に入力する必要がある変数です。

Readlnn (x1, y, x2) - 入力が終了すると、カーソルは新しい行の先頭に移動します。

読んでね; - は「Enter」を押すのを待っていることを示します。 通常、このステートメントは、コンテンツ画面上のプログラムの実行結果を保存するために、最後の「End」の前のテキストに挿入されます。

データは次の演算子を使用してモニター画面に表示されます。

Write (A, B, C) - 値 A、B、C を 1 行で指定すると、カーソルは現在の行から離れません。

Writeln (z, y, z2) - 値の出力が完了すると、この位置のカーソルが新しい行に移動します。

書き込み; - は 1 行スキップして、新しい行の先頭に移動することを示します。

Pascal 言語でのデータの入出力は、このような単純な演算子の助けを借りて行われます。

他の発表のまとめ

「基本的なアルゴリズム構造」 - 「ループ本体」コマンドの実行。 アルゴリズム構造「分岐」のブロック図。 n=5 とします。 i=4。 循環アルゴリズムのブロック図。 終わり。 アルゴリズム構造「選択」。 n=5 とします。 i=5。 始める。 分岐構造。 n=5 とします。 i=6。 アルゴリズム構造の基本的なタイプ。 アルゴリズム構造「サイクル」。 正数。 「選択」アルゴリズム構造のフローチャート。 線形アルゴリズムのブロック図。

「アルゴリズムの種類」 - アパートの清掃。 袋を開けます。 レッスンのモットー。 ハノイの塔。 フィギュアの名前。 漫画を見てください。 収穫物を収穫します。 アルゴリズムの紹介。 交差点に近づきます。 循環アルゴリズム。 庭園に入ります。 ヤシの木。 人間の行動のアルゴリズム。 グラフィックディクテーション。 録音アルゴリズム。 アルゴリズム。

プロシージャ内のサイクルを記録します。 手順の修正。 原色。 壁を描いてみましょう。 アルゴリズムとは何ですか? チーム。 インタラクティブなチュートリアル。 屋根を描いています。 家を描きましょう。 描きましょう。 窓を描きます。 家の準備は完了です。 サイクル。 知識。 ペンの色を変更します。

「線形アルゴリズムの問​​題」 - X = 0 解決策はありません。 Y = 2、X = 3、Y = 1/48。 三角形ABCの​​頂点の座標が与えられます。 アルゴリズム フローチャートを使用して、X=2 における Y 関数の値を計算します。 A をより大きな情報単位に変換します。 アルゴリズム化は、問題を解決するためのアルゴリズム (アクション プラン) を開発するプロセスです。 X = -1 解はありません。 問題解決の例。 三角形の辺の長さ A、B、C が与えられ、三角形 S の面積を求め、問題を解くためのアルゴリズムのブロック図を作成します。

「アルゴリズム構築」 - アルゴリズムをグラフの形式で表現する方法。 分岐。 一連のアクションの記述形式でのアルゴリズムのプレゼンテーション。 アルゴリズムの提示形式。 「壁紙」アルゴリズムのフローチャート。 アルゴリズム設計。 問題を解決するためのアルゴリズム。 ブロック図。 アルゴリズムをグラフィカルに表現する方法。 アルゴリズムを提示する方法。 アルゴリズム。 複雑なアルゴリズム。 基本構造のブロック図。

「アルゴリズム構造の主なタイプ」 - アルゴリズムを口頭形式で記述します。 グループで作業します。 構造。 接頭辞のスペル。 アルゴリズム構造の基本的なタイプ。 独立した作品をチェックしています。 体操。 知識を統合するためのタスク。 アルゴリズム。 基本構造。 初期パラメータの設定。 お茶の作り方のレシピ。 分岐。 ルートを見つけてください。 事後条件付きのループ。 サイクル。 ブロック文字。 アルゴリズムの終了。 アグロリズム構造の主なタイプ。

一般的な手順
セクションの回路を合成するには 5.1 では次の手順について説明します。
1. 必要な回路の機能の説明。
2. 入力変数と出力変数の割り当てと値 0 と 1 の割り当て。
3. 真理値表を作成します。
4. 必要な論理演算の決定。
5. 回路の簡素化、および必要に応じて変更。
真理値表がわかっている場合は、OR の正規形のコンパイルから第 4 段階を開始することをお勧めします。 カルノー図を使用してできるだけ単純化します。 ステップ 4 の最後に、論理デジタル回路の組み立てに使用できる単純化された論理関数が得られます。
ステップ 5 では、論理代数を使用して見つかった関数をさらに単純化することが可能かつ合理的であるかどうかを確認します。 「はい」の場合は、単純化を実行する必要があります。
次に、どのような論理要素が利用できるかを調べる必要があります。 論理関数は、使用可能な論理要素のみが含まれるように変換する必要があります。 その後、回路を組み立てることができます。

複数箇所からのデジタルオン/オフ回路

論理ゲートを使用して、オン/オフ回路として機能する回路を複数の場所から合成する必要があります。 出力状態は、入力の 1 つの状態が変化した場合にのみ変化する必要があります。 両方の入力の状​​態が変化しても、出力の状態は変化しないはずです。 回路は OR-NOT 要素に基づいて構築する必要があります。
目的の回路には 2 つの入力と 1 つの出力があります。 入力変数は A および B と呼ばれます。出力変数は Z と呼ばれます (図 5.47)。
2 つの入力変数を持つ回路の真理値表には 4 つのオプションがあります (図 5.48)。 最初のオプションの初期状態 Z は、任意の方法で設定できます。 Z = 0を選択しました。
オプション 1 からオプション 2 に移行すると、変数 A の状態が変わります。 変数 B は状態を変更しません。 入力の 1 つだけが状態を変更する場合、指定されたタスクに従って、出力 Z の状態が変更される必要があります。 Z は 1 に等しい必要があります。
オプション 2 からオプション 3 に移行すると、変数 A と B の状態が変わります。 Zは変更しないでください。 オプション 3 からオプション 4 に移行すると、変数 A の状態が 0 から 1 に変わります。B は 1 のままです。したがって、Z の状態は 1 から 0 に変化する必要があります。真理値表の準備ができました。 オプション 1 で Z= 1 を選択した場合は、見た目が異なる可能性があります。
真理値表 (図 5.48) については、正規形 OR を書き留める必要があります。 次のようになります。
Z = (AaB)w(AaB)。
正規形の OR をカルノー図に入力すると、これ以上の単純化は不可能であることがわかります (図 5.49)。
回路は OR-HE 要素に基づいて構築する必要があるため、方程式を変換する必要があります。
Z = (AaB)w(AaB)-、
Z = (AaB)v(AaB)、
Z = ああBaAaB。

米。 5.50 デジタル回路

変換された方程式に従って構築された回路を図に示します。 5.50。

3 つのうち 2 つが切り替わります

原子力発電所などのリスクの増大に関連するシステムは、事故が発生した場合には直ちに停止する必要があります。 シャットダウンはデジタル回路を使用して自動的に行われます。 シャットダウンの原因となる緊急センサーで誤警報が発生する可能性があります。 したがって、3 つの同一の緊急センサーが各重要な場所に設置されます (図 5.51)。
シャットダウンは、3 つのアラーム センサーのうち少なくとも 2 つがトリガーされた場合にのみ発生します。 このアプローチにより、経済的損失を引き起こす不必要なシステムのシャットダウンが防止されます。 トリガーされると、緊急センサーは状態 1 になります。状態 1 が回路の出力でアクティブな場合、システムはオフになる必要があります。
したがって、必要なのは、3 つの入力のうち少なくとも 2 つが状態 1 にあるときに出力が状態 1 になる回路です。この回路は 2-out-of-3 スイッチと呼ばれます。
入力変数の名前は A、B、C です。出力変数は Z です。回路の動作原理を言葉で説明して真理値表を作成してみましょう。 2 つの入力変数が 1 に等しい場合、Z = 1 になります。3 つの入力変数がすべて 1 に等しい場合、Z も 1 に等しくなければなりません。そのような真理値表を図に示します。 5.52。
次に、コンパイルされた真理値表に従って、正規形の OR が書かれます。

米。 5.51。

Z = (A a B a C) v (A a B a C) v a5aC|v(^aSaC)。

OR の正規形は、カルノー図を使用して簡略化されます (図 5.53)。 3 つの二重グループを形成できます。 簡略化した方程式は次のとおりです。
Z = (AaB)w(BaC)w(AaC)。
この方程式を使用すると、図を作成できます (図 5.54)。
多くの場合、OR-HE 要素のみが手元にあります。 OR-HE 要素のみを使用して回路を構築するには、方程式を °- に変換します。
Z = (AaB)v(BaC)v(AaC);
======= S O.
Z = (A l B)v (B aC)v (A lC);
—======= 図 5.55。 スイッチ回路「2」
Z = AlVlVlSlAlS。 Sh1I-NE 要素の 3 つのうち。
対応する図を図に示します。 5.55。

パリティ回路

コード内のエラーを検出するため (セクション 8.7 および 8.8 を参照)、また制御および監視タスクでは、偶数の入力が 1 のときに出力が 1 になる回路が必要になることがよくあります。
この回路をパリティ回路と呼びます。
4入力の回路を合成する必要があります。 入力変数は A、B、C、D です。出力変数は Y です。
まず真理値表を作成する必要があります。 0、2、または 4 つの入力変数が 1 に等しい場合、Y は常に 1 に等しくなります (図 5.56)。
真理値表から、通常の OR 形式が得られます。
Y = (A l V lS l D)\/ ^A l V lS l (A l V lS l (A l V aS l
v(A l V lS l [A l V lS l (A l V lS l (A l V lS l D).

個々の完全接続詞には番号が付けられます。 カルノー図を使用して OR の正規形を単純化してみましょう (図 5.57)。 ここでは、グループの形成が不可能であるというまれなケースに直面しています。 これは、この正規形の OR を簡略化できないことを意味しており、その図を図 1 に示します。 5.58。

しきい値論理回路は、論理 1 が出力に現れるためには、特定の最小数の入力変数が 1 の状態でなければならない回路です。
たとえば、5 つの入力変数を持つ回路を計算する必要があります。 少なくとも 4 つの入力が 1 の場合にのみ、出力が 1 になる必要があります。
入力変数の名前は A、B、C、D、E です。出力変数は Z です。まず、真理値表を定義する必要があります。 5 つの変数を使用すると、32 のオプションが可能です (図 5.59)。
Z =| (A l V lS l D l E^v (A l V lS l D l E)v (A l V lS l D l v^A l V lS l D l E^v [A l V lS l D l E^v (A l B lS l D l E)。
標準形式の OR は 6 つの完全な接続詞で構成されます。
OR の正規形はカルノー図を使用して簡略化されます (図 5.60)。 5つのダブルグループを形成できます。 これにより、次の単純化された論理関数が得られます。
Z = (A aBaCaE)v (A aBaDaE)v (A aBaCaD)v v(A aC a D a E)v (B aC a D a E)。

簡略化された関数の図を図に示します。 5.61。 この方程式は、論理代数を使用してさらに簡略化できます。 最初の 3 つの完全な接続詞は括弧の外に置くことができ (AaB)、最後の 2 つは (C l D) です。 結果として得られる関数は次のとおりです。
Z = [(A A B) A ((C A E) V (D A E) A C A X>))] V [(C A D) A ((A A E) V (B A Z))] 。 それでも、大幅な簡素化を達成することはできませんでした。

比較回路(コンパレータ)

デジタル テクノロジーでは、デジタル データを相互に比較する必要があることがよくあります。 最も単純な比較回路、いわゆるコンパレータは、2 つの変数の状態を相互に比較します。
変数に A および B というラベルを付けます。A と B は等しい場合があります。 A が B より大きい場合もあれば、その逆の場合もあります。 コンパレータには、これら 3 つの可能なオプションに対応する 3 つの出力があります。 それらは X、Y、Z と指定され、それらの状態は次のように割り当てられます。
A = Z => X = 1;
A > B^> Y= 1;
あ< В =>Z = 1。
したがって、2 つの入力変数 A と B と出力変数 X、Y、Z を持つ回路を合成する必要があります。
真理値表を作成するときは、「A = 1 および B = 0 の場合、A は B より大きい」という規則に従う必要があります。したがって、B = 1 および A = 0 の場合、B は A よりも大きくなります。真理値表を図に示します。 5.62。
論理関数は真理値表から取得されます。
X = (AaB)v(AaB);
Y = A a B;
Z = A、B。
これらの方程式はこれ以上単純化されませんが、目的のスキームを図に示します。 5.63。

米。 5.62。

米。 5.63。

工場から出荷される前に、トランジスタは 4 つの重要なパラメータ A、B、C、D が許容範囲内にあることを確認するために検査されます。 測定には4つのデジタルセンサーが使用されます。 測定値が許容値の範囲内にある場合、センサーは 1 を出力します。 測定値が許容値の範囲外の場合、センサーは 0 を出力します。
デジタル回路を使用してトランジスタを選別します。 4 つの値がすべて許容値の範囲内にある場合、出力変数 M は 1 になります。B のみが許容値の範囲外である場合、出力変数 N は 1 になります。B と D のみが許容値の範囲外である場合、出力変数 N は 1 になります。許容値を満たしている場合、出力変数 U は状態 1 を受け取ります。その他すべての場合、出力 Z は 1 であり、トランジスタに欠陥があることを意味します。
回路を計算し、NAND 素子のみで構築する必要があります (「NAND ベース」とも呼ばれます)。
入力は 4 つの変数 A、B、C、D です。出力変数は M、N、U、Z です。A = 1、5 = 1、C = 1、D = 1 の場合、M は 1 になります。これは、図のオプション 16 です。真理値表(図
5.64)。 A = \、5 = 0、C = 1、D = 1 の場合、 は 1 になります (オプション 14)。 A が 1、5 = 0 の場合、U は 1 に等しくなります。
C = 1 および D = 0 (オプション 6)。 6、14、16 を除くその他すべての場合、Z— 1。

米。 5.64。 トランジスタ選別回路の真理値表です。 わかりやすくするために、出力変数のゼロは書き込まれません。

結果は次の論理関数になります。
M = ああBaCaD;
N = A、B、C、D; U = A a B aC a D。関数 Z には 13 個の完全な接続詞が含まれています。 M、N、U のいずれも 1 に等しくない場合、Z は常に 1 になります。Z については、通常の OR 形式を記述することをお勧めします (図 5.64 を参照)。
Z = (^4a5aCaD)v^a5aCaD^v^aBaCaZ));
Z = M v N vU。 次に、Z の直接値については次のようになります。
Z = M v N vU。

米。 5.65。

M、Nn U で見つかった関数は単純化できません。 これらは、NAND ベースの Z の方程式と一緒に再計算する必要があります。
M = ああBaCaD\
N = A a B aC l D;
U = AlVlSlO"、
Z = M v N v U = M a N aU;
Z = M a N a U。
これらの式から、図に示す図が得られます。 5.65。 出力 M、N、U、Z を通じて、トランジスタを 4 つの異なるコンテナに分配する機械デバイスを制御できます。

アナログ信号処理アルゴリズムを実装する場合、多くの場合、数学関数を計算する必要があります。 最も一般的な関数は、対数関数と指数関数です。 これらの関数は、送信または記録された信号のダイナミック レンジを縮小または拡大するスキーム (圧縮伸長) で使用されます。 指数および対数演算回路のもう 1 つの一般的な用途は、入力信号の積と除算を計算することです。

非線形関数を計算するには、負帰還で囲まれたオペアンプがよく使用されます。 例として、対数アンプの回路を図 1 に示します。


図1.対数増幅回路

この回路では負帰還回路に非線形素子(半導体ダイオード)が組み込まれており、印加電圧に対して電流が指数関数的に依存します。 フィードバック動作の結果、入力に対する出力電圧の依存性は対数的になります。 この対数回路のゲインは R1 によって決まります。 通常、対数回路はユニティゲイン用に設計されています。

この回路で二次電流-電圧特性を持つダイオードが使用されている場合、入力信号の平方根が計算されます。 直交信号処理中に信号振幅を決定する回路で使用すると便利です。

(1),

対数関数の逆関数である指数関数も同様の方法で計算されます。 この場合のみ、非線形要素はフィードバック回路には含まれず、増幅器の入力に含まれます。 図 2 は、オペアンプの指数を計算するための図を示しています。


図 2. 指数の計算スキーム

この回路に二次電流電圧特性を持つダイオードを使用すると、この回路は入力電圧の二乗を計算し、入力信号電力を決定する回路として使用できます。

これらの回路を数学関数の計算に使用すると、2 つのアナログ信号の積を計算できます。 これは、対数のよく知られた特性を使用して、変数の積をこれらの変数の対数の合計に置き換えます。 逆変換には指数演算機能を使用します。 この場合、対数の底はまったく重要ではありません。

(2),

式 (1) をオペアンプに実装する乗算回路を図 3 に示します。



図 3. オペアンプ乗算回路

実装が簡単であるにもかかわらず、このようなスキームが使用されることはほとんどありません。 乗算は正の入力値の場合にのみ可能です。 したがって、通常はそれに基づいて構築された乗算回路が使用されます。

関数を計算するために、特定の電流電圧特性を持つ非線形要素を選択できるとは限りません。 この場合、関数の区分的線形近似を使用できます。 フィードバック回路の抵抗値を変更するだけで、オペアンプのゲインを簡単に実装でき、関数の傾きを設定できます。 入力電圧が変化したときの抵抗の切り替えは、設定したターンオフ電圧が供給されるダイオード スイッチを使用するのが最も簡単です。 同様の図を図 4 に示します。


図4. ファンクションアンプ回路

トランジスタベースの乗算器は、より複雑な関数を計算するためによく使用されます。 最も単純なケースでは、X 入力と Y 入力を組み合わせて、入力信号の 2 乗を計算する回路を得ることができます ( Y=X 2).

電子電圧レギュレータとして使用できます。 入力の 1 つに定電圧を印加することにより、出力に供給される交流電圧のレベルを出力で調整できます。

文学:

「数学関数を計算するためのスキーム」という記事と併せて、次の内容を読んでください。

2.1 アルゴリズムの開発。

アルゴリズム- これ

a. 問題を解決したり目標を達成したりするための一連の行動の説明。

b. 基本的なデータ処理操作を実行するためのルール。

c. 数式を使った計算の説明。

アルゴリズムの開発を始める前に、結果として何を取得する必要があるのか​​、どのような初期データが必要で何が利用可能なのか、このデータにはどのような制限があるのか​​など、タスクを明確に理解する必要があります。 次に、初期データから必要な結果を得るためにどのようなアクションを実行する必要があるかを書き留める必要があります。

実際には、プレゼンテーション アルゴリズムの最も一般的な形式は次のとおりです。

口頭(自然言語での録音)。

グラフィック (グラフィック シンボルからの画像);

疑似コード (条件付きアルゴリズム言語によるアルゴリズムの半形式化された記述。プログラミング言語の要素と自然言語句、一般に受け入れられている数学的表記法などを含む)。

プログラミング (プログラミング言語のテキスト)。

アルゴリズムを口頭で記述する方法は、データ処理の連続する段階を説明することです。 アルゴリズムは自然言語の自由形式で指定されます。

例。 2 つの自然数の最大公約数 (GCD) を見つけるアルゴリズムを書き留めます。

アルゴリズムは次のようになります。

1. 2 つの数字を設定します。

2. 数値が等しい場合は、それらのいずれかを答えとして受け取り、停止します。そうでない場合は、アルゴリズムの実行を続けます。

3. 最大の数値を決定します。

4. 大きい数値を大きい数値と小さい数値の差に置き換えます。

5. ステップ 2 からのアルゴリズムを繰り返します。

説明したアルゴリズムはあらゆる自然数に適用でき、問題の解決につながるはずです。 このアルゴリズムを使用して 125 と 75 の最大公約数を決定して、このことを納得してください。

口頭による方法は次の理由から普及していません。

このような説明は厳密には形式化できません。

メモの冗長さに悩まされる。

個々の規制の解釈には曖昧さの余地があります。

アルゴリズムをグラフィカルに表現する方法は、口頭で表現する方法と比べて、よりコンパクトで視覚的です。

グラフィックで表示される場合、アルゴリズムは相互接続された一連の機能ブロックとして表され、各機能ブロックは 1 つ以上のアクションの実行に対応します。

この図表をフローチャートまたはフローチャートと呼びます。

擬似コードは、アルゴリズムを均一に記述するために設計された表記法とルールのシステムです。

自然言語と形式言語の中間の位置を占めます。

一方で、これは通常の自然言語に近いため、通常のテキストと同じようにアルゴリズムを記述したり読み込んだりできます。 一方、疑似コードは、いくつかの形式的な構成要素と数学的記号を使用するため、アルゴリズムの表記法が一般に受け入れられている数学的な表記法に近づきます。

擬似コードでは、形式言語に固有のコマンドを記述するための厳密な構文規則が採用されていないため、設計段階でのアルゴリズムの記述が容易になり、抽象実行プログラム用に設計されたより幅広いコマンドのセットを使用できるようになります。 ただし、擬似コードには通常、形式言語に固有の構成要素がいくつか含まれているため、擬似コードでの記述から形式言語でのアルゴリズムの記述への移行が容易になります。 特に、擬似コードや形式言語には、その意味が完全に決定される機能語が存在します。 擬似コードには単一の正式な定義がないため、機能語のセットや基本的な(基本的な)構造が異なるさまざまな擬似コードが可能です。

2.2 ブロック図。

フローチャートはアルゴリズムをグラフィカルに表現したもので、相互接続された一連の機能ブロックとして表され、各ブロックは 1 つ以上のアクションの実行に対応します。

フローチャートでは、各種アクション(初期データの入力、式の値の計算、条件の確認、アクションの繰り返しの制御、処理の完了など)が、ブロックシンボルとして表現される幾何学図形に対応しています。 ブロック シンボルは、アクションが実行される順序を決定する遷移線によって接続されます。

最も一般的に使用される記号を次に示します。

シンボル名 指定と記入例 説明
プロセス 計算アクションまたは一連のアクション
解決 条件の確認
修正 サイクルの始まり
事前定義されたプロセス サブルーチンによる計算、標準サブルーチン
入出力 I/O全般
起動停止 アルゴリズムの開始、終了、サブルーチンへの開始と終了
書類 印刷結果

「プロセス」ブロックは、データの意味、表示形式、または配置を変更するアクションまたは一連のアクションを示すために使用されます。 図の明瞭さを向上させるために、いくつかの個別の処理ブロックを 1 つのブロックに組み合わせることができます。 個々の操作のプレゼンテーションは非常に自由です。

「決定」ブロックは、条件付き制御の遷移を示すために使用されます。 各「ソリューション」ブロックは、定義する質問、条件、または比較を識別する必要があります。

「変更」ブロックは、循環構造を編成するために使用されます。 (モディフィケーションという言葉は修正、変形という意味です)。 ブロック内にはサイクルパラメータが記述され、繰り返しごとにその初期値、境界条件、パラメータ値の変更ステップが示されます。

「事前定義プロセス」ブロックは、いくつかの独立したモジュールの形式で自律的に存在する補助アルゴリズムへの呼び出し、およびライブラリ ルーチンへの呼び出しを示すために使用されます。

例。 辺が a、b、c の三角形の高さ ha、hb、hc を決定するアルゴリズムのブロック図を作成します。



どこ p = (a + b + c) / 2。
解決。 表記法を紹介しましょう h a = t/a、h b = t/b、h c = t/c。 フローチャートには、開始、入力 a、b、c、計算 p、t、h が含まれている必要があります a、h b、h c 、結果を出力して停止します。

2.3 アルゴリズム構造。

アルゴリズムは、個々の基本的な (つまり、基本的な) 要素から構成される特定の構造と考えることができます。 当然のことながら、アルゴリズムに対するこのアプローチでは、設計の基本原理の研究は、これらの基本要素の研究から始める必要があります。

アルゴリズムの論理構造は、フォロー、分岐、ループという 3 つの基本構造の組み合わせによって表現できます。

基本構造の特徴は、1 つの入力と 1 つの出力が存在することです。

1. 基本的な構造は次のとおりです。次々に続く一連のアクションから形成されます。

2. 基本的な分岐構造。条件のチェックの結果 (はいまたはいいえ) に応じて、アルゴリズムを操作する別の方法の 1 つを選択できます。 各パスは共通の出力につながるため、どのパスが選択されてもアルゴリズムは実行され続けます。

構造 分岐する 4 つの主なバリエーションが存在します。

If-then-else;

選択は異なります。

1) if-if 条件 then アクション終了 if 2) if-else if 条件 then アクション 1 それ以外の場合アクション 2 end if 3) 条件 1 の選択肢: アクション 1、条件 2 の選択肢: アクション 2。 。 。 。 。 。 。 。 。 。 。 。 条件 N の下: アクション N 選択の終わり 4) 選択 - それ以外の場合は、条件 1 の下での選択: アクション 1、条件 2 の下でのアクション 2。 。 。 。 。 。 。 。 。 。 。 。 条件 N の場合: アクション N それ以外の場合はアクション N+1 選択の終わり

例。 関数を計算するためのアルゴリズムのブロック図を作成する

基本的な構造はサイクルです。 ループの本体と呼ばれる特定のアクションのセットを繰り返し実行します。

サイクル構造には、次の 3 つの主要なバージョンが存在します。

ループタイプ のために.

指定された範囲内の特定の変数 (ループ パラメーター) のすべての値に対してループ本体を実行するように指示します。

ループタイプ さよなら.

while という単語の後に書かれた条件が満たされる限り、ループの本体を実行するように命令します。

ループタイプ 一方を行います.

while という単語の後に書かれた条件が満たされる限り、ループの本体を実行するように命令します。 ループ本体の実行後に条件がチェックされます。

for および while ループは、条件を事前チェックするループとも呼ばれ、to do - while - ループは条件を事後チェックするループとも呼ばれることに注意してください。 つまり、ループ終了条件が最初に true でない場合、for ループと while ループの本体は一度も実行されない可能性があります。 ループを終了するための条件が最初に true でなくても、少なくとも 1 回実行されるまでループの本体を実行します。

i1 から i2 までの i のサイクル ステップ i3 サイクル本体 (一連のアクション) サイクルの終了 ループ while 条件 ループ本体 (一連のアクション) ループの終了 サイクル do ループ本体 (アクションのシーケンス) 条件付きループ終了まで

所定の精度(所定の交流べき級数に対して、次の項の絶対値が小さくなると必要な精度が達成されます)。

合計の計算は典型的な周期的なタスクです。 私たちの特定の問題の特徴は、項の数 (したがって、ループ本体の繰り返し数) が事前に不明であることです。 したがって、必要な精度が達成されたときにループを終了する必要があります。

アルゴリズムをコンパイルするときは、項の符号が交互になり、項の分子の数値 x のべき乗が増加することを考慮する必要があります。

各 i 番目のステップで部分和を計算することで、この問題を正面から解決します。

S:=S+(-1)**(i-1)*x**i/i 、

最終的には、多数の操作を必要とする非常に非効率的なアルゴリズムが作成されます。 次のように計算を整理する方がはるかに優れています。任意の項の分子を文字 p で指定すると、次の項の分子は -р*х に等しくなります (マイナス記号は、用語)、用語自体は m になります

は p/i に等しくなります。ここで、i は項の番号です。

反復ループを含むアルゴリズムを反復アルゴリズムと呼びます。 反復アルゴリズムは、反復数値法の実装に使用されます。 反復アルゴリズムでは、サイクルを終了する条件が確実に達成される (反復プロセスの収束) 必要があります。 それ以外の場合、アルゴリズムはループします。 アルゴリズムの主要な特性である有効性が満たされなくなります。

入れ子になったループ。

場合によっては、ループ本体内で特定の一連のステートメントを繰り返す必要がある、つまり内部ループを構成する必要がある場合があります。 この構造は、ループ内ループ、またはネストされたループと呼ばれます。 ループのネストの深さ (つまり、相互にネストされているループの数) は異なる場合があります。

このような構造を使用する場合、コンピュータの時間を節約するには、内側のループのパラメータに依存しないすべてのステートメントを内側のループから外側のループに移動する必要があります。

のネストされたループ。 指定された行列 A(5,3) の要素の合計を計算します。

今のところネストされたループ。 指定された行列 A(10,10) の偶数行と偶数列の交点にある要素の積を計算します。

トピックの続き:
OS

CoffeeZip は Windows でメインで使える高品質アーカイバです。 このプログラムは Windows コンテキスト メニューに統合されています...