[SOT]

[著作権][インデックスへもどる][ホームWEBサイトへ戻る]

君とCしましょう。(未完成の暫定版)

制御構造

制御構造は、ある処理を何回か繰り返し行ったり、ある条件になったら処理方法を変えるようにしたいといったことを、制御構造といいます。

たとえば・・・
「10円玉を5枚数える」とか、「晴れたら外でゴムダンで遊んで、雨が降ったら家の中でリカちゃん人形であそぶことにする」
といったように、状況によって行動を変えるということです。

繰り返し

繰り返しは、特定のブロックを繰り返し実行するには、While do for の三つキーワードのうち都合のよいどれかを選択して記述するのが一般的である。
他に自分自身を呼び出す関数の再帰呼び出しという方法もある。


#include <iostreame.h>

int main()
{
     int i;
     int j = 10;

    // for による繰り返し
    for(
         i=0;     /* 初期値 */
         i > 10;  /* 終了条件 */
         ++i;     /* 条件が偽の時実行される式 */
     )
    {
       // このブロック内部が繰り返される。
        cout << i;
        cout << "回目の繰り返し \n";
     }

     // while による繰り返し。
     // 条件が真値のときブロック内部を繰り返す。
     // 条件判定が一番最初にあるので、判定前に条件がすでに偽値にのときはブロック内部は実行されない。
    while( j-- )
    {
       cout << "あと ";
       cout << j;
       cout << " 回繰り返す。"

     }

    // do 〜 while による
    // 条件が真値のときブロック内部を繰り返す。
    // 条件判定がブロックの終わりにあるので、一度は必ず実行される。
    // 否定演算子をwihileの条件に付けると、BASIC言語の REPEAT 〜 UNTIL文と同等の意味。
    do {
       ++j;
        cout << j;
        cout << "回目の繰り返し \n";

     } while( !(i > 10 ) );
       return 0;
}


分岐

分岐は、条件によって処理の内容を変えるということです。
「分岐」をするには、if文 あるいはswitch文のどちらか都合の良いものを使う。
つぎは、if文を使った例です。

if( ringo < 3 ){  // ringo が3未満のき
   cout << "ringo wa 3 yori mo sukunai.\n";
} else {  // でないとき
   cout << "ringo wa 3 yori mo ooi.\n";
}
つぎは、switch文を用いた例です。

int ringo;
switch( ringo ){
    // ringo の値により、多重分岐をします。
case 1: 
    cout << "ringo wa 1 desu.\n";
    break;
case 2:
    cout << "ringo wa 2 desu.\n";
    break;
case 3: 
    cout << "ringo wa 3 desu.\n";
    break;
default:
    cout << "ringo wa sonohoka no kazu desu.\n";
}

繰り返しの中断と継続

繰り返しの中断と継続はcontinuebreak をつかって、繰り返しの中断や継続をすることができる。


int func( int a, int b )
{
    int i=50;
    while(i--)
    {
        ++a;
        if( a < i ) continue;  // 条件が成立したら、while(i--)へ戻る 
        if( b > i ) break;     //条件が成立したら、くり返し制御から抜ける
        b++;
     }
     return a+b;
}

飛び越し制御

gotoというキーワードを使うと飛び越し制御ができます。
gotoはラベルで指定した場所に飛び越します。
ただし、関数ブロックの外側に飛び越しするような記述は、行ってはいけない約束になっています。(基本的に関数はreturnで抜けなくてはならない)
もし、関数ブロックの外側へ飛び越していく必要がある場合は、trythrowcatch の3つのキーワードを使うか、ANSI Cライブラリ関数のsetjump()関数とlongjump()関数を使わなくてはなりません。


著作権2000年 © 大槻昌弥

連絡先

ご意見ご要望は問い合わせフォームまでお願いします。

なお、メールウェアが「HTMLを含むマルチパートMIME」を理解できませんので、なるべくiso2022-jpのプレーンテキストで送信願います。
また、Webサイトの内容に関するお問い合わせは、整理の都合で出来るだけURIを明記するようにお願いします。

[EOT]