Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_final.doc
Скачиваний:
80
Добавлен:
24.09.2019
Размер:
5.3 Mб
Скачать

3.7. Оператор switch

Оператор switch можно рассматривать, как более удобный вариант if / elseif / else для множественного выбора.

Синтаксис оператора switch выглядит следующим образом:

switch выражение

case значение_1

операторы_1

case значение_2

операторы_2

...

otherwise

операторы_N

end

Оператор switch работает следующим образом: значение выражения после ключевого слова switch последовательно сравнивается со значениями, перечисленными после операторов case. Если какое-то из значений после ключевого слова case совпадает со значением выражения после ключевого слова switch, то выполняются соответствующие операторы. Если значение выражения после ключевого слова switch не совпадает ни с одним из значений после ключевого слова case, то выполняются операторы после ключевого слова otherwise. Ветвь otherwise является не обязательной.

Следующий скрипт запрашивает у пользователя число, а затем спрашивает, что с этим числом делать и в зависимости от выбора пользователя, производит соответствующее действие над введенным числом.

% Демонстрация оператора switch

clear

% "Бесконечный" цикл, который будет прерываться с помощью оператора break

while 1

% Просим пользователя ввести число

user_input = input ('Введите число или нажмите Enter для выхода: ', ...

's');

% Если пользователь ввел пустую строку, завершаем цикл

if isempty (user_input)

break

end

% Преобразовываем введенную строку в число

user_number = str2double (user_input);

% Если пользователь ввел не число, запрашиваем ввод еще раз

if isnan (user_number)

continue

end

% Пункты меню для отображения

menu = ['Выберите действие: \n', ...

'1 - Возведение в квадрат\n', ...

'2 - Умножение на -1\n', ...

'3 - Взятие обратной величины\n', ...

'0 - Выход\n', ...

': '];

% Выводим меню и ожидаем ввод пользователя

user_action = input (menu, 's');

% Получаем результат в зависимости от выбора пользователя

switch user_action

case '0'

break

case '1'

result_str = sprintf ('Квадрат введенного числа равен %e\n', ...

user_number ^ 2);

case '2'

result_str = sprintf ('Результат умножения на -1 равен %e\n', ...

user_number * -1);

case '3'

result_str = sprintf ('Обратная величина равна %e\n', ...

1.0 / user_number);

otherwise

continue

end

% Вывод результата

disp (result_str);

end

Пример работы данного скрипта может выглядеть следующим образом:

Введите число или нажмите Enter для выхода: 1.23

Выберите действие:

1 - Возведение в квадрат

2 - Умножение на -1

3 - Взятие обратной величины

0 - Выход

: 1

Квадрат введенного числа равен 1.512900e+000

Введите число или нажмите Enter для выхода: -2

Выберите действие:

1 - Возведение в квадрат

2 - Умножение на -1

3 - Взятие обратной величины

0 - Выход

: 2

Результат умножения на -1 равен 2.000000e+000

Введите число или нажмите Enter для выхода: 5.2

Выберите действие:

1 - Возведение в квадрат

2 - Умножение на -1

3 - Взятие обратной величины

0 - Выход

: 3

Обратная величина равна 1.923077e-001

Введите число или нажмите Enter для выхода: qwerty

Введите число или нажмите Enter для выхода: 123

Выберите действие:

1 - Возведение в квадрат

2 - Умножение на -1

3 - Взятие обратной величины

0 - Выход

: 0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]