Читайте также: |
|
Если заранее не известно число повторений цикла, то используются циклы с условием. В Паскале имеется два типа таких циклов. Цикл While называют циклом с предусловием. Он имеет вид:
WHILE <логич.выражение> DO <оператор>;
Проверка условия выполнения цикла производится в самом начале оператора.
Общий вид: While <условие продолжения повторений> do
<тело цикла>;
Тело цикла – простой или составной оператор или операторы. Если операторов в теле цикла несколько, то тело цикла заключается в операторные скобки begin…end.
Цикл While организует выполнение одного (возможно составного) оператора пока истинно логическое выражение, стоящее в заголовке цикла. Поскольку значение логического выражения проверяется в начале каждой итерации, то тело цикла может не выполниться ни разу. Таким образом, в этом цикле логическое выражение – это условие продолжения работы в цикле. Перед выполнением этого цикла должны быть заданы значения для всех переменных входящих в логическое выражение. В первом цикле вычисляется значение логического выражения. Если значение логического выражения ИСТИНА, то выполняется тело цикла, затем происходит возврат на начало цикла и снова вычисляется логическое выражение; если логическое выражение ИСТИНА, то цикл повторяется и т.д. Цикл завершится, когда значение логического выражения будет ЛОЖЬ. Если в первом цикле сразу же логическое выражение ЛОЖЬ, то цикл не выполнится ни разу и происходят выход из цикла и переход к первому после while оператору.
ПРАВИЛА для цикла WHILE:
1) если значение логического выражения ИСТИНА изначально, в теле цикла обязательно должен присутствовать оператор, изменяющий значение хотя бы одной переменной, входящей в логическое выражение;
2) возможен случай, когда в теле цикла записан оператор перехода, передающий управление за пределы цикла, тогда цикл может, завершится до его естественного окончания;
3) если в качестве логического выражения используется сравнение двух переменных вещественного типа, то результат такого цикла может быть непредсказуем.
ПРИМЕР 1: Величину Y=A·X2 требуется вычислить для следующих значений X:0,2,4,6,8,10. Следовательно, цикл необходимо повторить шесть раз. Программу с использованием этого оператора назовем “OWHILE”.
Program OWHILE;
Uses Crt;
Const A=2;
XMIN=0; {Минимальное значение X}
XMAX=10; { Максимальное значение X }
HX=2; {Шаг, может быть вещественным}
Var X,Y,I:Integer;
Begin
ClrScr;
X:=XMIN; {Начальное значение аргумента}
WHILE X<=XMAX DO {предусловиe, условие входа в цикл}
begin
Y:=A*Sqr(X);
Writeln(‘X=’:4,X:3,’ A=‘, A,‘ Y=’:5,Y:4);
X:=X+HX; {Изменение значения аргумента}
End;
Readln;
End. { OWHILE }
В цикле WHILE тело цикла определяется составным оператором, образованным при помощи операторных скобок Begin и end.
Цикл WHILE исполняется только в том случае, когда выполняется условие ввода в цикл. В нашей программе – это выполнение условия о том, чтобы аргумент был равен или меньше XMAX. Каждый новый шаг этого цикла осуществляется лишь тогда, когда выполняется условие выхода в цикл. Поэтому этот цикл называют циклом с предусловием. Если условие входа в цикл не выполняется уже до первого шага, то цикл игнорируется и выполняется оператор, следующий за этим циклом. В теле цикла обязательно должен быть оператор, влияющий на условие входа в цикл. Иначе цикл будет выполняться бесконечно
.
Пример блок-схемы WHILE
ПРИМЕР 2: Найти сумму 10 произвольных чисел.
Program z;
Const
N=10;
Var k, x, s: integer;
Begin
k:=0; s:=0; {k- количество введенных чисел}
While k < N do
Begin
k:=k+1;
Write (‘Введите число’); Readln (x);
s:=s+x;
End;
Writeln (‘Сумма чисел равна’, s);
End.
ПРИМЕР 3: На склад привозят однородный груз на машинах различной грузоподъемности. На компьютер, управляющий работой склада, поступает информация о весе груза очередной машины. Составить программу подсчета количества машин, прибывших на склад до его заполнения, если вместимость склада не более 100 тонн.
Program strome;
Var sum, W: real; num: integer;
begin
num:=0; sum:=0;
while sum<100 do
begin
write (‘ введите вес груза машины’); readln (W);
sum:=sum+W;
if sum<=100 then num:=num+1 else
writeln (' груз уже не поместился');
end;
writeln (' число разгруженных машин=', num:3);
end.
Дата добавления: 2015-07-08; просмотров: 422 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Цикл с параметром - цикл For | | | Цикл с постусловием |