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

レッスン11:繰り返し文(while文)

このレッスンで学ぶことは?
繰り返す命令として、while文があります。このページでは、whileについて説明します。
クイックジャンプ: 形式 |  | 動作確認 | 練習 | 次のレッスンでは?

形式
whileは、ある条件を満たしている間(ある条件を満たさなくなるまで)、処理を繰り返します。次のように書きます。

while (条件)
  処理;

意味:「条件」を満たす間、「処理」を繰り返し行います。

 「while」、「(条件)」の前後の空白は、いくつ入れてもかまいません。また、複数の処理を繰り返したいときは、複数の処理を「  { 」  と「  }  」で囲んでブロックにします。
 例えば、
  while (x<10)
     x=x+1;
は、x<10である間、x=x+1を実行します。x=x+1によりxの値は1つずつ増えていき、いつかはxの値は10以上になりますので、whileの処理はいつかは終わります。しかし、
  x=9;
  
y=0;
  while
(x<10)
     y=y+1;
では、いつまでたっても、xの値が10以上になりませんので、y=y+1の処理を永遠に続けてしまい(あるいはエラーを表示して異常終了したり)、正しくありません。whileの条件はいつかは満たされなくなるようにしましょう。

Q&Aコーナー

Q: do whileというのをみましたwhileとどのように違うのですか?
A: ここをクリック。

例
プログラム

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

  1. void main(void)
  2. {
  3.   int a,b;
  4.   a=5;
  5.   b=0;
  6.   while (a>0)
  7.   {
  8.      a=a-1;
  9.      b=a+b;
  10.   };
  11. }

プログラム説明

 6行目10行目while文で、a>0の間、8行目9行目を処理します。
 最終的に、aとbの値がいくつになるか、予想してみてください。その予想が当たっているかを、下の動作確認で調べてください。

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

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

練習
whileに慣れるために、少し練習しましょう。

練習1

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

 

練習2

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

 

練習3

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

次のレッスンでは?
コンピュータは、たくさんのデータを取り扱います。今までの知識でたくさんのデータを取り扱うには、1つのデータに対応して1つ変数を用意しなければなりません。しかし、これは手間がかかります。配列を使えば、同じようなたくさんの変数を一度に用意できます。次のレッスン12では、配列について説明します。[レッスン12へ]


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

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

(C) 板谷雄二