Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zadania_na_2_semestr / Методическое пособие.pdf
Скачиваний:
377
Добавлен:
02.04.2015
Размер:
1.62 Mб
Скачать

>>normalCdF(3) - normalCdF(-3) ans =

0.9973

>>normalCdF(2) - normalCdF(-2) ans =

0.9545

Оператор цикла while

Данный оператор имеет следующий синтаксис:

while условие_продолжение_цикла операторы_тела_цикла;

end

Логика работы этого цикла следующая:

сначала проверяется условие_продолжение_цикла, если оно ложно, то цикл заканчивается и выполняются операторы за циклом;

если условие_продолжение_цикла оказалось истинным, то выполняется тело цикла, и потом снова проверяется условие_продолжение_цикла, и цикл будет продолжаться пока оно истинно.

В качестве примера использование цикла while приведем вычисление наибольшего общего делителя двух чисел:

function [ res ] = myGCD( a, b )

% вычисление наибольшего общего делителя чисел a и b

while a ~= b if a > b

a = a - b;

else

b = b - a;

end

end

% сохранить результат в выходную переменную res = a;

end

Для примера работы данной функции вызовем ее из консоли MATLAB:

33

>>myGCD(120, 7) ans =

1

>>myGCD(196, 700) ans =

28

>>myGCD(78, 66) ans =

6

Заметим, что как было показано в примере выше, все описанные конструкции ветвления и циклов можно вкладывать друг в друга.

Проверка корректности входных переменных

Как правило, каждая функция должная выполнять проверку корректности своих параметров. Так в предыдущем примере следовало бы проверить, что числа a и b не имеют дробных частей (в MATLAB по умолчанию любое число имеет тип double). В случае если параметры имеют некорректное значение, то функция должна каким-то образом сообщить об этом вызывающей программе. В MATLAB для этого как правило используется функция, error, принимающая самом простом случае текст описывающей ошибку, и прерывающая работу текущей функции, и если ошибка не перехвачена, то и работу программы. Приведем пример использования этой функции:

function [ res ] = myGCD( a, b )

%вычисление наибольшего общего делителя чисел a и b

%проверка, что числа a и b не имеют дробных частей if a ~= round(a) || b ~= round(b)

error('Входные аргументы должны быть целыми');

end

while a ~= b if a > b

a = a - b;

else

b = b - a;

end

end

34