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

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

またまた処理を分岐する switchPHPで翻訳三昧
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark
Bookmark this on 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

トラックバック:0

この記事のトラックバック URL
http://beatnik.jp/blog/archives/8/trackback
トラックバックの送信元リスト
またまた処理を分岐する switch - PHPで翻訳三昧 より

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

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

ページの上部に戻る