この章では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:」のような変数を使った式も使用できます。
タグ: if
条件分岐ifの基本構文3
条件分岐ifの基本構文2
この章でも条件分岐について説明します。
「条件分岐ifの基本構文1」ではfalseであるならばif文は実行されませんでしたが、条件式がfalseである場合にもif文を実行したい場合にはelseを使います。
つまりelseを付け加えることにより条件式1がfalseのとき(条件を満たしてない)に、elseのブロックを実行することが出来ます。 では例をみてみましょう。 if(a==2)がtrueであるならば
を実行します。
if(a==2)がfalseであるならば
を実行します。
結果は「false」です。
条件分岐ifの基本構文1
この章では条件分岐について説明します。
たとえば、生活の場面で誰しも、もし、今日財布にお金が1万円あったらフランス料理にして、2万円あったら中華料理にすると判断していますが、プログラムでもこのような表現ができるのです。
このように条件によって表現を変えることを条件分岐と言います。
条件分岐にはifを使うのですが、このifは英語での「もしも」と同じです。
では例をみてみましょう。 ifの基本構文は以下の通りです。 条件式が条件を満たしていればtrueを返し、条件を満たしていないならばfalseを返します。
そして、trueの時にif文が実行されます(true,falseについては後ほど説明します)。
「条件式が条件を満たしていれば」の意味は「変数bの15000は10000より大きい」ので、条件を満たしていると考えるのです。
その結果、「フレンチを食べる」が実行されます。
条件式には下の表のようにとか などをやのような比較演算子を使って表現します。 比較演算子とは比較を表す記号を意味します。
「a == b」と「a === b」の違いについて説明します。
a == bはaとbが違う型であるならば、どちらかの型に統一されて比較されます。
つまり、型の自動変換が起こります。
a === bはaとbが違う型でも型を自動変換することなく比べます。 aは整数型で、bは文字列型ですが、「a == b」では自動で型の変換が起こるのでtrueです。
「a === b」は型の変換をしないで比べるのでfalseです。
次の例をみてみましょう。 結果は「条件OK」です。
では何がtrueで、何がfalseなのかを見てみましょう。
この例では変数aは2より大きいので、条件を満たしているのでtrueになります。
逆に条件を満たしていないならばfalseになり、if文は実行されず無視されます。
trueのことを真といい、falseのことを偽ともいいます。
次の例の場合はどうでしょう。 結果は何も表示されません。
なぜかといいますとの部分が条件を満たしていないからです。
つまりfalseになり,ブロックの中が実行されません。
次の例を見てみましょう。 これまでは条件式に比較演算子を使ってきましたが、 のような書き方も出来ます。 この例の場合は条件式はtrueです。
変数aは1でtrueなので、文が実行されます。
JavaScriptのfalseは以下の通りです。
false以外の値はすべてtrueです。 Stringのはfalseではありません。
if文で星座を判定しよう
この章ではif文で星座の判定を書いてみましょう。
ユーザーに誕生月と誕生日を入力させて、それに対して星座を出力するプログラムです。
ここで使っているif文は入れ子になっています。
つまり、if文の中にif文が入っている構造になっています。
また、ユーザーに入力させるにはBufferedReaderクラスを使うのですが、BufferedReaderクラスの説明は「キーボードの入力の値を受け取ろう」の章で説明します。
では例をみてみましょう。
少し長いですが、if文が繋がっているだけです。 この章はif文の学習なのでBufferedReaderクラスやreadLineについては理解しなくても結構です。
BufferedReaderクラスについては「キーボードの入力の値を受け取ろう」の章で説明します。
ユーザーに入力してもらう仕組みは以下のBufferedReaderクラスが行います。
紙面の都合で2行で書いていますが、1行で書いても結構です。 さらにBufferedReaderクラスを使用するためにはブログラムの冒頭にと書きます。
importは他のファイルを取り込む時に使用します。
では次の箇所の説明をしますが、この章はifの学習ですので、この時点で理解する必要はありません。 =>この箇所はユーザーが入力したものをlineに代入しています。
つまり、この箇所でプログラムが入力待ちの状態になるので、好きな数値を入力します。
例えば以下の通り、1と、入力しますとこの1がlineに代入されます。
readLineは1行のテキストを読み込むという意味になります。
では次の箇所の説明をします。 =>この箇所はキーボードから入力したデータをint型の整数値に変換しています。
先ほど1という数値を入力したのに、なぜまたint型整数に変換しているのかというと、コマンドプロンプトで入力したのは実際には数値ではなく、という形式の文字列です。
ですので、この文字列を整数値に変換する必要があるのです。
int型の整数値に変換する方法は以下の通りです(これらはクラスやメソッドといわれるものを使用しているので、今は分からなくても結構ですが、構文は覚えておいてください)。 この例では2か所でreadLineを使って、誕生日の日と月を入力させています。
ではif文の説明に入ります。
これからif文の入れ子について説明します。
この例では外側のif文でmonthの数値が1から12までのどの数値なのかを確認します。
次に内側のif文で入力させたdayの値により分別をします。
例えば1月は山羊座か水瓶座なので,1月19日までが山羊座で、1月20日からが水瓶座になります。
ですので、入れ子の中の条件式は「&&」で連結して、という表現で書きます。 どれにも当てはまらない時には「間違い」が出力されます。
このように内側のif文は外側のif文での条件をさらに絞りたい場合に使用します。
つまり、入力された月は1月なので、さらに入力された日をもとに山羊座か水瓶座のどちらかを調べましょうと言うことです。
次は以下の説明ですが、この箇所は「例外処理について知ろう」の章で説明しますので、ここではわからなくて結構です。
簡単に説明しますと、ここは例外処理と呼ばれるものです。
つまり、この例では数字以外のものが入力されたらと出力されます。
例外処理は文字通り、数値以外のものが入力されたなどの予想以外の動作が行われた際の処理です。 今は例外処理を分からなくてもいいですが、構文を書いておきます。
詳しくは「例外処理について知ろう」の章で説明します。 これで星座判定の説明は終わりますが、
結果は例えば以下のように表示されます。
if文について知ろう3
if文について知ろう2
この章でもif文について説明します。
「if文について知ろう1」ではFALSEである場合はif文は実行されませんでしたが、条件式がFALSEである場合にもif文を実行させたい場合は、elseを使います。
つまりelseを付け加えることにより、条件式がFALSEのときにelse以下のブロックを実行させることが出来ます。 では例をみてみましょう。 この例ではifの条件式がFALSEなので、else以下のが実行されます。
次の例に進みます。 変数には有効範囲がありますが、変数の有効範囲はブロックの中のみです。
例えばこの例ではif文内でのように宣言と初期化を行っていますが、この変数aをifの外で、のように出力することは出来ません。
つまり、以下のようにエラーが出ます。 エラー表示の中に9という数値が出ていますが、これは9行目にエラーが出ていることを意味しますので、このようなエラーが出ましたら、この表示を参考にして直してください。
エラーはプログラムを書いていると必ず発生しますので、このエラーの行数を元に修正を行っていきます。
次は文字列同士が一致しているのかどうかを調べる方法について説明します。
比較したい変数や文字列をaの部分に書いて、bの部分にも文字列や変数を書きます。
以下のように文字列を直接書いて比較してもいいです。
文字列同士が同一であればTRUEを返し、異なればFALSEが返されます。
結果は文字列同士が同一なので「正しいです」が出力されます。
if文について知ろう1
この章ではif文について説明します。
例えば、日常の場面で今日、雨ならば家でDVDを見て、晴れならばデパートに買い物に行くと考えることがあると思います。
これをプログラム上で表現するためにはifを使います。
ifは英語でも使われていますね。
英語でifは「もしも」と言う意味ですが、プログラムのifも同じ意味です。 条件式は条件を満たしていればTRUEを返し、条件を満たしていないならばFALSEを返します。
そして、TRUEの時に条件式が実行されます。
TRUE, FALSEは後ほど説明します。
条件式には下の表のように比較演算子を使ってなどをやのような記号を使って表現します。
ではif文の例を見てみましょう。 結果は「40才です」になります。
if (number >= 20)の中の「>=」は比較演算子で以下の意味があります。 numberの値は40で、20より大きいので,条件式のはTRUEになり、以下の部分が実行されます。
では何がtrueで何がfalseか見てみましょう。
この例ではnumberは40で、20より大きく条件を満たしているのでTRUEになります。
40が20より大きいのは当たり前ですが、これが条件を満たしていると考えます。
逆にnumberが10であるならば10は20より小さいので条件を満たしていないので、FALSEになります。
falseの場合はif文は実行されず、無視されます。
このように条件を満たしていることをTRUE、条件を満たしていないことをFALSEと言います。
また、TRUEのことを真、FALSEのことを偽とも呼びます。
次は条件式がFALSEの例を見てみましょう。 初めの例との違いはint numberの値を10に変えただけです。
結果は何も表示されません。
なぜかと言いますとの部分が条件を満たしていないからです。
つまりFALSEになり,ブロックの中は実行されません。
では次の例に進みましょう。 boolean bにはの実行結果であるFALSEが入ります。
変数bの型はTRUEやFALSEが入るのでbooleanになります。
条件式がFALSEの場合にはif文は実行されないと覚えておきましょう。
この章ではcontinueの使い方について説明します。
continueは現在進行している周回を抜けたとしても、ループ自体は続けたい場合に使います。
主にfor文やwhile文などでよく使われます。
では例をみてみましょう。 実行結果は以下の通りです。
1つのリンゴ2つのリンゴ3つのリンゴ5つのリンゴ
if(i==g)の条件がTRUEの場合、下の行にあるを実行することなくforの先頭に戻ります。
例の場合はgが4なので「4つのリンゴ」と言う文を出力しません。
例ではiとgがイコールになったら、forの先頭に戻って条件判定をしてループを続けるかどうか決めますが、この例では先頭に戻ってもiは5ですのでTRUEとなり「5つのリンゴ」を出力します。
breakと違いループ自体を止めることはしません。