/ /プログラミング。パラメータ付きループ

プログラミング。パラメータ付きループ

サイクルはターボパスカルの特別な場所を占めています。 画面上での情報の入出力のスキルを練習した直後から勉強を始めます。結局のところ、ほとんどのタスクは、パラメーターやその他の構造体でループするという事実に要約され、プログラムの特定のブロックの記述と操作を容易にするのに役立ちます。

パラメータ付きループ

サイクルの種類

合計で3つのタイプがあります。

  • パラメータ付き
  • 前提条件で、
  • 事後条件付き。

パラメータ付きのループ。それ以外の場合は、For ... to ...と呼ばれます。するか、または……に…。そう、特定の一連のアクションを何度も繰り返します。原則として、同じ目的で他の種類が使用され、forループでは事前にステップ数のみがわかっています。

他の2つの構成(WhileとRepeat)では、反復回数は最初は不明です。したがって、タスクを研究するときは、どのサイクルが使用されるかを理解する必要があります。

トピックの基本的な定義

パラメータ付きループ-繰り返し反復。カウンターは、特定の設計が実行される主な指標です。間隔の境界は、これらまたはそれらの反復が実行される制限を示します。ちなみに、初期値が1である必要はまったくありません。ユーザーは、間隔の両方の境界を個別に設定します。ループの本体は、繰り返し数がすでに定義されているコマンドのセットです。

「パラメータ付きループ」という用語は、この構造の場合、条件がチェックされ、その後、一連の反復が実行されます。カウンターが増加(または減少)し、すべてが繰り返されます。ループの本体は、条件が真である限り使用されます。

For…to…do:作業アルゴリズム、構文

すでに述べたように、パラメーターのあるループは、機能する「間隔」を指定するタスクで使用されます。したがって、数値、曜日、詩の行などの配列にすることができます。

構造には、カウンターを増やす方法と減らす方法の2種類があります。最初の構成は次のように記述されます。

ために out.variable := ボーダー1ボーダー2 行う

ベギン

ループ本体;

終わり;

ここに: ref。変数 プログラムまたはブロックの開始時にユーザーが宣言します。 ボーダー1とボーダー2 -間隔の初期値と最終値。に サイクル 必要ないくつかのアクションが規定されていますプログラムによって実行されます。ループの本体にコマンドが1つしか含まれていない場合は、演算子の括弧の開始…終了を省略できることに注意してください。このバージョンのデザインでは、カウンター、つまり<init.variable>は1に等しいステップで増加します。

ために out.variable := ボーダー1 至るまで ボーダー2 行う

ベギン

ループ本体;

終わり;

ここでref。変数は1ずつ増加します。

For…to…doパラメータを使用したループは次のようになります。

  • ギャップの上境界の値が設定されます。 ボーダー2.
  • ソース変数 パラメータ値が割り当てられます ボーダー1.
  • 状態がチェックされます: 参照変数≤境界2.
  • 結果を得るとき 本当本当)ループの本体が実行されます。
  • カウンターは1ずつ増加します。
  • 項目3〜5は、条件がtrueになるまで正確に実行されます。 ソース変数>境界2...これが発生するとすぐにループが終了し、この構成に続くコマンドに制御が移ります。

For ... downto ... doのアルゴリズムは、いくつかの点を除いて上記と同様です。

  • 3番目の段落では、条件がチェックされます。 参照変数≥境界2.
  • アルゴリズムの5行目で、カウンターは1ずつ減分されます。
  • 6番目の段落では、条件が満たされるまでコマンド3〜5が実行されます。 out.variable <境界2。

パラメータ付きループ

他のすべては両方の作業アルゴリズムで同じです。

パラメーター付きのループブロック線図

パラメーター付きのループは、次の形式のブロック線図を持ちます(既に上で説明されていますが)。また、構造の簡略化された構成も示しています。

パラメータのあるループは

パラメータ付きのサイクルの基本要件

パラメータを持つループには、特定の種類の条件が必要です。

  • カウンターとギャップの境界(例:ref。変数、border 1およびborder 2)は同じデータ型でなければなりません。セグメントの初期値と最終値と元の変数の間に互換性しかない場合、元のパラメーターのデータ型に従って境界が変換されるため、プログラムが正しく動作しない可能性があります。
  • パラメーター値が属すべきデータ型は整数でなければなりません。実際の型を使用することは非常に非推奨です。
  • ループの本体でパラメータout.variableの値を変更すると、強制的に望ましくありません。そうしないと、ユーザーは発生した可能性のあるエラーを追跡できなくなります。
  • 他のタイプのループとは異なり、For ... to ... doまたは ……に…行うステップは変更できない 1以外のパラメータに

Turbo Pascal:ループから抜け出す方法

しばしばあるタスクがありますループ、つまり、チェックされた条件は常に真です。ブレークプロシージャは、前提条件、事後条件、パラメータを使用してループから抜け出すのに役立ちます。つまり、彼らの仕事は予定より早く終了します。

Pascalパラメータ付きのサイクル(プログラミング条件の「永遠の」真実を前提としています)は、Continueを使用して停止できます。ここで作業は次のように構成されています。現在の反復はスケジュールより早く実行を終了し、制御は次のコマンドに転送されますが、ループを終了することはありません。

終了手順は、プログラムコード内のブロックの作業を完了します。プロシージャ(関数)内で呼び出されると同時に、この「ピース」の実行がすぐに停止します。 Exitがプログラムのメインブロックにある場合は、終了します。

Haltプロシージャは、動作原理を次のように減らします。プログラムの作業は完全に終了します。

ソリューションを伴うタスクの例

トピックを勉強した後のユーザーにとって便利です「Pascalのパラメーターを使用したループ」の例では、最初に学習し、次に自分でコードを書く練習をします。単純なタスクは、将来のプログラマーが実際に理論を学び、それをうまく適用するのに役立ちます。トピック「パラメーターのあるループ」では、ソリューションの問題の例を簡単かつ複雑に見つけることができます。作業のアルゴリズムを分析し、各ソリューションに説明とコメントを与える3つの問題を次に示します。

問題1

ランダムに選択された、[0..199]の範囲の自然数の2次元配列が与えられます。桁の合計が2の倍数であるすべての2桁の数字の数を求めます。

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

  1. 2次元配列を作成します。
  2. 条件の遵守について各番号を確認します。

a)9 <X <100の場合は、divを使用して全体を10で割ります。

b)modによる除算により、数値の2番目の桁を選択します。

c)強調表示された番号を追加します。

d)2で与えられた量をmodで割ります。

e)結果が0の場合、カウンターは1ずつ増加します。

パラメータのタスク例を含むループ

問題2

整数要素の1次元配列が与えられます。正の数を見つけます。

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

  1. randomizeで作成された整数要素の配列を作成します。
  2. 条件付きIFステートメントをパラメーター付きのループに挿入します。これにより、指定された要素が条件に準拠しているかどうかがチェックされます:X> 0。
  3. 条件が満たされた場合、カウンターは1ずつ増加します。
  4. サイクル後、結果のカウンター値を表示します。

括弧{}内のデータはコメント。 11行目では、配列を画面上に2つの方法で表示できます。数値の間にスペースを空けるか、各要素にこの数のセルを確保します(この場合は5つあります)。

12行目では、カウンター変数を2つの方法で増やすこともできます。前の値に1を加えるか、標準のInc.関数を使用します。

Pascalの例のパラメータ付きループ

問題3

正方行列が与えられます。主対角線上の正の要素の数を求めます。

説明:

数値の配列では、主対角は左上から右下へ。その特異性は、行と列のインデックスが同じであるという事実です。したがって、1つのループを編成して、残りの要素を経由せずにラインを移動するだけで十分です。

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

  1. 正方行列を作成します。
  2. 正の要素のカウントを担当する変数を値「0」に設定します。
  3. 正方行列を作成するためのサイクルを作成します。
  4. ループを編成して状態をチェックします。主対角線上の数値が0より大きい場合、カウンターは1ずつ増加します。
  5. サイクルの終了後、正の要素の数を格納する変数の値を画面に表示します。

パスカルパラメータプログラミングによるサイクル

2つのプログラミング言語の反対:CとTurbo Pascal

原則として、自尊心のあるプログラマーは知っていますいくつかの言語。たとえば、C ++、Turbo Pascal、Delphi、Javaなどです。これらの2つの間の対立は、80年代にはっきりと表現されました。 (Cおよびターボパスカル)。 20世紀の終わりに、C ++とJavaの間で同じ闘争が観察されました。

cのパラメーターでループ

三十ダースの仮想空間で3つの最も明るいプログラミング言語のペアがあり、その反対はサイバースペースの最高の心を驚かせました:Algol-60とFortran、PascalとC、JavaとC ++。もちろん、これらの感情は主観的ですが、いつか別のカップルのリーダーがリーダーでした。これは、業界の要求と特定のソフトウェア製品の必要性によるものでした。 70年代。 Fortranは80年代に「世界を支配した」-90年代にはターボパスカル-C ++。もちろん、「死んだ」人はいませんでした。むしろ、それらは改良されたソフトウェア製品に進化しました。

プログラミング言語を学ぶと、いくつかのトピックで構文が似ていることに気付くでしょう。したがって、Cのパラメーターを持つループは、いくつかの点を除いて、Pascalの同様の構造に似ています。

興味深いことに、Turbo Pascal(Oldライト)はアメリカの科学者の発展の結果を利用しましたが、新世界ではヨーロッパの専門家の研究の結果を積極的に利用しました。ヨーロッパでは、開発者はプログラミング言語の清潔さとコンパクトさをより強く主張しており、アメリカ人の心はコードを書く際に新しいトレンドを使用する傾向があります。