更新:2024/09/10
Octaveのスイッチケース(switch, case, otherwise)・練習問題について


はるか
switch-case文って、いくつかの条件に基づいて処理を切り替える。

ふゅか
特定の条件が一致したときに、その条件に対応するコードが実行されるのよ。
目次
1. switch-case文の基本的な構文
1.1. 書き方
Octaveのswitch-case
文は、複数の条件のうち、どれか一つが満たされた場合に対応する処理を実行するための制御構文です。switch
で評価する式を指定し、その値に基づいて異なるcase
ブロックが実行されます。case
のいずれにも該当しない場合には、otherwise
ブロックが実行されます。
switch expression
case value1
% コードブロック1
case value2
% コードブロック2
...
otherwise
% デフォルトのコードブロック
end

はるか
基本的な構文はこんな感じ。switch expression、その後にcase valueを使う。値が一致したら対応するコードブロックが実行される。

ふゅか
うん、caseに一致しない場合はotherwiseブロックが実行されるのがポイントね!デフォルトの処理を忘れずに入れておくといいわ。
expression
は評価され、その結果がcase
で指定されたvalue1
,value2
, …と順番に比較されます。- 最初に一致する
case
が見つかった場合、そのcase
に対応するコードブロックが実行されます。 case
のいずれにも一致しない場合、otherwise
ブロックが実行されます。
1.2. 実例
x = 3;
switch x
case 1
disp('x is 1');
case 2
disp('x is 2');
case 3
disp('x is 3');
otherwise
disp('x is something else');
end
この例では、x
が3
なので、case 3
に一致し、'x is 3'
が表示されます。switch-case
文では、case
に指定する値は定数である必要があります。

はるか
例えば、x = 3のとき、case 3が実行される。
2. 練習問題
2.1. 練習問題 1(数字の大小を判定する)
ユーザーから1つの整数を入力として受け取り、その値に応じてメッセージを表示するプログラムを作成してください。入力が1の場合は「入力値は1です」、2の場合は「入力値は2です」、3の場合は「入力値は3です」と表示します。それ以外の数値が入力された場合は「入力値は1、2、または3ではありません」と表示します。
number = input('整数を入力してください: ');
switch number
case 1
disp('入力値は1です');
case 2
disp('入力値は2です');
case 3
disp('入力値は3です');
otherwise
disp('入力値は1、2、または3ではありません');
end

ふゅか
ユーザーから整数を入力させて、1、2、3のいずれかに応じたメッセージを表示するプログラムね!

はるか
入力値が1、2、3以外の場合はotherwiseで対応する。画像だと56を入力してるからotherwiseが実行される。
2.2. 練習問題 2(曜日を判定する)
ユーザーが月曜日から日曜日のうちの1つを入力すると、それに応じて異なるメッセージを表示するプログラムを作成してください。ユーザーが月曜日から金曜日のいずれかを選択した場合は、「平日です」と表示し、土曜日または日曜日を選択した場合には「休日です」と表示するようにしてください。
day = input('曜日を入力してください(例: 月曜日、火曜日): ', 's');
switch day
case {'月曜日', '火曜日', '水曜日', '木曜日', '金曜日'}
disp('平日です');
case {'土曜日', '日曜日'}
disp('休日です');
otherwise
disp('無効な曜日です');
end
ユーザーが入力した曜日に基づいて、平日か休日かを判定してメッセージを表示します。曜日の判定にはswitch
文を使用し、case
文にリスト形式で曜日をまとめて指定することで、特定のグループに対応する処理を簡潔に記述できます。
2.3. 練習問題 3(四則演算の計算機)
ユーザーから2つの数値と演算子(+、-、*、/)を入力させ、それに基づいて指定された演算を実行するプログラムを作成してください。プログラムは、演算子に応じて対応する計算を行い、その結果を表示します。もし無効な演算子が入力された場合には、「無効な演算子です」と表示するようにしてください。
a = input('1つ目の数値を入力してください: ');
b = input('2つ目の数値を入力してください: ');
operator = input('演算子を入力してください (+, -, *, /): ', 's');
switch operator
case '+'
result = a + b;
case '-'
result = a - b;
case '*'
result = a * b;
case '/'
if b == 0
disp('ゼロで割ることはできません');
return;
else
result = a / b;
end
otherwise
disp('無効な演算子です');
return;
end
disp(['結果: ', num2str(result)]);
ユーザーが入力した2つの数値と演算子に基づいて四則演算を実行し、その結果を表示します。演算子に対してswitch文を使用して分岐処理を行っており、+、-、*、/の各演算に対して適切な計算を行います。

はるか
演算子以外の入力には
otherwise
を使う。無効な演算子にはメッセージを表示して終了。2.4. 練習問題 4(月の季節を判定する)
ユーザーに1月から12月のいずれかの月を入力させ、その入力された月が属する季節(春、夏、秋、冬)を表示するプログラムを作成してください。
month = input('1月から12月のうち、月を入力してください (例: 3): ');
switch month
case {3, 4, 5}
disp('春です');
case {6, 7, 8}
disp('夏です');
case {9, 10, 11}
disp('秋です');
case {12, 1, 2}
disp('冬です');
otherwise
disp('無効な月です');
end
ユーザーが入力した月に基づいて、その月が属する季節を判定し、メッセージを表示します。switch文を使用して各季節を対応する月にグループ化し、case文でそれぞれの季節に対応するメッセージを表示します。

はるか
月を入力させて、どの季節に属するかを判定する。
case
に月をリスト形式で指定するといい。
PR