PR
更新: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ブロックが実行されるのがポイントね!デフォルトの処理を忘れずに入れておくといいわ。
  1. expression は評価され、その結果がcaseで指定されたvalue1, value2, …と順番に比較されます。
  2. 最初に一致するcaseが見つかった場合、そのcaseに対応するコードブロックが実行されます。
  3. 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

この例では、x3なので、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