第10講 for文以外の繰り返し(ループ)処理
第1話 while文
この講では、for文以外のループ文のwhile文とdo while文を見ていきましょう。
まず、while文から。
while文とは、次の命令処理です。
while(条件式){
・
・
・
}
if文と同じで条件式が真のとき実施されます。
if文と違う点は、条件式が真である間は繰り返されるという点です。
while文は、for文と同じ繰り返し処理です。
例えば、次のようにプログラムを組むと、
#include<iostream>
using namespace std;
int f();
void main(){
cout<<"1から10までの和="<<f()<<endl;
}
int f(){
int i,w;
i=1;
w=0;
while(i<=10){
w=w+i;
i++;
}
return(w);
}
実行結果
1から10までの和
1+2+3+45+6+7+8+9+10
が計算されます。
つまり、
#include<iostream>
using namespace std;
int f();
void main(){
cout<<"1から10までの和="<<f()<<endl;
}
int f(){
int i,w;
w=0;
for(i=1;i<=10;i++){
w=w+i;
}
return(w);
}
と同じプログラムになります。
トレースしてみましょう。
i=1;
w=0;
より、
i<=10をクリアして、while文が実行されます。
w=w+i;
i++;
から
w=0+1=1
i=1+1=2
これで1回目の処理が終わります。
ここで、再び条件式i<=10の判定が行われますが、
i=2でもちろんクリアされ、2回目の処理が実行されます。
w=w+i;
i++;
から
w=1+2=3
i=2+1=3
2回目の処理が終わり、条件式i<=10の判定が行われクリアして、
3回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=3+3=6
i=3+1=4
3回目の処理が終わり、条件式i<=10の判定が行われクリアして、
4回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=6+4=10
i=4+1=5
4回目の処理が終わり、条件式i<=10の判定が行われクリアして、
5回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=10+5=15
i=5+1=6
5回目の処理が終わり、条件式i<=10の判定が行われクリアして、
6回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=15+6=21
i=6+1=7
6回目の処理が終わり、条件式i<=10の判定が行われクリアして、
7回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=21+7=28
i=7+1=8
7回目の処理が終わり、条件式i<=10の判定が行われクリアして、
8回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=28+8=36
i=8+1=9
8回目の処理が終わり、条件式i<=10の判定が行われクリアして、
9回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=36+9=45
i=9+1=10
9回目の処理が終わり、条件式i<=10の判定が行われクリアして、
10回目の繰り返し処理が行われます。
w=w+i;
i++;
から
w=45+10=55
i=10+1=11
10回目の処理が終わります。
そして、条件式i<=10の判定が行われますが、
今回は11<=10で条件式を満たしません。
これでwhile文は処理を終了します。
もう一度wとiの動きだけとりだしてみましょう。
ループ前
w=0
i=1
1回目
w=0+1=1
i=1+1=2
2回目
w=1+2=3
i=2+1=3
3回目
w=3+3=6
i=3+1=4
4回目
w=6+4=10
i=4+1=5
5回目
w=10+5=15
i=5+1=6
6回目
w=15+6=21
i=6+1=7
7回目
w=21+7=28
i=7+1=8
8回目
w=28+8=36
i=8+1=9
9回目
w=26+9=45
i=9+1=10
10回目
w=45+10=55
i=10+1=11
ここでi<=10は11<=10となり真ではないのでwhile文を抜けます。
となるのです。
確かに、
1+2+3+45+6+7+8+9+10=55
が計算されてみます。
そして、実行結果
となります。
それでは、問題を3つ出して第1話を閉じましょう。
① 1+2+3+・・・+100
② 2+4+6+・・+100
③ 2+5+8+・・・+98
が計算できるようにコード
#include<iostream>
using namespace std;
int f();
void main(){
cout<<"1から10までの和="<<f()<<endl;
}
int f(){
int i,w;
i=1;
w=0;
while(i<=10){
w=w+i;
i++;
}
return(w);
}
をそれぞれ変更してください。
第9講第10話へ 第2話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ