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

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.

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