この章ではswitch文について説明します。
if文について説明しましたが、switch文もifと同じようなことを行うことが出来ます。
次の基本構文を見てください。
ではswitch文の例を見てみましょう。
先ほどのswitch文と同じことをif文で表すと次のようになります。
次の例に進みます。1つのbreakまでの間にcaseの値を複数設置して同じ処理を実行させる記述が出来ますので、以下の例を見てみましょう。
今までのcase文はbreakが1つに付き1つずつでしたが、case文を複数まとめて設置することが出来ます。
複数のcase文の内、どれか1つのcaseの値と合致した場合はその箇所の処理文を実行してbreakで抜けます。
次の例はswitch文に文字列を使用した例です。
次はgoto文の使い方について説明します。
タグ: switch
switch文で占いを判定しよう
この章ではswitch文で占いを作成します。
占いは毎回同じ判定では変なので、結果はランダムになるようにします。 初めにランダムな数をransuuに入れるのですが、このランダムな数を生成するにはrand関数を使用します。
rand関数は0か32767までの数字の中でランダムな数を返しますが、範囲を限定したい場合には例えばと書きますと1から6までのランダムな数を返すようになります。
0から6までの数値をランダムに返したいのならばと書きます。
しかし、このrand関数だけではプログラムを何回実行しても同じ結果にしかなりません。
これは乱数を初期化していないからです。
この乱数を初期化するにはsrand関数を使います。 srand関数は乱数の初期値を設定する関数です。
つまり、乱数に使う初期値を変える関数です。
例えばsrand(1)と書くと初期値が1、srand(2)と書くと初期値が2の乱数を導き出すことが出来ます。
では試しにを入れないで、rand関数を実行してみましょう。
この例の実行結果は以下の通りです。
ではもう一度実行してみましょう。
結果は以下の通りですが、1回目の結果と同じです。
rand関数はランダムに数値を導き出してくれますが、乱数になるのは1回だけです。 そこで違う乱数を導き出すためにsrand関数を使います。
次の例は先ほどの例にsrand(6)を追加しただけです。 結果は何度実行しても以下の通りです。
初期値を変えたので乱数の値は変わりましたが、この例のようにsrand関数の中の引数を固定した場合はいつまで経っても同じ値になります。
そこでsrandの引数にを使用します。
この中のtimeはtime関数で、1970年1月1日0時0分0秒からの経過時間を返します。
ですのでtime関数をsrandの引数に使うことで、その瞬間の時刻が引数に入りますので、その都度違う数値を引数に与えることができます。
time関数の引数はNULLにします。
time関数を使う時にはを記述する必要があります。
では占いの例に戻ります。
ransuuには0から6までの数値がランダムに入るので、それをswitch文で判断して、unsei変数に代入しています。
それを最後に出力します。
switch文を知ろう
この章ではswitch文について説明します。
if文と同じく条件分岐できるのがswitch文です。
switchのカッコ()の中の式が、caseの値と一致するとbreakまでの文が実行されます。
breakはブロックを抜けるために存在します。
ブロックとはif文でも出てきましたが、の部分です。
switch文の場合はbreakでswitchのブロックを抜けることが出来ます。
ではswitch文の例を見てみましょう。
先ほどのswitch文と同じことをif文で表すと以下のようになります。
次は仮にbreak文を記述しなければどうなるか説明します。
通常はcaseの値に一致した場合、それ以降の処理をbreakの箇所まで実行していきますが、 caseの値に一致したのに関わらずbreakがないと次のbreakまで 、もしくはbreakがどこにもなければdefaultまで処理が実行されます。
仮に上の例で入力したaの値が0だとすると、0はの値と一致するので
を実行して処理が終わるはずのところ、breakが無いがために、そこで止まらず抜けて行ってしまいます。
さらににも
にもbreakが無いのでそこの処理も実行されて、最後のdefaultまで実行されてしまいます。
つまりaの値が0の場合、以下のすべてが実行されることになります。
次の例を見てみましょう。 今まで、breakまでのcase文は1つだけでしたが、上の例のようにcase文はまとめて複数設置することが出来ます。
switchの式がbreakまでの複数のcaseの中でどれか1つのcaseの値と合致した場合はそこの処理文を実行してbreakで抜けます。
switch文について知ろう
この章ではswitch文について説明します。
if文については説明しましたが、switch文もifと同じようなことを行うことが出来ます。
switch文はカッコ()の中に条件判定させる式を記述し、比較したい値をの値の箇所に記述します。
(式)の値が値1であれば、「式が値1と同じ時に実行される処理文;」を実行して、値2であれば、「式が値2と同じ時に実行される処理文;」を実行して、値3であれば、「式が値3と同じ時に実行される処理文;」を実行して、どれにも当てはまらない時にdefaultの部分の「式がいずれの値にも違う時の処理文;」の所を実行します。
default:以下は必要がなければ省略することができますが何も一致するものが無かった場合にswitch文は何も行わず終了します。
の値が一致したときには
で抜けることができます(breakは付けなくてもエラーになりませんが、付けない時はどうなるかを後ほど説明します)。
breakは一連の流れを強制的に中止したい時に使うと覚えておいてください。
つまり、switch文の場合はswitchのブロックを抜けることになります。
では例をみてみましょう。 先ほどのswitch文をif文で書き直してみると以下のようになります。
次にbreak文が記述されていなかったらどうなるのかを説明します。
通常はswitch の(式)がcaseの値に一致した場合、それ以降の処理をbreakの箇所まで実行していきますが、caseの値に一致したのに関わらずbreakが無い場合は次のbreak もしくはdefaultの箇所まで処理が実行されます。
aの値が1ですので、breakがあればを実行して処理が終わるはずのところ、breakが無いがために、そこで止まらず抜けて行ってしまいます。
そして、最後のdefaultも実行されて処理を終了します。
結果はです。
では次の例を見てみましょう。 caseの値を複数設置して同じ処理文を実行させることが出来ます。
今までのcaseは1つずつでしたが、上の例のように複数まとめて設置することが出来ます。
式の値が複数のcaseの中のどれか1つのcaseの値と合致した場合はその処理文を実行してbreakで抜けます。 補足ですが、C言語ではswitchの
の値の部分には文字列は使えなかったですが、JavaScriptでは以下の例のように文字列も使用できます。
また、C言語では出来なかった「case b+c:」のような変数を使った式も使用できます。
switch文で占いを作ろう
この章ではswitch文で占いを作成します。Math.random()について説明します。
MathとはMathクラスを意味しますが、まだクラスの意味は説明していませんので、形だけを覚えてください。 Math.random()は0.0以上1.0未満のランダムな値を返しますので、double型の変数で受け取ります。
ではMath.random()の例を見てみましょう。 結果はその時の出力により毎回違います。
では今度は乱数を整数で受け取ってみましょう。
ランダムな値を整数で受け取りたい場合には
のように
でキャストをして、Math.randomに整数を掛けます。
10を掛けた場合には0から9までの乱数を得られます。
結果はint型変数で受け取ります。
占いの例では7を掛けているので、0から6までの乱数を得ることが出来ます。
キャストについては学習済みですが、復習してみましょう。
基本的には大きい型から小さい型への変換は禁止していますが、どうしても大きい型から小さい型へ変換したい場合はキャスト演算子を使って強制的に型変換を行う方法があります。
この例の場合にはdouble型の数値をint型に変えるのででキャストします。
キャストする対象が例のような式の場合にはカッコをのように付けてから、intでキャストします。
では例に戻りますが、kazuには0から6までの整数値がランダムに入ります。 例えばkazuが0の場合にはunmeiには大吉が入りますので以下の箇所で一致します。
そして、最後に以下の箇所で出力します。
占いの結果は毎回違いますので、以下のようになります。
switch文について知ろう
この章ではswitch文について説明します。
switch文はifと同じで条件分岐を行うことが出来ます。
switchはの式の部分に条件判定させる式を記述し、caseでは判定する値を記述します。
下の基本構文を見てください。 「switch (式 )」の式の値と「caseの値」が一致したときにはcaseからbreakまでのプログラムを実行します。
breakは一連の流れを強制的に中止したい時に使用します。
つまり、switch文でbreakを使うとswitchのブロックを抜けることになります。
ブロックとは「{」から「}」までの内容です。
ここで、注意してほしい事は「switch (式 )」の中の「式」は整数型の変数や式もしくはchar型の変数などを入れても大丈夫ですが、doubleや floatの変数や式、そしては入れることはできません。
では実際にswitch文の例を見てみましょう。 numberの値が1の場合は
以下の
を実行します。
numberの値が2の場合は以下の
を実行します。
numberの値が3の場合は以下の
を実行します。
numberの値が1、2、3以外の場合は以下の
を実行します。
結果はnumberは 3でと一致しますので、「3です」が出力されます。
先ほどのswitch文をif文で書き換えると以下のようになります。
switch文では文字列も判定することが出来ますので例をみてみましょう。
文字列の判定なのでcaseの値をダブルクォートで囲んでください。
switch文を知ろう
この章ではswitch文について説明します。
if文と同じく条件分岐できるのがswitch文です。
switchのカッコ()の中の式が、caseの値と一致するとbreakまでの文が実行されます。
次にbreakの意味について説明します。
breakはブロックを抜けるために存在します。
switch文の場合はbreakでswitchのブロックを抜けることができます。
つまり、式の値がcaseのいずれかの値と一致すれば文を実行して、breakにより抜けます。
ではswitch文の例を見てみましょう
例えば3を入力すると以下のようになります。
先ほどのswitch文と同じことをif文で表すと以下のようになります。
次は仮にbreakが記述されていなかったらどうなるか説明します。 caseの値に一致した場合、それ以降の処理をbreakの箇所まで実行していきますが、 caseの値に一致したのにも関わらずbreakが無いと次のbreakまで もしくはbreakがどこにもなければdefaultの箇所まで処理が実行されます。
仮に上の例で入力したaの値が0だとすると、0はの値と一致するので
を実行して処理が終わるはずのところ、breakが無いがために、そこで止まらず抜けて行ってしまいます。
さらに「case 1:」にもbreakが無いので、そこの処理も実行されて、結局は最後のdefaultまで実行されてしまいます。
次の例を見てみましょう。
今までのcase文は1つずつでしたが、上の例のようにcase文を複数まとめて設置することができます。
switchの条件文が複数のcaseの中でどれか1つのcaseの値と合致した場合は、そこの処理文を実行してbreakで抜けます。
switchで占いを作ろう
この例はswitch文で分岐して、占いを作成しています。 $numberには0から6までのランダムな数値が入ります。
その数値とcase文を比べて一致しましたら、$resultに結果が入り、その$resultをprint文で出力しています。
は「数値に関する関数を知ろう」で説明しますが、これは関数と言われているものです。
関数については「ユーザー定義関数について知ろう」で詳しく説明します。
ここでは関数について、少し説明します。
PHPの関数の仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
mt_rand関数は乱数を生成するという決められた処理を行い、乱数と言う結果を返します。 この例の場合には最小値が0で、最大値が6なので、0から6までのランダムな数値が$numberに入ります。
switch文を知ろう
この章ではswitch文について説明します。
if文と同じく条件分岐できるのがswitch文です。
「switch (式 )」の中のが
と一致するとbreakまでの文が実行されます。
つまり、以下のような動作をします。
「式」の部分が値1と一致すれば、式が値1と同じ時に実行される処理を実行して、値2と一致すれば、式が値2と同じ時に実行される処理を実行して、どれにも当てはまらない時にdefaultの部分の式がいずれの値にも違う時の処理を実行します。
「switch (式 )」の中のと
の中の値が一致したときにはbreakでswitch文を抜けることが出来ますが、breakは一連の流れを強制的に中止したい時に使用します。
switch文でbreakを使う場合にはbreakでswitchのブロックを抜けます。
また、の部分は整数、浮動小数点、文字列を使うことが出来ます。
switch はifと似た働きがあるので比べてみましょう。
if文もswitch文も$aの値が2の時にecho文が実行されます。
if文の場合は以下の箇所で一致します。
switch文の場合は以下の箇所で一致します。
結果はどちらも
です。
次はbreak文が記述されてなかった場合にどうなるのかを説明します。
では例をみてみましょう。
「式」の値がcaseの値に一致した場合、breakの箇所まで処理を実行していきますと説明しましたが、breakが無いと、次のbreakか もしくはbreak がどこにもない場合にはdefaultの箇所まで処理が実行されてしまいます。
上の例で説明しますとbreakがあるならば$aが2なので、の箇所の
を実行して処理が終わるはずのところ、breakが無いと、そこで止まらず下に抜けて行ってしまいますので、最後のdefaultまで実行されることになります。
ですので、この例の実行結果はと、なります。
次にcase文を複数設置する方法について説明します。
breakまでの間にcaseを複数設置して、同じ処理を実行させることが出来ます。
では例をみてみましょう。
このケースでは$rainには40が代入されていますので、switch文の中の以下の部分に合致しますので、結果はです。
でも
でも結果は同じです。