サイクル。パラメータ付きループ(for)


画面に同じ単語を表示する必要がある状況を想像してみてください。「HELLO」という単語を 10 回言ってみましょう。どうすればいいですか?
コマンドを 10 回取得して書き込むことができます writeln('HELLO');

しかし、10 回ではなく、20 回、30 回、40 回、200 回必要な場合はどうでしょうか。この場合、コピーには非常に時間がかかります。また、ユーザーが画面に情報を表示する回数を選択できる必要がある場合は? 

このタスクに対処するにはループ
と呼ばれる特別な構造を使用できます。
ループとは、特定のコマンド シーケンスが数回繰り返されるアルゴリズム構造です。


Pascal プログラミング言語には、変数によるループ (for) と条件によるループ (while) の 2 種類のループがあります

最初のタイプのサイクルから始めましょう。

変数または既知のステップ数 (for) を使用したループ

一部のアクションの繰り返し回数がわかっている、または既知のデータを使用して繰り返し回数を計算できることがよくあります。一部のプログラミング言語には、ロシア語で REPEAT (回数) のように聞こえるコマンドがあります。つまり、正確な繰り返し回数を指定できます。

このサイクルがマシン レベルでどのように機能するかを見るのは興味深いことです。
1. 特定のメモリ セルがメモリに割り当てられ、繰り返し回数が書き込まれます。
2. プログラムがループ本体を 1 回実行すると、このセル (カウンター) の内容が 1 つ減ります。
3. このセルがゼロになると、ループの実行が終了します。

プログラミング言語 Pascal にはそのような構造はありませんが、for 構造があります。  

for ループ ステートメントの一般的な形式は次のとおりです。 <プレ> for *開始値* から *終了値* を実行します 始める /*1 つのステートメントまたはステートメントのブロック - ループ本体*/; 終了; この構築には次のことが必要
です。 1. カウンタとなるメモリセルを明示的に割り当て、その初期値を設定する
2. このセルの値がどのように変化するかを指定します。
3. ループ本体が実行される条件が記述されました

実践編では、「Hello」という単語を 10 回表示してみます。次のタスクでは、この構造をより詳細に分析します。

for ループは、繰り返されるアクションをステップ実行する手段です。そのしくみを詳しく見てみましょう。

通常、for ループの一部は次の手順を実行します: 
1.初期値を設定します。
2.ループ変数が変化するステップの設定
3.終了値の設定。
3.ループ アクションを実行します。
4.テストで使用される値を更新します。 
条件が満たされるまで、手順 2 ~ 4 が繰り返されます。条件が false になるとすぐに、ループが終了し、for ループ ステートメントに続くステートメントが実行されます。

ループステートメントの一般的な形式に戻り、すべての部分をより詳細に分析しましょう <プレ> for *初期値を変数に設定* to/downto *end value* do begin /*1 つのステートメントまたはステートメントのブロック - ループ本体*/; 終了;

変数を初期値に設定する

サイクル変数 (カウンター) の初期値の設定を担当し、括弧などで強調表示されていません
例えば ​​: <プレ> 私:= 0; //サイクル変数 i にはゼロに等しい初期値が割り当てられます。そんな記録で、 //変数 i はループの前に宣言する必要があります to/downto <プレ> これは、ループで使用される変数が変化するステップです。に書き込むと、反復ごとに変数の値が 1 ずつ増加し、下にある場合は 1 ずつ減少します。 <プレ> 最終値 は、ループの本体がまだ実行される最後の値です。たとえば、最後の値を 100 に設定すると、100 ではループが実行され、101 では実行されません。 forループのタイトルを書く練習をしましょう

Pascal の for ループの先頭は、いくつかの部分で構成されます。
1) 単語のため
2) どの変数とどの値を割り当てるか。このプログラムでは、これは b := 1、つまりb に値 1 を代入します。
3) 単語to または downto 。ループが実行されるステップを示します。 to に書き込むと変数は反復ごとに 1 ずつ増加し、downto に書き込むと 1 ずつ減少します。
4) 変数の最終値
5) 単語
6)  begin  という単語 (ループ本体に 1 行しかない場合は省略できますが、それ以外の場合は必ず記述する必要があります。begin を記述しない場合は、最初の行のみが表示されます)ループ本体全体から実行されます)。ループ本体の後に忘れないでください。begin という単語を書いた場合は、 end; という単語を書きます。

これまでに作成した for ループを含むプログラムはすべて汎用とは言えません。ループ本体の繰り返し回数を自分で設定しているためです。
しかし、繰り返し回数が他の値に依存する場合はどうなるでしょうか?例えば、ユーザー自身がサイクルの繰り返し回数を設定したい。
この場合はどうすれば
良いのでしょうか? すべてがとてもシンプルです。数値の開始値と終了値の代わりに、ユーザーが計算または設定できる任意の変数を使用できます。

たとえば、ユーザーがキーボードから変数 n の値を入力した場合、1 から n までの数値の 2 乗を表示する必要があります。
プログラムは次のようになります。
  <プレ> 変数 i, n :整数; // ダッシュ中;ループ変数、n - 二乗を計算する最大数 始める 読み取り (n); // キーボードからnを入力 for i := 1 to n do // ループ: for all i from 1 to n - 変数 i は 1 から n までの値を順番に取得します writeln('クヴァドラ・チスラ', i, ' レイヴン', i * i); // 数値の 2 乗を特定の形式で出力し、新しい行に移動する 終わり。 ループに入ると、ステートメント i := 1 が実行され、ステップごとに変数 i が 1 (to) ずつ増加します。ループは、条件 i <= n が true の間実行されます。ループの本体では、唯一の出力ステートメントが、指定された形式に従って、数値自体とその四角形を画面に出力します。
二乗またはその他の低指数の場合は、乗算を使用することをお勧めします。

プログラムを実行し、変数 n のさまざまな値を使用した結果を確認します。