c++forwhile

「c++forwhile」の編集履歴(バックアップ)一覧に戻る

c++forwhile - (2012/05/31 (木) 17:22:34) のソース

*繰り返し文
繰り返し文とはある回数の数だけ処理を繰り返すときに用いる。
今回はメジャーな繰り返し文2つを挙げる。

**for文
 for([初期値];[条件式];[増減値])
 {
     [処理]
 }
上記が記述例である。初期値から増減値分の変化が起こり、条件式の条件の間、
処理を繰り返すという内容である。

繰り返し文として一番多く用いられるものだろう。実際の例を見てみる。

例)1~100までの総和を求めるプログラム
 #include<iostream>
 using namespace std;

 int main()
 {
     int sum=0;    //合計値
 
     for(int i=1;i<=100;i++)
     {
         sum=sum+i;    //sum+=i;でもおk
     }
     cout<<sum<<endl;
 
     return 0;
 }
上記プログラムでは
1から100までのループが回っている。このループの中で、合計値として用意した
変数sumにループの数値iを足して総和を求めている。

※forの中にint iと宣言している
ループを使うための変数なのでここで宣言している。C言語では許されない。
また、このiが有効なのはfor(){}の{}の中だけである。いわゆるローカル変数
なので、注意しないといけない。

※sum=iではダメなのか
ダメ。代入だけになるので最終的には100が代入されて100が出力される。
sumと足すことで今までの足した分と足すことができる。

**while文
 while([条件式])
 {
     [処理]
 }
記述例は上記。while文も同じく繰り返し文だが、記述方法が違うので注意。
また、処理の中に増減値を入れないと繰り返し文から抜けない。

for文と同じ例を用いて実際に書いてみる。

例)1~100までの総和を求めるプログラム
 #include<iostream>
 using namespace std;

 int main()
 {
     int i=1;      //ループで使う変数の初期値を宣言
     int sum=0;    //合計値
 
     while(i<=100)
     {
         sum+=i;
         i++;
     }
     cout<<sum<<endl;
 
     return 0;
 }
上記プログラムでは
for文と全く同じ内容の処理を行っている。ただし、宣言をしておかないと
いけないことを注意したい。増減値も忘れるとループは抜けないので
出力までたどり着かないだろう。

**無限ループ
ある処理を永遠に繰り返したい。そんなときに用いるのが無限ループである。
ACMの問題にはもちろん、実際のソフトウェアにも多く用いられる。
for文、while文のどちらでも可能であり、記述例を載せる。
 for(;;)
 {
     [処理]
 }

 while(1)
 {
     [処理]
 }
上記は2つとも無限ループとなる。無限ループは文字通り無限に処理を繰り返し
続ける。

***他
 break;
これはそのループから抜けたいときに使う。case文でも使ってた。
0が入力されたとき、プログラムを終了するといった
ある条件のとき、ある処理をするという感じで使うのが主。

 continue;
ループの処理を飛ばしたいときに使う。まあいつ使うねんというと
1 2 3 4 5
○ ○ ○ × ○
のような4だけすっ飛ばしたいときに
if文で数値が4のとき、continue;という感じで用いる。

do-while文というのがある。while文と似ているが大きな違いとして
while文では繰り返し処理をする前に条件式で判定を行うが、do-while文では
繰り返し処理が行われた後に条件式で判定が行われる。
つまり、最低限1回の処理が行われるということ。
 do
 {
     実行する処理1;
     実行する処理2;
     実行する処理3;
     ....
 }while([条件式]);

**練習問題
 問1)1~100までの総和を求めるプログラム
 問2)10の階乗を出力するプログラム
 問3)無限ループを用いて、入力するたび、その数値が0より↑か、0より↓かを判定するプログラム
 ただし、0の場合は0と判定してループを終了させる。