繰り返しの構文に使われるC言語の命令は、次の通りで、英語の意味を書いておく。
for |
〜の間 |
do |
する(C言語では命令形と考える) |
while |
〜する間 |
continue |
続ける |
break |
遮断する |
繰り返しの回数が予め分かっているときに、しばしば使われる
for文を説明する。
「初期値は○○、条件式が正しければ、ループを繰り返し、条件を再設定する。これは、
条件式検査
ループ
条件の再設定を繰り返す。条件式が誤りに
なれば、そのループから抜け出す」という構文に使われる。これは、次のように、書く。
書式 |
---|
for(初期値設定式; 継続条件式; 再設定式){
文1;
文2;
文3;
}
|
これは、「継続条件が正しい限り、文1と文2、文3を実行する」となる。もし、制御式が誤り
(偽)であれば、これら文は実行されず、ブロックの外側に出る。図
2にこの
構文のフローチャートを示す。
以下のようなプログラムが、この構文の使用例である。
for(a=1; a<=100; a++){
printf("a=%d\n",a);
sum=sum+a;
printf("sum=%d\n",sum);
}
この構文の実行直前まで、
sum=0ならば、1〜100までの和を計算することができる。
見慣れない
a++は、
a=a+1と同じで、
aの値を1増加させている。これをイ
ンクリメントと言う。
構文の内容は、次の通りである。
- 初期値として、「a=1」と設定する。
- もし、aが100以下ならば、
- 「a=値」と表示する。
- 「sum+aを計算し、その結果をsumに代入」を実行する。
- 「sum=値」と表示する。
- 「aの値を+1増加」を実行する。
- 一つ前の、アイテム「もし、aが100以下ならば」に戻る。
これも、
for文同様、前判定繰り返しであるが、予め繰り返し回数が分からないとき
には、
while文が使われることが多い。「条件式が正しければ、ループ繰り返す。条件式が誤
りになれば、そのループから抜け出す」という構文に使われる。次のように、書く。
書式 |
---|
while(継続条件式){
文1;
文2;
文3;
}
|
これは、「継続条件が正しい限り、文1と文2、文3を実行する」となる。もし、制御式が誤り
(偽)であれば、これら文は実行されず、ブロックの外側に出る。図
にこの
構文のフローチャートを示す。
以下のようなプログラムが、この構文の使用例である。
while(sum<=10000){
sum=sum+n;
printf("n=%d\n",n);
n++;
}
この構文の実行直前まで、
sum=0かつ
n=1ならば、
sum |
|
を計算する。ただし、この繰り返し文を抜けたときには、
sumの値は10000を越えている。
構文の内容は、次の通りである。
- もし、sumが10000以下ならば、
- 「n=値」と表示する。
- 「sum+nを計算し、その結果をsumに代入」を実行する。
- 「n=値」と表示する。
- 「nの値を+1増加」を実行する。
- 一つ前の、アイテム「もし、sumが10000以下ならば」に戻る。
これも、後判定繰り返しで、予め繰り返し回数が分からないときに使われることが多い。
「ループ内を実行し、継続条件式が正しければ、さらにループを繰り返す。条件式が誤り
になれば、そのループから抜け出す」という構文に使われる。次のように、書く。
書式 |
---|
do{
文1;
文2;
文3;
}while(継続条件式);
|
これは、「文1と文2、文3を実行し、継続条件が正しければ、これを繰り返す」となる。
もし、制御式が誤り(偽)であれば、ブロックの外側に出る。図
4にこの
構文のフローチャートを示す。
以下のようなプログラムが、この構文の使用例である。
do{
sum=sum+n;
printf("n=%d\n",n);
n++;
}while(sum<=10000);
この構文の実行直前まで、
sum=0かつ
n=1ならば、
sum |
|
を計算する。ただし、この繰り返し文を抜けたときには、
sumの値は10000を越えて
いる。
構文の内容は、次の通りである。
- 以下を実行する。
- 「n=値」と表示する。
- 「sum+nを計算し、その結果をsumに代入」を実行する。
- 「n=値」と表示する。
- 「nの値を+1増加」を実行する。
- もし、sumが10000以下ならば、一つ前の、アイテム「以下を実行する」に戻る。
do while文とwhil文の動作はよく似ているが、「最初から継続条件式が誤り」
の場合に違いが生じる。違いは、
do while |
最初から条件式が誤りでも、ループブロックを1回は実行する。 |
while |
最初から条件式が誤りの場合、ループブロックは実行されない。 |
である。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年9月10日