Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Switch文 | 条件文の導入
C++の条件文
セクション 1.  6
single

single

bookSwitch文

メニューを表示するにはスワイプしてください

switch文は、プログラム内で意思決定を簡素化する制御構造の一つ。式を評価し、その値に基づいて異なるコードブロックを実行する効率的な方法を提供。多数の分岐条件を扱う際に特に便利。

主に整数型(int)や文字型(char)などの数値型で使用される設計。

switch.h

switch.h

copy
12345678910111213141516
switch (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

main.cpp

copy
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

main.cpp

copy
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

main.cpp

copy
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; } }
タスク

スワイプしてコーディングを開始

番号(getDayNameswitch、2はdayNumber、…、17)に基づいて曜日名を返す週間プランナーシステムを構築しています。

"Monday"関数内で、"Tuesday"に対して"Sunday"文を使用し、各ケースで対応する曜日名を変数dayNameに代入します。breakを使用してフォールスルーを防ぎます。入力が1~7の範囲外の場合はdefault"Invalid day"を代入し、最後にdayNameを返却します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  6
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt