Моделирование в MATLAB/Simulink и SCILAB/Scicos - page 44

42
В результате выполнения
script
-файла с указанным набором операторов
будет получена матрица
2
3
4
3
4
5
4
5
6
Второй тип циклов позволяет выполнять инструкции в теле цикла до тех
пор, пока выполняется заданное условие. Конструкция такого цикла имеет вид:
while Логическая переменная,
операторы
end
В этом выражении «Логическая переменная» имеет тот же смысл, что и для
оператора
if
в параграфе 3.3 и вычисления продолжаются до тех пор, пока в матрице
использованной в качестве «Логической переменной» нет нулевых компонентов. Так
же как и в 3.3 в конструкции
while
общепринято использовать условный оператор из
параграфа 3.2. В связи с этим приведем традиционный и нетрадиционный примеры
использования
while
.
Традиционный пример:
р=1;
k=0;
while р<10,
р = р*2;
k = k+1;
end; k
вычисляет минимальное значение показателя степени
k
такое, что
10 2
>=
k
. Очевидно, что по окончании работы цикла
k
= 4 и
р
= 16.
Менее традиционным следует считать пример вида
а = [2.5, 3; 4, 5];
while а,
а = а–1;
end
В этом примере заданная матрица
а
преобразуется следующим способом: все
элементы ее уменьшаются на каждом шаге на 1, до тех пор, пока одно из них не
станет равным 0. Таким образом, процедура завершается, если хотя бы одна из
компонент матрицы
a
– положительное целое число – обратится в 0. Если это не так,
то произойдет зацикливание программы.
Для защиты от такой ситуации можно использовать оператор
break
, который
прекращает действие последнего по вложению цикла
for-end
или
while
, внутри
которого расположен оператор
break
. Предыдущий пример, прерванный таким
оператором, переписанный в файл, примет вид
а = [2.5, 3; 4, 5];
while a,
a = a–1;
if a<0, break
end
end
1...,34,35,36,37,38,39,40,41,42,43 45,46,47,48,49,50,51,52,53,54,...286
Powered by FlippingBook