/ ターボパスカルしている間... do - 前提条件ループ

ターボパスカル。している間... do - 前提条件ループ

ターボパスカル、世界的に好きではないですがプログラミングのためのアプリケーションですが、ソフトウェアを書く上で最初のステップを踏み出すクリエイターは、この特定の環境に精通しています。それは、他の多くのものと同様に、影響、演算子、機能と手順の考えを与えます。例えば、プログラマーを勉強しているとき、Turbo Pascalでは次のようなサイクルが発生します。While、For、およびRepeat。

パスカルながら

サイクルの概念とその種類

このサイクルは繰り返しアクションと呼ばれます。この環境で使用されています:

  • パラメータ付き(For ... to ... do);
  • 前提条件付きで(While ... do);
  • 事後条件付き(繰り返し…まで)。

最初のタイプは、事前にわかっている場合に使用されます問題を解決するためのステップ数。ただし、特定のアクションが何回繰り返されるかについての情報がない場合、いくつかのタスクがあります。この場合、Pascalでは、原則としてループが必須になり、繰り返します。

サイクル構造

パスカルで働くことの本質は何ですか、のためにと繰り返しループ?これらの構成には、別の見出しと本文があります。最初のコンポーネントは、「機能する」変数を指定し、真実をチェックするための条件、本体が実行されるまでの期間を指定します。 2番目のコンポーネントには、条件が満たされた場合に使用する必要がある式、つまりFalseではなくTrueが含まれます。

最後の行で反復が行われたときコード、それから条件がチェックされるヘッダーに戻ります。 trueの場合、操作が繰り返され、条件が満たされない場合、プログラムはループを「終了」して、さらに操作を実行します。

Whileループは次のようになります。 Pascal ABCおよび同様のプログラムでは、次のようなコードを記述する必要があります。

  • ながら 状態 行う;
  • ベギン;
  • ループ本体;
  • 終わり。

ループの本文で1つのステートメント(1つのアクション)が実行される場合、begin…endブラケットは省略できます。

ループブロック図

Turbo Pascal Whileには次の機能があります。

  • 構造内で複雑な条件を使用できます。
  • doの後にセミコロンがあってはなりません(これは、Turbo PascalおよびPascal ABCでは間違いと見なされます)。
  • False応答の受信時にサブルーチンの出力として機能する変数、定数、または式は、ブール型、つまりブール型である必要があります。

以下は、このタイプのサイクルのブロック図です。アクションのシーケンスを示します。

パスカルabc while

サイクルワークアルゴリズム

Pascal ABCを含む最も単純なプログラミング環境では、Whileループは次の原則に従って動作します。

  • 与えられた反復、つまり反復は、条件が真である限り何度も実行されます。
  • 条件が満たされず、False(または「False」)が返されるとすぐに、オペレーターはループを終了します。
  • これが発生するとすぐに、プログラムはサイクル後の構造に「移行」しました。

これは、WhileとRepeatの大きな違いです。つまり、事前条件と事後条件のループです。

ファイナルを提供することは非常に重要ですWhileヘッダーの指定された変数を変更します。いずれにしても、いつか値がFalseになる状況が発生するはずです。そうしないと、無限ループが発生し、コンパイラーを終了するために追加の手段を使用する必要があります。そのような間違いは重大で許されないものと見なされます。

ループ中にプログラムを終了するにはどうすればよいですか?

多くの場合、オペレーターがPascalは、書き込まれたプログラムコードで無限ループを生成します。これは何を意味するのでしょうか?条件は常に真であるため、反復は無限に繰り返されます。たとえば、以下はプログラムスニペットです。

  • 2> 1の場合、
  • 書き込み(1)。

この場合、タスクの実行を中断するには、CTRL + F2を押します。

これを制御するには、さらに2つの方法があります。プログラムの動作。たとえば、Continueをコードに書き込むと、ループ構造の先頭に制御が移ります(ここでは、ループを終了するための条件が制御されます。つまり、現在の反復の実行が中断されます)。その後、Whileループで前のチェックに制御が渡されます。

Breakステートメントは、すべての実行を中断することができますループし、制御を次の反復に移します。構造物からの出口はここでは監視されません。画像は、これらの演算子の使用例を示しています。

一方でパスカルステートメント

問題を解決する

Whileループの動作を見てみましょう。パスカルは、最も多様な問題を解決するために提供しています。動作原理を理解するために、今のところ最も単純なものについて考えましょう。 Pascal ABCプログラムで解決されたタスク。ただし、比較のために、従来のTurbo Pascal環境の画像も表示されます。

演習1: 関数Y = 5-X ^ 2/2の場合。間隔[-5; 5]でステップsh = 0.5の値のテーブルを作成します。

アクションのアルゴリズム:

  • X変数を初期値-5(つまり、間隔の開始)に設定します。
  • 変数xが指定されたセグメントの終わりに達するまで、Yの値を計算します。
  • 関数の値と横座標(X)を表示します。
  • 与えられたステップでXを増やします。

これは、Pascal ABCでのコードの外観です。

パスカルタスク中

Turbo Pascalでのコードの外観。以下の画像はこれを示しています。

パスカルタスク中

課題2: 正の整数で構成される配列Aが与えられ、負の数。 10個の要素が含まれています。偶数のインデックスを持つ配列Aの正の要素が表示される行列Bを形成する必要があります。新しい行列の数値の平方和を表示します。

アクションのアルゴリズム:

  • 偶数のインデックスを持つ配列Aの要素でのみ「機能する」サブルーチンを作成する必要があります。ループでは、インデックスのパリティを担当する変数の値が2ずつ増加します。
  • 行列Aのインデックスが偶数の場合条件x> 0に対応し、配列要素のカウンターが1ずつ増加します。カウンター変数の現在の値は、配列Bにコピーされた数値のインデックスになります。
  • 最初に、正の数の平方の合計を求める変数summaに0が割り当てられます。次に、演算が実行されます。平方の新しい値が前の合計に追加されます。
  • すべてが肯定的でなくても怖がらないでくださいある行列から別の行列に渡される数値。あなたは注意する必要があります。多くの初心者プログラマーがパニックでコードを書き直します。条件を注意深く検討する必要があります。「場所」でさえある、つまり2の倍数のインデックスを持つ正の数です。

一方、パスカルabcループ

計算が正しいことを確認するには、手動トレースが不可欠です。場合によっては、この方法を使用して、書かれたコードの定期的なチェック中に目を引かないエラーを特定できます。

一方、パスカルabcループ

手動計算を実行すると、プログラムが正しく動作していること。これは、コードを作成するためのアルゴリズムが正しいことを示しており、一連のアクションは論理的な終わりにつながります。