ホーム > プログラミング > またまた処理を分岐する switch

またまた処理を分岐する switch

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

if文で条件式を工夫すれば
思うように処理を分岐することは出来ますが、
ひとつの値によって処理を分岐するのなら
switch文 の方がスマートに書けたりします。

「天気」が「晴れ」ならば、「遠足に出発する。」
「天気」が「曇り」ならば、「傘を持参する。」「遠足に出発する。」
「天気」が「雨」ならば、「体育館でお弁当を食べる。」

例えば上記はいずれも「天気」の状態によってやることが違います。
if文だと、天気==’晴れ’ のような条件式をいくつも書き連ねるわけですが
switch文ならこんな感じになります。

switch ( 天気 )
{
case '晴れ':
    遠足に出発する;
    break;
case '曇り':
    傘を持参する;
    遠足に出発する;
    break;
case '雨':
    体育館でお弁当を食べる;
    break;
default:
    遠足に出発する;
    break;
}

先ずは始まりの印 switch
続けて対象となる式や値を括弧で挟みます。
大括弧({~})の中がこのswitch文の中身になります。

天気が晴れならば、case ‘晴れ’: に続く文が実行されます。
break; は、そこでswitch文を終える命令です。
break;が無い場合には、次の case の評価に処理が移ります。
天気が晴れでなければ、当然該当の文は実行されず
次の case の評価に処理が移ります。

default:は、途中break;によって
switch文を終えなかった時に実行される文を書きます。
必要なければ無くてもかまいません。

switch文の基本的な書き方

switch ( 式 )
{
case 値1:
    実行文1;
    break;
case 値2:
    実行文1;
    break;
case 値3:
    実行文3;
    break;
default:
    実行文4;
    break;
}

ここで、元の文章をちょっと整理してみます。

「遠足に出発しないのは、
天気が雨のときだけで、体育館でお弁当を食べる。
その他の天気の時は必ず遠足に出発する。
また、傘を持参するのは曇りの時だけ。」

書き方は違いますが、元の文章とほぼ同じ事を意味してます。
switch文においても、caseの順番とbreak;を
上手く組み合わせれば同じ書き方が出来ます。

switch ( 天気 )
{
case '雨':
    体育館でお弁当を食べる;
    break;
case '曇り':
    傘を持参する;
default:
    遠足に出発する;
    break;
}

先ず case ‘雨’:が評価され、天気が雨かどうか判断されます。
雨ならば「体育館でお弁当を食べる」ことになります。
ここにはbreak;があるので以降のcaseは
評価されることなくswitch文を終了します。

雨でなければ次の case ‘曇り’:が評価され、
天気が曇りかどうか判断されます。
曇りならば「傘を持参する」ことになります。
もちろん曇りでなければ次のcaseへ進みますが、
ここにはbreak;がないので、曇りの場合も次に進みます。

default:までくれば「遠足に出発する」ことになります。
ここでbreak;があるのでswitch文を終了します。

天気が晴れの場合がありませんが、
晴れならば、case ‘雨’: にも case ‘曇り’:にも合致することはないので
default:だけが評価され、遠足に出発することが出来ます。

このように書くことで、
「遠足に出発する」を何度も書かなくて済みますし、
case ‘晴れ’:を省略することもできました。
こうした使い方がswitch文の真骨頂といえます。

では、きちんと実行できるPHPのコードに翻訳してみましょう。

<?php
// 天気を初期化
$Weather = '曇り';

echo '天気が', $Weather, 'ならば、';

switch ( $Weather )
{
case '雨':
    echo '体育館でお弁当を食べる。';
    break;
case '曇り':
    echo '傘を持参する。';
default:
    echo '遠足に出発する。';
    break;
}
?>

これもifの時と同様、適当な名前をつけて保存し
ブラウザからアクセスしてみてください。
$Weather = ‘曇り’; を、’晴れ’や’雨’また他の値に書き換えて
switch文がどのように処理を分岐するか確かめてみてください。
行動こそ最大の師です。

* * *

switch文以外に登場した事柄について補足しておきます。

echo 値1, 値2, 値3, ・・・;
echoは後に続く値を出力(表示)しますが、
関数では無いので括弧で引数を囲む必要がなく、
値や変数を , で区切ることにより
それらを順番に出力(表示)することが可能です。

echo '天気が', $Weather, 'ならば、';
これは以下と同じ事です。
echo '天気が';
echo $Weather;
echo 'ならば、';

* * *

日本語まじりの妙なコードを書いてますが変なヤツではありません。

頭の中のアイデアをコードに変えていくプロセスが
プログラミングの最も楽しいところだと思います。
でも、私みたいに英語が苦手だと
プログラミング以前に英語でつまづいてしまいます。

ならば、いっそのこと日本語で書けばいい♪
アイデアをコードに変えるプロセスを楽しめれば
言語への理解も早いだろうと思ってのことです。

日本語・英語・プログラミング言語、どれも言語なわけで、
コンピュータにも、プログラミングにも、国境は無し。

次はループ ⇒ 繰り返す。ループだ for

コメント:0

コメントフォーム
入力した情報を記憶する
accessLogging

ホーム > プログラミング > またまた処理を分岐する switch

Ad
Apache
MySQL
PHP
お気に入り
ん。。。。。。広告
アーカイブ
Ad

ページの上部に戻る