●switch文のフローチャート
switch文は、基本となる変数や定数を複数の値と比較して、両者が同じ値だったら処理を実行する制御構文です。もしif文やelse文で書いた場合には、判定する値の数だけif文やelse if文を書く必要がありますが、switch文では判定したい値をcaseに続けて書くだけなので便利です。
●「default:」がないとエラーに
caseはいくつでも書けますが、どのcaseにも合致しなかったときの処理「default:」が必ず必要です。なお、switch文の最後は「}」で閉じておきましょう。
switch文の便利な使い方を解説!
便利技1・caseを範囲で指定する
switch文では、「case」に続けて書いた値と同じであるかを判定し、それぞれの処理を実行しています。しかし、仮に連続した数字で処理を分けたい場合には、すべての数値をcaseに書いてゆく必要があり、実際にプログラムを書いていると不便に感じることもあるでしょう。しかしcaseには、連続した数値を判定するときに便利な「範囲指定」が可能なのです。
たとえば、「数字の1~10までを指定」するには「case 1…10」のように記載します。右のプログラム例では、点数を判定していて、最初のcaseで「0」を判定、次のcaseで「1…59」を判定しています。ここに書かれている「case 1…59」は、変数の値が「0」や「60」、「61」のときには条件が満たされませんが、値が「1」「13」「45」「59」などのように「1以上59以下」の場合に条件を満たします。なお、caseで範囲指定をした場合でも、どれにも当てはまらなかった場合の処理を書く「default」は必須です。また、変数は整数型である必要があります。
値が整数型などであれば、数字の範囲を判定条件にできます。「1~59」を判定したい場合は「1…59」と、「.」を3つ続けて書くと判定できます。
便利技2・caseの条件を複数指定する
switchで判定したい変数に代入される値の種類がたくさんあるときでも、処理をそれほど多く分けなくても良い場合があります。たとえば、変数にレストランのメニュー名(仮に50種類)のうち、どれか1つが代入される可能性があり、switch文では変数に入っているメニュー名によって処理を分けたいけれど、処理の種類は数パターンしかない、なんてときにも、caseは50種類全メニューを書く必要があります。しかし、switch文ではなく、if文で書いてみようと思っても、結局はメニュー名ごとにすべての処理を書かなくてはならず、大変です。
そんなときに便利なのが、caseの条件を複数指定する方法です。これまでcaseのあとに書いていた値を「,」で区切って必要なだけ記載するだけです。右のプログラム例の1つ目のcaseでは、「"だんご"」と「"どらやき"」を判定していて、2つの文字列を「,」で区切っています。なお、通常のcaseと同じように、caseの最後に「:」を忘れずに書きましょう。
switch文は1対1の比較以外に、複数の判定が同時に行えます。
●for文のフローチャート
プログラムを書いていると、同じ処理を何度も繰り返す必要に迫られることがあります。そんなときに制御構文が繰り返し処理の「for文」です。for文は指定した回数、処理を実行できるため、同じプログラムを複数行に渡って書き続ける手間を省けます。
●回数を指定しよう
for文は処理を1周すると、forに続けて書いた変数に「1」を足します。たとえば、範囲指定を「1…10」と書いたときは、最初が処理の1周目では変数「回数」には1が入っていて、2周目には「2」が入っています。10回目の処理では「10」になり、11回目に入った段階で指定した範囲を超えるので、for文が終わります。
●「目のアイコン」をクリック
処理中の内容を表すサイドバーが、これまで「print」で表示されていた内容と異なります。ここではfor文によって「print」が実行された数が表示されますが、カーソルをあわせると表示される「目」のアイコンをクリックすると、最後の実行結果が表示できます。
●同じ変数名は避けよう
for文の外で使っていた変数名と、for文の1行目に書く変数名を同じにしても、それぞれの変数は区別されるために影響はありません。とはいえ、変数名が同じだと混乱を招くこともあるので、同じ名前は避けましょう。
●グラフを確認できる
Playground上でfor文内の「数字 *= 2」の右を見ると、命令文「print」と同じように「(10 times)」とあります。カーソルを合わせると表示される「目」をクリックすると、変数「数字」の変化がグラフで表示されます。
●while文のフローチャート
while文は条件式を使い、その条件を満たす間、処理を繰り返す制御構文です。繰り返しを抜けるには、条件式が「false」になるような処理を「{ }」内に書く必要があります。
●trueの場合に繰り返す
while文は条件式がtrueの間、処理を繰り返します。上の例では、変数「台数」が「0~10」のときに処理が実行されるため、「iPhone1台目購入」~「iPhone11台目購入」、最後に「iPhoneを通算11台買った」となります。