mj0444.gif (2441 バイト)ASCAmj0440.gif (2248 バイト)  mj0455.gif (2586 バイト)  DAmj0440.gif (2248 バイト)mj0444.gif (2441 バイト)mj0436.gif (2656 バイト)mj0437.gif (1789 バイト)

レッスン10:繰り返し文:for文

人間は同じことを繰り返すのは、飽きてしまって、不得意ですが、コンピュータは、飽きもせず同じことを繰り返してくれます。この繰り返し処理をこのページで説明します。

目次

for文
動作確認
練習
レッスン11では?

for

forは、ある変数をある範囲で1つずつ変えながら、ある処理を繰り返します。次のように書きます。

for 変数:=初期値 to 終了値 do
  処理;

意味:変数の値を初期値にし、処理を行う。次に、変数の値を1つ増やし、処理を行う。変数の値を1つずつ増やしながら処理を行い、変数の値が終了値よりも大きくなるまで、繰り返す。

:=、todoの前後の空白は、いくつ入れてもかまいません。また、複数の処理を繰り返したいときは、複数の処理をbeginendで囲んでブロックにします。

例えば、

for a:=10 to 20 do
  x:=x+1;

は、aの値を最初10にしてx:=x+1を実行し、次にaを1つ増やし11にしてx:=x+1を実行し、...(途中省略)...、aを1つ増やして20にしてx:=x+1を実行します。aをさらに1つ増やすと21になり、終了値よりも大きくなりますので、繰り返し処理を終わります。

Q&Aコーナー

Q:下のような、forの処理の中にifがあるようなプログラムは正しいですか?
    for x:=1 to 5do
    begin
       if x>3 then
         x:=x+1;
      x:=x-1;
    end;
A:ここをクリック。

 

次のようなプログラムをみてみましょう。

  1. program kurikaeshi1;
  2. var x,y,z:integer;
  3. begin
  4.   y:=10;
  5.   z:=-10;
  6.   for x:=1 to 3 do
  7.   begin
  8.      y:=x;
  9.      z:=z+1;
  10.   end;
  11. end.

[注意]左端の番号は、プログラムの一部ではありません。各行を区別するために付けた番号です。

プログラム説明

6〜10行目のfor文で、xの値を1から3まで変えて、8行目と9行目を実行します。

最終的に、yとzの値がいくつになるか、予想してみてください。その予想が当たっているかを、下の動作確認で調べてください。

動作確認

それでは、上の例の動作確認をしてみましょう。また、自分なりにプログラムを変更して、動作確認をしてみましょう。動作確認をする前に、Internet Explorerの設定をちゃんとしているか調べてください。

Pascalシミュレータによる動作確認
[注意]このリンク先のページはInternet Explore 3.0以降で正しく表示されます。

練習

for文に慣れてもらうために、少し練習しましょう。

練習コーナー1

問題:次のプログラムでは、最終的にy,zの値はいくつになりますか?
  1. program kurikaeshi2;
  2. var x,y,z:integer;
  3. begin
  4.   y:=10;
  5.   z:=-10;
  6.   for x:=1 to 3 do
  7.   begin
  8.      y:=x+10;
  9.      z:=y+20;
  10.   end;
  11. end.
解答例:ここをクリック。

 

練習コーナー2

問題:上のQ&Aコーナのプログラム(下に再掲)では、最終的にxの値はいくつになりますか?
  1. program kurikaeshi3;
  2. var x,y:integer;
  3. begin
  4.   y:=10;
  5.   for x:=2 to 5do
  6.   begin
  7.       if x>3 then
  8.          y:=y+1;
  9.       y:=y-1;
  10.   end;
  11. end.
解答例:ここをクリック。

 

練習コーナー3

問題:下のプログラムでは、最終的にzの値はいくつになりますか?(複雑ですので、理解しにくくても心配ありません。学習を続けていけば、じきに理解できるようになります。)
  1. program kurikaeshi4;
  2. var x,y,z:integer;
  3. begin
  4.   z:=0;
  5.   for x:=1 to 3 do
  6.      for y:=1 to 2 do
  7.        z:=z+1;
  8. end.
ヒント:xの値を1にして6〜7行目を処理します。次に、xの値を2にしてまた6〜7行目を処理します。次に、xの値を3にしてまた6〜7行目を処理します。すなわち、6〜7行目が3回繰り返されます。6〜7行目でのforでは、7行目を2回繰り返します。全体としては、7行目は3×2=6回繰り返されます。

解答例:ここをクリック。

レッスン11では?

繰り返す命令として、whileがあります。次のページでは、whileについて説明します。

[レッスン11へ]


TitleLineAnim.gif (2453 バイト)

Ln769.gif (641 バイト)

このページの最終更新日は 99/03/20 です。
掲載責任者・ページ作成者: (c)板谷雄二(itaya@alice.asahi-u.ac.jp)