![]() |
|
最後の制御文−switch文switch文の構造を知る switch文 〜数値によって行き先を変える〜前ページでは、条件によって制御の流れを変える if文を知りました。ということは、変数aが1の時はこれ、2の時はこれ、1でも2でも無い時はこれを実行するということもできますね。では、そういうプログラムを書いてみたいと思います。
この場合は1か2かそうではないかだけしか評価しないのでこの程度で済みますが、3か、4か...と増えていくと、もうわけが分からなくなってしまいます。そんな時に便利なのが switch文です。 switch文は、「数値によって別々の仕事をする」という作業のみに特化した制御文で、if文では繁雑になりやすいソースコードを簡単に分かりやすくしてくれるものです。
これだけ見ると、何のことやら分かりませんが、ソースを見てみれば何となく分かるはずです。
この場合、aが1のときは「printf("aは1です。\n");」が、aが2のときは「printf("aは2です。\n");」が、そして1でも2でも無かったときは「printf("aは1でも2でもありません。\n");」が実行されます。 と言いたいところなのですが、そうはいかず、この例の場合は、
と、ぜーんぶ表示されてしまいます。一体何が起きたのかというと、変数aには1が入っているので、制御は「case 1:」以降に移されるのですが、その後にcase文が来ても、処理を続行してしまうためです。そのため、while文のところで紹介したbreak文を使ってこの例を以下のように書き換えなくてはなりません。
このことを利用すれば、「aが1,3,4の時」に実行する文も簡単に作ることができます。
この例では「default」をなくしてしまいましたが、これでも大丈夫です。このとき1から4以外の数値がaに入っていた場合は何も実行する文が無いので、表示されないのは言うまでもありませんね。 さぁこれで制御文の説明は終わりました。これで少しは凝ったプログラムが作れるようになったことと思います。…え? 文字を表示するのは分かったけどキーボードから入力するのはどうするかって? それはまだちょっと…。これをちゃんと理解するのは難しい…。 まとめ。
(1997/01/30 公開, 1999/03/13 改) |
![]() |
著作権は全て小出 俊夫にあります。KID's World © 1996-2003 Toshio Koide.