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
- Оглавление
- Предисловие
- Раздел 1. Основные сведения о среде программирования «matlab»
- Глава 1. Вычисления в командном режиме
- 1.1. Простейшие математические операции в matlab
- 1.2. Переменные
- 1.3. Создание матриц
- 1.4. Доступ к элементам матриц
- 1.5. Операции с матрицами
- 1.6. Ввод, вывод и работа со строками
- Глава 2. Построение графиков в matlab
- 2.1. Построение графика в виде двумерной линии
- 2.2. Оформление графиков
- 2.3. Построение трехмерных графиков
- 2.4. Построение линий уровня
- 2.5. Построение векторного поля
- 2.6. Отображение нескольких графиков в одном окне
- Глава 3. Скрипты в matlab и управляющие конструкции
- 3.1. Создание и выполнение скриптов в matlab
- 3.2. Оператор for
- 3.3. Логические операции
- 3.4. Оператор if / elseif / else
- 3.5. Оператор while
- 3.6. Операторы break / continue
- 3.7. Оператор switch
- 3.8. Создание функций
- Раздел 2. Краткие теоретические сведения и задания Тема 1. Векторный анализ
- 1.1. Элементы векторного анализа
- Задания
- Тема 2. Уравнения Максвелла (произвольная и гармоническая временная зависимость, статические, стационарные и квазистационарные поля)
- 2.1. Система уравнений электродинамики – уравнения Максвелла
- 2.2. Граничные условия. Принцип эквивалентности
- Задания
- Тема 3. Плоские волны
- 3.1. Явление дисперсии и групповая скорость
- Задания
- Тема 4. Граничные задачи, уравнения и методы
- 4.1. К классификации электромагнитных явлений
- Задания
- 4.2. Метод конечных разностей
- 4.2.1. Конечно-разностная аппроксимация
- 4.2.2. Конечно-разностная аппроксимация уравнений Лапласа и Пуассона
- 4.2.3. Конечно-разностная аппроксимация для граничных узлов
- Задания
- Литература