Читайте также:
|
|
Циклические вычислительные процессы описываются с помощью операторов:
1. WHILE (цикл с предусловием)
2. REPEAT (цикл с постусловием)
1. FOR (цикл с параметром)
Первый и второй циклы могут использоваться и в том случае, когда заранее неизвестно количество повторений цикла, а в третьем интервал задается в начале цикла.
Общая форма записи оператора цикла WHILE:
WHILE < Логическое выражение > DO
BEGIN
Тело цикла
END;
Начальные значения задаются до открытия цикла (до WHILE).
В логическом выражении происходит проверка по конечному значению, а в теле цикла обязательно должен присутствовать оператор присваивания, в котором изменяется аргумент, проверяющийся в условии.
Если условие в цикле while изначально невыполнимо, то тело цикла не выполняется ни разу.
Аргументом может быть переменная любого типа.
В начале до цикла вычисляется, задается или вводится выражение – условие, которое затем проверяется и если условие истинно, то цикл выполняется, если условие ложно, то цикл прекращается.
While условие do begin
Операторы;
End;
Например: Найдем сумму чисел от 5 до 10 с шагом 1,8. Количество чисел и их значение не известны, поэтому применим цикл While
S:=0;X:=5;
While x<10 do begin
S:=s+x;
X:=x+1.8;
END;
Write(‘s=’,s:5:2);
S:=0;X:=5;
While x<10 do begin
S:=s+x;
End;
Write(‘s=’,s:5:2);
S:=0;X:=5;
While x>10 do begin
S:=s+x;
X:=x+1.8;
END;
Write(‘s=’,s:5:2);
S:=0;X:=5;
While x>10 do begin
S:=s+x;
X:=x-1.8;
END;
Write(‘s=’,s:5:2);
Сколько раз выполнится цикл? Какие значения примет переменная Х, S?
Общая форма записи REPEAT
REPEAT
тело цикла;
UNTIL Логическое выражение;
Тело цикла REPEAT выполняется до тех пор, пока условие не примет значение=TRUE.
При переходе от цикла WHILE к циклу REPEAT знак логического выражения меняется на обратно противоположное.
Например, если в цикле WHILE условие было Х<=5, то в цикле REPEAT оно будет Х>5.
В начале до цикла вычисляется, задается или вводится выражение – условие. Затем выполняется тело цикла один раз и только потом проверяется условие и если условие ложно, то цикл выполняется еще раз, если условие истинно, то цикл прекращается.
Например: Найдем сумму чисел от 5 до 10 с шагом 1,8. Количество чисел и их значение не известны, поэтому применим цикл Repeat
S:=0;X:=5;
Repeat
S:=s+x;
X:=x+1.8;
Until x>=10;
Write(‘s=’,s:5:2);
S:=0;X:=5;
Repeat
S:=s+x;
Until x>=10;
Write(‘s=’,s:5:2);
S:=0;X:=5;
Repeat
S:=s+x;
X:=x-1.8;
Until x>=10;
Write(‘s=’,s:5:2);
S:=0;X:=5;
Repeat
S:=s+x;
X:=x+1.8;
Until x<=10;
Write(‘s=’,s:5:2);
Сколько раз выполнится цикл? Какие значения примет переменная Х, S?
Отличия цикла WHILE от цикла REPEAT
WHILE | REPEAT |
1. Цикл выполняется если Логическое выражение=TRUE | 1. Цикл выполняется если Логическое выражение=FALSE |
2. Тело цикла заключено в операторные скобки. | 2. Операторных скобок нет |
3. Если Логическое выражение.=FALSE изначально, то тело цикла не выполняется ни разу. | 3. Если Логическое выражение =TRUE изначально, то тело цикла выполнится хотя бы 1 раз. |
Операторы цикла могут быть вложены один в другой:
Если известно число повторений, то лучше применить цикл с параметром. Переменная цикла может быть целой или символьной, меняется на единицу увеличиваясь или уменьшаясь.
Изменять значение переменной (т.е. присваивать ей какие-либо значения) в теле цикла нельзя.
Общая форма записи оператора цикла FOR
a) FOR имя переменной:= начальное значение TO конечное значение DO
BEGIN
Тело цикла;
END;
б) FOR имя переменной:= конечное значение DOWNTO начальное значение DO
BEGIN
Тело цикла;
END;
For i:=0 to 5 do оператор;
For i:=5 downto 1 do оператор;
Если в цикле необходимо выполнить не один оператор, а несколько, то применяют begin end
For i:=0 to 5 do begin
Оператор1;
Оператор2;
End;
Var
X,y:integer;
begin
For x:=1 to 10 do begin
Y:=x+2;
Writeln(‘x=’,x,’y=’,y)
End;
End.
Var
X,S:integer;
Begin
S:=0;
For x:=10 to 99 do S:=s+x;
Writeln(‘x=’,x,’s=’,s)
End
Var
X,S:integer;
Begin
S:=0;
For x:=10 to 99 do If x mod 3=0 then S:=s+x;
Writeln(‘x=’,x,’s=’,s)
End.
Var
X,S,D:integer;
Begin
S:=0;
Write(‘введите число D’);
Read(d);
For x:=10 to 99 do If x >d then S:=s+x;
Writeln(‘x=’,x,’s=’,s)
End
Var
X:integer;
D,S:real;
Begin
d:=1,35;
For x:=1 to 10 do begin
S:=d*x;
Writeln(‘x=’,x,’s=’,s)
End;
End.
Дата добавления: 2014-12-19; просмотров: 173 | Поможем написать вашу работу | Нарушение авторских прав |