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

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

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

目次

while
動作確認
練習
レッスン12では?

while

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

while 条件 do
  処理;

意味:条件を満たす間、処理を繰り返し行う。

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

例えば、

while x<10 do
  x:=x+1;

は、x<10である間、x:=x+1を実行します。x:=x+1によりxの値は1つずつ増えていき、いつかはxの値は10以上になりますので、whileの処理はいつかは終わります。しかし、

x:=9;
while
x<10 do
  y:=y+1;

では、いつまでたっても、xの値が10以上になりませんので、y:=y+1の処理を永遠に続けてしまい(あるいはエラーを表示して異常終了したりします。)、正しくありません。whileの条件はいつかは満たされなくなることを確認しておきましょう。

Q&Aコーナー

Q:repeatというのがあり、whileに似ていると聞きました。どのように違うのですか?
A:ここをクリック。

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

  1. program kurikaeshi5;
  2. var a,b:integer;
  3. begin
  4.   a:=5;
  5.   b:=0;
  6.   while a>0 do
  7.   begin
  8.      a:=a-1;
  9.      b:=a+b;
  10.   end;
  11. end.

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

プログラム説明

6〜10行目のwhile文で、a>0の間、8行目と9行目を処理します。

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

動作確認

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

a>0をa=0に変更
a>0をa<10に変更(→プログラムが終了しません。)

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

練習

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

練習コーナー1

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

 

練習コーナー2

問題:下のプログラムでは、最終的にxの値はいくつになりますか?
  1. program kurikaeshi7;
  2. var x:integer;
  3. begin
  4.   x:=-5;
  5.   while x<0 do
  6.   begin
  7.      if x=-1 then
  8.         x:=x-2
  9.      if x<>-1 then
  10.        x:=x+4;
  11.   end;
  12. end.
解答例:ここをクリック。

 

練習コーナー3

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

レッスン12では?

コンピュータは、たくさんのデータを取り扱います。データを取り扱うにはそれぞれに対応した変数を用意します。しかし、これは手間がかかります。同じようなたくさんの変数を一度に用意する方法に配列があります。次のページでは、配列について説明します。

[レッスン12へ]


TitleLineAnim.gif (2453 バイト)

Ln769.gif (641 バイト)

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