第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);
}

実行結果
o

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
が計算されてみます。



そして、実行結果
o
となります。


それでは、問題を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話へ


a

魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ