single
Switch文
メニューを表示するにはスワイプしてください
switch文は、プログラム内で意思決定を簡素化する制御構造の一つ。式を評価し、その値に基づいて異なるコードブロックを実行する効率的な方法を提供。多数の分岐条件を扱う際に特に便利。
主に整数型(int)や文字型(char)などの数値型で使用される設計。
switch.h
12345678910111213141516switch (expression) { case value1: // Code to execute when expression matches value1 break; case value2: // Code to execute when expression matches value2 break; // More cases can be added as needed // Code to execute when expression matches valueN default: // Code to execute when none of the case labels match the expression }
-
式は一度だけ評価され、プログラムはその値に応じて適切な
caseへジャンプ; -
各
caseは、式が一致する可能性のある特定の値または値の集合を表す; -
break文は、特定のcaseのコードが実行された後にswitchブロックから抜けるために使用; -
defaultは任意で、指定されたcaseが式と一致しない場合に使用。全てを受け入れる選択肢として機能。
レストランを経営していて、数値コードに基づいたメニューを提供したい場合を想定。以下はメニュー項目のコード表現。
main.cpp
1234567891011121314151617181920212223242526#include <iostream> int main() { // try to change the value int menu_number = 1; switch (menu_number) { case 1: std::cout << "Pizza" << std::endl; break; case 2: std::cout << "Burger with fries" << std::endl; break; case 3: std::cout << "Pasta with meatballs" << std::endl; break; default: std::cout << "We don`t have this in our menu" << std::endl; break; } }
はい、これはシンプルな if 文で実現できます。次のようになります。
main.cpp
123456789101112131415161718192021222324#include <iostream> int main() { // try to change the value int menu_number = 1; if (menu_number == 1) { std::cout << "Pizza" << std::endl; } else if (menu_number == 2) { std::cout << "Burger with fries" << std::endl; } else if (menu_number == 3) { std::cout << "Pasta with meatballs" << std::endl; } else { std::cout << "We don`t have this in our menu" << std::endl; } }
同じように動作し、期待通りの結果が得られますが、一般的には switch 文を使用する方が推奨されます。switch 文は、より明確で、可読性が高く、さらに重要な点として、保守性や拡張性に優れた制御フローの管理方法を提供します。
switch 文で break キーワードを省略すると、プログラムが次のケースに処理を継続して実行するため、予期しない動作を引き起こす可能性があります。しかし、意図的に break を省略することで、同じコードブロック内で複数のケースをまとめて処理することができます。この手法は**フォールスルー(fall-through)**と呼ばれ、関連するケースをまとめて処理する際に利用されます。
main.cpp
12345678910111213141516171819202122#include <iostream> int main() { // change the number and look how it affect the output int number = 3; switch (number) { case 1: std::cout << '1' << std::endl; case 2: std::cout << '2' << std::endl; case 3: std::cout << '3' << std::endl; case 4: std::cout << '4' << std::endl; case 5: std::cout << '5' << std::endl; break; } }
スワイプしてコーディングを開始
番号(getDayNameはswitch、2はdayNumber、…、1は7)に基づいて曜日名を返す週間プランナーシステムを構築しています。
"Monday"関数内で、"Tuesday"に対して"Sunday"文を使用し、各ケースで対応する曜日名を変数dayNameに代入します。breakを使用してフォールスルーを防ぎます。入力が1~7の範囲外の場合はdefaultで"Invalid day"を代入し、最後にdayNameを返却します。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください