c++forwhile


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

繰り返し文

繰り返し文とはある回数の数だけ処理を繰り返すときに用いる。
今回はメジャーな繰り返し文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と判定してループを終了させる。