- •Оглавление
- •Предисловие
- •Раздел 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. Конечно-разностная аппроксимация для граничных узлов
- •Задания
- •Литература
3.5. Оператор while
Кроме оператора for для организации циклов, в MATLAB содержится также оператор while, который работает аналогично одноименным операторам в таких языках программирования как Pascal, C и др. Синтаксис оператора while выглядит следующим образом:
while условие
операторы
end
Цикл с телом, содержащим операторы, выполняется до тех пор, пока условие после ключевого слова while истинно.
Например, следующий скрипт на каждой итерации цикла просит пользователя ввести число, а затем выводит квадрат введенного числа. Если пользователь вводит пустую строку, то цикл прерывается.
clear
% Переменная, которая хранит значение, введенное пользователем
input_prev = 0;
% Пока пользователь не введет пустую строку, цикл выполняется
while ~isempty (input_prev)
% Просим пользователя ввести число
input_prev = input ('Введите число или нажмите Enter для выхода: ', ...
's');
% Преобразовываем строку, введенную пользователем, в число
number = str2double (input_prev);
% Если число преобразовано удачно, выведем квадрат этого числа
if ~isnan(number)
result_str = sprintf ('Квадрат введенного числа равен %f\n', ...
number ^ 2);
disp (result_str);
end
end
В приведенном выше примере используется функция isnan, которая возвращает 1, если в качестве аргумента ей передано значение NaN, и 0 в противном случае.
3.6. Операторы break / continue
В теле циклов for и while можно использовать такие управляющие конструкции, как break и continue.
Оператор break прерывает выполнение цикла.
Оператор continue прерывает выполнение текущей итерации цикла и указывает интерпретатору перейти к следующей итерации.
Перепишем пример из предыдущего размера таким образом, чтобы в нем использовались операторы break и continue.
% Демонстрация операторов break и continue
clear
% "Бесконечный" цикл, который будет прерываться с помощью оператора break
while 1
% Просим пользователя ввести число
user_input = input ('Введите число или нажмите Enter для выхода: ', ...
's');
% Если пользователь ввел пустую строку, завершаем цикл
if isempty (user_input)
break
end
% Преобразовываем строку, введенную пользователем, в число
number = str2double (user_input);
% Если пользователь ввел число с ошибкой, проигнорируем ввод
if isnan(number)
continue
end
% Выведем квадрат этого числа
result_str = sprintf ('Квадрат введенного числа равен %f\n', ...
number ^ 2);
disp (result_str);
end
Результат выполнения этого скрипта может выглядеть следующим образом:
Введите число или нажмите Enter для выхода: 4
Квадрат введенного числа равен 16.000000
Введите число или нажмите Enter для выхода: 2.5
Квадрат введенного числа равен 6.250000
Введите число или нажмите Enter для выхода: абырвалг
Введите число или нажмите Enter для выхода: 16
Квадрат введенного числа равен 256.000000
Введите число или нажмите Enter для выхода:
>>
В этом примере используется прием, который называется «бесконечный цикл». Дело в том, что условие оператора while всегда истинно (не равно 0), поэтому, если этот цикл не прервать изнутри оператором break, то он никогда не завершится. Такой прием нужно использовать с осторожностью, так как в данном случае из объявления цикла не видно, при каких условиях он выполняется, и для понимания этого нужно прочитать все тело цикла.
Аналогично операторы break и continue работают внутри оператора for.