RoboCup Junior Japan Rescue Kanto OB
2005~2013
2005~2013
最後に残った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
ちょっと前に紹介した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
カレンダー
最新CM
カテゴリー
らじぷろ目次
らじぷろ検索機
最新記事
(01/01)
(01/03)
(08/27)
(04/29)
(01/01)
(11/20)
(09/06)
(09/04)
(08/09)
(08/06)
(07/27)
(05/29)
(03/15)
(01/01)
(05/07)
プロフィール
HN:
Luz
性別:
男性
アーカイブ