プログラミングで実行されるアルゴリズムのジオメトリと構文およびスレッド構造を表すためのアルゴリズムスキーマと擬似コード
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
擬似コード(擬似コード)の概念:
これはソースコードの概念ですが、プログラミング言語の実際のソースコードではありません。簡単に視覚化できるように、次のように理解します。実際の言語で、ベトナム語で「こんにちは」という単語をさまざまな言語に翻訳できることを想像してみてください。たとえば、英語はhello、フランス語はbonjour ….、挨拶を表すのと同じです。プログラミングでも、各プログラミング言語は同じジョブを理解してコンパイルしますが、各言語の特性と構造によって構文上の違いがあります。したがって、プログラミングに取り組むときは、擬似コードの概念を使用して、作業コンテンツをコーディングスタイルで一般的に記述できますが、より簡潔で理解しやすくなります。そして、この言語はコンピューターコンパイラーによってコンパイルされるのではなく、主にプログラマー間のコミュニケーションのためにコンパイルされます。 (実際、プログラミングの専門知識を交換するとき、プログラマーは通信するための擬似コードを書くことはめったにありませんが、主に問題を説明して理解するために話しますが、問題が複雑な場合もあります。または新しいプログラマーの場合、問題を記述するための擬似コードも適用されます) 。
プログラミングスキルが少しあるか、いくつかのプログラミング言語にアクセスできる方は、この記事を参照する必要がない場合があります。
擬似コードを書く最も基本的な例:
BEGIN DISPLAY "hello world" END
これはコンピューターにコマンドを与える基本的な例ですが、擬似コードを使用するスタイルでは、この記述は短く、理解しやすく、プログラマーのタスクはコードの構文に基づいています。それぞれの特定のプログラミング言語を記述します。コマンドラインでは、コンピュータが「helloworld」という単語を出力する必要があります。
擬似コードの実行中の(順次実行される)フロー:
- BEGIN :プログラムを開始します
- DISPLAY "hello world":テキスト"helloworld"を画面に出力します
- 終了:プログラムの終了
擬似コードのキーワードは、一人一人の好みに合わせて柔軟に変更できますが、STARTやBEGINを理解したり、BATDAUとしてベトナム語化することもできます。BATDAUは、章を開始するための構文を表す擬似コードでもあります。プログラムのみ。同じことがEND/STOP / KETTHUCにも当てはまります。プログラミングでは、始まりで終わる必要があるため、このキーワードのペアはよく一緒になります。
擬似コードを表すときのいくつかの一般的なキーワード:
- BEGIN /START =>プログラムを開始します
- END /STOP =>プログラムの終了
- INPUT =>ユーザー入力が必要で、それをメモリに保存します(キーボード操作)
- 表示/書き込み=>画面に印刷
- IF / ELSE =>実行中のスレッドをフォークするために使用される場合(計算された条件に基づいてプログラムを順次実行する)
- BEGIN LOOP / END LOOP =>ループの開始と終了(この記事の後半で説明するプログラミングの概念)
ユーザーが入力した2つの数値の合計を計算する問題のある擬似コードの基本的な例:
BEGIN INPUT A INPUT B C = A + B DISPLAY C END
上記の擬似コードは、コンピュータにジョブを順番に実行するように指示します。
- プログラムを開始します
- ユーザーに2つの数字を入力し、2つのストレージリソースA、Bに名前を付けて、ユーザー入力値を保存するように依頼します。
- また、AとBの合計によって計算されるリソースCも必要です。
- 次に、Cという名前のリソースの値を画面に表示します。
- プログラムを終了する
アルゴリズム図(アルゴリズム図)の概念:
これは幾何学的なアルゴリズム表現の形式であり、アルゴリズム図を読むと、プログラマーはプログラムのフローを視覚化し、実行プロセスの各アクションは記号で表されます。
この表は、アルゴリズムスキーマのシンボルを示しています。
シンボル | コンセプトの説明 |
プログラム開始/終了(ターミネーター) | |
画面への入力、出力/印刷(入力/出力) | |
処理ステップ | |
条件に応じてプログラムを分岐する決定(決定) | |
ページ内接続。スキーマが長すぎるか複雑な場合に別のスキーマ要素に接続するために使用されます(ページ上のコネクタ) | |
スキーマが長すぎるか複雑な場合に別のスキーマ要素に接続するために使用されるオフページコネクタ(オフページコネクタ) |
これは、ユーザーが入力した2つの数値の合計を計算する問題のあるアルゴリズム図です。
上記のアルゴリズムスキームでは、コンピューターが次のタスクを順番に実行する必要があります。
- プログラムを開始します(ターミネーター)
- ユーザーに2つの数字を入力し、2つのストレージリソースA、Bに名前を付けて、ユーザー入力値を保存するように依頼します。 (入力)
- AとBの合計で計算されるリソースCも必要です(処理中)
- 次に、Cという名前のリソースの値を画面に表示します。 (出力)
- ターミネーター(ターミネーター)
プログラミングにおける高度なスレッド構造
上で説明したように、プログラムはシーケンシャル構造で実行されます。実行は上から下に進み、もう少し進んでいます。想像してみましょう。
- ユーザーの入力データが偶数か奇数かをチェックする問題を解決します。
- コンテンツ「ドン1」、「ドン2」、「ドン100」を画面に1000回印刷する問題を解決します。
これらの問題があるため、プログラミングのより高度な構造概念に取り組む必要があります。この構造はほとんどすべてのプログラミング言語に適用され、プログラマーはそれを心から知っています。
問題1を解決するために、 IF (if)構造を使用します。条件が満たされた場合、現実のように想像してから、何かを実行します。
構造体IF(if)、IF-ELSE(if then-else)、IF-ELSE IF-ELSE(条件に基づいてプログラムフローを複数のブランチに分割)
IF構造には常に同じテスト条件が付属しており、コンピューターはプログラマーの意図に従ってプログラムをフォークするためにテスト条件に依存します。条件が真の場合、プログラムを実行しているスレッドは、実行するIF構造内の本体のステートメントにジャンプし、プログラムはENDIFキーワードを使用して本体を識別します。 IF構造体は、常にENDIF 。キーワードで終了する必要があります。
最初の擬似コードは、ユーザーが入力したデータが偶数か奇数かをチェックする問題にIF構造を使用します。
BEGIN DISPLAY "Nhap vao so can kiem tra" INPUT A RES = A/2 IF (R == 0) DISPLAY "So vua nhap vao la so chan" ENDIF END
式AMOD2がゼロであるかどうかを直接チェックする場合、擬似コードはよりコンパクトになります。値を格納するためにRESリソースを渡す必要はありません。
BEGIN DISPLAY "Nhap vao so can kiem tra" INPUT A IF (A MOD 2 == 0) DISPLAY "So vua nhap vao la so chan" ENDIF END
IF ELSE構造(if-then / else-then)
上記の擬似コードの例では、条件が満たされない場合、この問題を処理するために「So staggered」という行を出力せずにプログラムが終了することがわかります。IFのみを使用すると、擬似コードは次のようになります。
BEGIN DISPLAY "Nhap vao so can kiem tra" INPUT A IF (A MOD 2 == 0) DISPLAY "So vua nhap vao la so chan" ENDIF IF (A MOD 2 !=0) DISPLAY "So vua nhap vao la so le" ENDIF END
ただし、 IF構造内にELSEキーワードを追加するソリューションを使用して、除算の結果がゼロ以外の場合にプログラムをフォークすることができます。疑似コードは次のとおりです。
BEGIN DISPLAY "Nhap vao so can kiem tra" INPUT A IF (A MOD 2 == 0) DISPLAY "So vua nhap vao la so chan" ELSE DISPLAY "So vua nhap vao la so le" ENDIF END
さらに、この状況では、次のようにIF構造を完全に実行できますが、出力は同じです。
BEGIN DISPLAY "Nhap vao so can kiem tra" INPUT A IF (A MOD 2 != 0) DISPLAY "So vua nhap vao la so le" ELSE DISPLAY "So vua nhap vao la so chan" ENDIF END
IF ELSE構造を使用すると、擬似コードはやや簡潔で読みやすく、理解しやすくなります。論理的な観点から、プログラムの上でIFを実行する方法では、ゼロ以外の条件をもう一度チェックする必要があります。IFELSEを使用する場合は、一度チェックする必要があります。条件が満たされない場合、プログラムはすぐにelse内のbodyブロックにフォークします。通常、プログラマーはこの方法を選択します。
上記の問題のアルゴリズム図:
構造IFELSEIF ELSE
この構造を使用すると、プログラムを、プログラムの状態に従って実行される3つ以上のスレッドにフォークできます。次の擬似コードを参照してください。
BEGIN IF ( DIEUKIEN1 ) // LAM GI DO ELSEIF ( DIEUKIEN2) // LAM GI DO ELSE // TRUONG HOP CON LAI ENDIF END
AND / OR構造(複数の条件を同時にチェック)
前のセクションでIF構造にアプローチしたばかりですが、除算と剰余が0であるかどうかの結果である1つの条件をチェックする問題にのみ使用しました。この紹介では、概念的な解決策に到達します。 AND / ORを使用して、プログラム内の複数の条件を同時にチェックします。
AND構造を説明するために、次の問題を解決するコンピューターの擬似コードの例:
ランク付けするスケールに基づいて、名前、年齢、学年など、ユーザーが入力した学生をテストします。スコアスケールは次のとおりです。
- グレードA:8<=ポイント<=10
- グレードB:6<=ポイント<=8
- グレードC:<6
BEGIN DISPLAY "NHAP VAO SINH VIEN" DISPLAY "NHAP VAO TEN"; INPUT NAME DISPLAY "NHAP VAO TUOI"; INPUT AGE DISPLAY "NHAP VAO DIEM"; INPUT MARK IF (MARK >= 8 AND MARK <= 10) DISPLAY "SINH VIEN " + NAME + " XEP HANG A" ELSE IF(MARK >= 6 AND MARK <=8) DISPLAY "SINH VIEN " + NAME + " XEP HANG B" ELSE DISPLAY "SINH VIEN " + NAME + " XEP HANG C" ENDIF END
OR構造を説明するために、次の問題を解決するコンピューターの擬似コードの例:
名前、年齢など、ユーザーが入力した学生データを確認し、ユーザーが年齢を入力したかどうかを確認します。0より大きく18未満の場合、印刷は無効です。
BEGIN DISPLAY "NHAP VAO SINH VIEN" DISPLAY "NHAP VAO TEN"; INPUT NAME DISPLAY "NHAP VAO TUOI"; INPUT AGE IF(AGE < 0 OR AGE > 18) DISPLAY "TUOI NHAP VAO KHONG HOP LE" ENDIF // DO SOMETHING END
NESTED IF(ネストされたIF)構造
ネストされたIF構造の問題を解決する擬似コードの例
名前、年齢、成績など、ユーザーが入力した学生データをチェックする問題を解決します。
ステップ1:名前が満たされない場合は、名前を印刷して終了します
ステップ2:名前が一致する場合、不満足な年齢が0より大きく18未満の場合は年齢を入力するように求めます。無効な画面に出力され、終了します。
ステップ3:満足している場合は、スコアの入力を求め、スコアをチェックしてランク付けします
- グレードA:8<=ポイント<=10
- グレードB:6<=ポイント<=8
- グレードC:<6
BEGIN DISPLAY "NHAP VAO TEN SINH VIEN" INPUT NAME IF ( COUNTCHARACTERS(NAME) <= 0 ) DISPLAY "NHAP VAO TUOI SINH VIEN" INPUT AGE IF (AGE < 0 OR AGE > 18) DISPLAY "TUOI KHONG THOA MAN YEU CAU" ELSE INPUT MARK IF(MARK >= 8 AND MARK =< 10) DISPLAY "SINH VIEN XEP HANG A" ELSE IF(MARK >= 6 And MARK <= 8) DISPLAY "SINH VIEN XEP HANG B" ELSE DISPLAY "SINH VIEN XEP HANG C" ENDIF ENDIF ELSE DISPLAY "CHUA NHAP TEN SINH VIEN" ENDIF END
LOOP(ループ)構造
上で学んだ構造として、ここでは、命令を順番に、より高度に実行して、プログラムをより強力にするコンピュータプログラムの基本、ループの概念を理解できます。同じ仕事を繰り返し実行するソリューションを提供します。もう一度。簡単に言うと、停止信号が出るまでジョブを継続的に実行して繰り返すようにコンピューターに指示することです。このコンテキストでは、条件テストの結果を上記の信号として使用します。
理解を深めるために、ループを使用したソリューションで上記の問題の擬似コードを検討してください。上記の問題で、ユーザーがデータを入力するとき、ユーザー入力が満たされないときにユーザーに再入力を求める必要がありますが、プログラムを中断しないでください。擬似コードは次のようになります。
BEGIN NAME = "" WHILE (COUNTCHARACTERS(NAME) <= 0) DO LOOP DISPLAY "NHAP VAO TEN SINH VIEN" INPUT NAME ENDLOOP AGE = 0 WHILE (AGE < 0 OR AGE > 18) DO LOOP DISPLAY "NHAP VAO TUOI SINH VIEN" INPUT AGE ENDLOOP // THUC THI NHAP VAO VA KIEM TRA DIEM END
これは、読者に紹介するためにweb888プログラミングで実行されているスレッド構造の要約です。気分が良ければ、作者に共有してください。読んでくれてありがとう、良い勉強をしたいです!