忍者ブログ
RoboCup Junior Japan Rescue Kanto OB

             2005~2013
[243]  [242]  [241]  [240]  [239]  [238]  [237]  [236]  [235]  [234]  [233
最後に残ったC言語の主な条件文がこのswitch文です。

ちょっと前に紹介したif文の派生系みたいなものでしょうか。

基本的なswitch文のプログラムはこんな感じになります。


#include <stdio.h>
int main(void)
{
     int x;
     printf("数字を入力してください。");
     scanf("%d",&x);

     switch(x){
  
       case 1:
       printf("入力された数字は1です。/n");
       break;

       case 2:
       printf("入力された数字は2です。/n");
       break;

       case 3:
       printf("入力された数字は3です。/n");
       break;

      default:
       printf("1、2、3以外の数が入力されました。/n");
      }

     return 0;
}


数字を入力し、それが1か2か3だったら「入力された数字は~です。」と出力し、

それ以外の数字なら、「1、2、3以外の数が入力されました。」と出力するプログラムです。

switch文はこのようにcaseというものとセットで使います。

switchのカッコ内に入れた値とcaseと:の間に入れた値が等しければ、

それ以下のプログラムを実行するようになっています。

なのでxの値が1ならcase1以下の文を、2ならcase2以下の文を、3ならcase3以下の文を、それぞれ実行します。

xの値がcaseのどれにも該当しない場合はdefault以下の文を実行することになります。

このdefaultは省略することもできます。

そして最後にbreak;をつける。これがswitch文の定型となります。(defaultには無くても良い)


このbreak;という文ですが、これはbreak文といって、これもひとつの構文になっています。

これはどういう命令かというと、「一番中側の中括弧から抜ける」命令です。

例えばさっきのswitch文ですが、

あのプログラムでは例えば、case1のときの処理とcase2の間にbreakがありました。

あのプログラムだと、case1の処理が終わったら、breakを使って、switch文の中括弧から抜け出ているのです。

もしあそこでbreakをいれなかったら、xの値が1だったときに

case1の処理を行った後でcase2の処理を行ってしまうことになります。

もっと単純な例を出すと、whileでの無限ループの例、

int x=0;
while(1){
     if(x==100)
           break;
     x++;
}

このようなプログラムがどこかにあったとします。

これはwhile文で無限ループをしていますが、xが100になると、if文に入って、breakします。

つまり、このwhileループを抜けでるのです。

このようにbreakはswitch文以外でも、様々な条件文で使用することができます。


「一番中側」という定義があるのは、

こういった場合は、永遠にループから出られないということです。

int x=0;
while(1)
{
      while(1)
      {
           if(x==100)
            break;
      x++;
      }
}

中側のループはbreakで出られますが、直ぐ外側のループによってまた戻ってしまいますからね。


このような文がbreak文です。似たようなもので、continue文というものがあります。

これはbreakと逆で、ループの一番最初に戻ると言う構文です。

なのでプログラム内で、これがあれば、一番中側の中括弧の部分の一番最初に戻ると言うわけです、

つまりこれも無限ループです。


#include <stdio.h>
int main(void)
{
     int x;
     printf("数字を入力してください。");
     scanf("%d",&x);

     switch(x){
  
       case 1:
       printf("入力された数字は1です。/n");
       continue;

       case 2:
       printf("入力された数字は2です。/n");
       continue;

       case 3:
       printf("入力された数字は3です。/n");
       continue;

      default:
       printf("1、2、3以外の数が入力されました。/n");
      }

     return 0;
}

最初に1,2,3以外の数字を入力しないと、無限にループします。

コンパイラによってはこれだとエラーがでるかもしれませんけど・・・

こっちはbreakと違って、結構使いどころが限られそうな構文ですね。


とりあえず今日はswitch文とbreak文とcontinue文についての紹介でした。


次は・・・フリプロセッサかなぁ。まぁなにかしら紹介すると思います。


それでは今日はこの辺で・・・


(^・ω・)ノ RadiumProduction in RoboCup Junior
Comments
※コメントは内容確認後に手動で公開するようにしております。反映までしばらくお待ちください。
Your Name
Title
color
Comment
 

カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
最新CM
[05/09 ONE RoboCuper]
[05/07 HDD ほしいよー]
[04/21 ブラック3辛]
[12/26 bols-blue]
[06/08 ONE RoboCuper]
かうんた
カウンター カウンター
らじぷろ目次
らじぷろ検索機
プロフィール
HN:
Luz
性別:
男性

PR

忍者ブログ 2007-2021,Powered by Radium-Luz-Lα+-Rescatar in RadiumProduction [PR]


Related Posts Plugin for WordPress, Blogger...