インターネットエクスプローラで学ぶC言語(入門編)

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

このレッスンで学ぶことは?
人間は同じことを繰り返すのは、飽きてしまって、不得意ですが、コンピュータは、飽きもせず同じことを繰り返してくれます。この繰り返し処理をこのページで説明します。
クイックジャンプ: 形式 |  | 動作確認 | 練習 | 次のレッスンでは?

形式
forは、繰り返しを行いたいとき使う命令です。次のように書きます。

for (代入文1, 条件, 代入文2)
  処理;

意味:まず、「代入文1」を実行します。「条件」が満たされなくなるまで、「処理」と「代入文2」を繰り返します。
注意:「代入文1」、「条件」、「代入文2」は「 , 」(コンマ)で区切ります。また、「代入文1」、「条件」、「代入文2」の前後に空白をいくつ入れてもかまいません。複数の処理を繰り返したいときは、複数の処理を「 { 」と「 } 」で囲んでブロックにします。

 例えば、
  for (a=10;a<=20;a=a+1)
     x=x+1;
は、aの値を最初10にしてx=x+1を実行し、次にaを1つ増やし11にし、条件a<=20を満たすのでx=x+1を実行し、...(途中省略)...、aを1つ増やして20にし、条件を満たすのでx=x+1を実行します。aをさらに1つ増やすと21になり、条件a<=20を満たしませんので、繰り返し処理を終わります。
 上のforでは、aが21になるまで処理をつづけるのですから、
  for (a=10;a<21;a=a+1)
     x=x+1;
と同じ処理になります。

Q&Aコーナー

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

例
プログラム

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

  1. void main(void)
  2. {
  3.   int x,y,z;
  4.   y=10;
  5.   z=-10;
  6.   for(x=1;x<=3;x=x+1)
  7.   {
  8.      y=x;
  9.      z=z+1;
  10.   };
  11. }

プログラム説明

 6行目10行目for文で、xの値を1から3まで1つずつ増やしていきながら、8行目9行目を実行します。
 最終的に、yとzの値がいくつになるか、予想してみてください。その予想が当たっているかを、下の動作確認で調べてください。

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

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

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

練習1

問題: 次のプログラムでは、最終的にy, zの値はいくつになりますか?
  1. void main(void)
  2. {
  3.   int x,y,z;
  4.   y=10;
  5.   z=-10;
  6.   for(x=1;x<=3;x=x+1)
  7.   {
  8.      y=x+10;
  9.      z=z+20;
  10.   };
  11. }
解答例: ここをクリック。

 

練習2

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

 

練習3

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

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

次のレッスンでは?
for以外の処理を繰り返す命令としてwhileがあります。次のレッスン11では、whileについて説明します。[レッスン11へ]


TitleLineAnim.gif (2453 バイト)
http://or-lab.asahi-u.ac.jp/

このページの最終更新日は 00/01/25 です。
このページに関するご意見・コメントは板谷雄二(itaya@alice.asahi-u.ac.jp)までお願いします。

(C) 板谷雄二