4.3 while 文

if 文やswitch 文は,処理の流れを分岐するための文でした.ここで説明するwhile文は探り返しを制御するためのものです.while文は次のように書きます.
図4.3 while 文
まず,式が計算されます.式が真(0ではない)とき,文が実行され,式が再び評価されます.このサイクルを式が0になるまで繰り返し続けられ,式が0となった時点でループを抜けて処理は文の後に移ります.
つまり,まず式を評価し,条件が満たされている間,繰り返し文が実行されることになります.実行する文が1つの場合はブロックにする必要はありません(ブロックにしてもかまいません).
例4.3

この例は,1から10までの整数の合計を求めるプログラムです. n が 0 より大きいとき sum += n; n--; が実行されます.

4.3 for 文

for 文は,while文と同様に繰り返しを制御するためのものです.for文は次のように書きます.
図4.4 for 文
for 文は,3つの式をもつ構文からなり,その制御はフローチャートのようになります.
まず,繰り返しを行う前に初期化式を実行します.次に条件式を実行し,その結果が真であれば実行文を実行します.条件式は繰り返しを行うかどうかの判断に使われます.ループ式は実行文が終わると実行され,条件式へ戻り,再び繰り返しの判定が行われます.
初期化式,条件式,ループ式はセミコロン ; で区切ります.
一般的に初期化式,ループ式は代入または関数呼び出しであり,条件式は関係式が使われます.
例4.4

この例は1から10までの整数の合計を求めるプログラムです.例4.3 と同じ内容です.while 文を for 文で書き直した形になっています.
この例の for 文では,まず,i = 1; が実行されます. 次に i <= n で i が n 以下の場合は sum += i; を繰り返し実行します.ただし,ループが実行される(su += i; が実行される)たびに ループ式 i++ が実行されます.よって,10回繰り返すことになります.さらに繰り返しの回数が i の値となっているので,ループ内をsum += i; とすることで1から10までの合計を求めることができます.

for ( i = 1; i <= n; i++ ) の部分は,

for ( i = n; i > 0; i-- ) と書き換えても同じ結果となります.

for ( ; ; ) は無限ループとなります.

4.4 do while 文

while, for 文では最初にループを実行するかどうかの判定を行っていますが,do while 文は,逆にループの中の実行文を実行した後に,繰り返しの条件判定が行われます.do while 文の書式とフローチャートを図4.4に示します.
図4.5 do while 文
まず,文1から文nまでが実行されます.次に式が計算されます.式が真のとき文1から文nまで実行され式が再び評価されます.このサイクルを式が偽になるまで繰り返し続けられ,式が0となった時点でループを抜けて処理は文の後に移ります.do while 文は,式が後で評価されるので,少なくとも1回はループが実行されます.
例4.5

この例も1から10までの整数の合計を求めるプログラムです.例4.3 と同じ内容です.

 練習問題4.3

1からnまでの整数において,奇数の和と偶数の和を求めるプログラムを作成せよ.
nは,標準入力から読み込まれた値とする.

 練習問題4.4

練習問題4.2で作成したクイズにおいて、正解を入力するまでその問題を繰り返すプログラムを作成せよ。ただし、問題は1題でよい。

練習問題4.5

身長と体重を標準入力から読み込み、BMI値および肥満の判定を表示するプログラムを作成せよ。

BMI値は、(体重 kg)/(身長 m×身長 m)によって計算される値。
この値によって以下(表1)のような判定となります。

表1 : BMIと肥満の判定

判定 やせ 普通
肥満
肥満度1 肥満度2 肥満度3 肥満度4
BMI値 18.5未満 18.5以上25未満 25以上30未満 30以上35未満 35以上40未満 40以上