A:= 1;
N:= 1;
WHILE 2*A<=3*N+1 DO
BEGIN
A:= A+2;
N:= N+1;
END;
Оператор цикла с последующим условием используется, когда заранее неизвестно число повторений в цикле.
REPEAT {начало цикла}
Операторы циклической части программы {тело цикла}
UNTIL <лог_выражение>; {конец цикла}
где REPEAT (повторять), UNTIL (до тех пор) – служебные слова.
Выделяется сначала циклическая часть, а затем проверяется условие. Операторы циклической части можно заключать в операторные скобки (ошибки не будет).
Например, y=x2, при x=8, 6, 4, 2.
X:=8;
REPEAT
Y:=SQR(X);
WRITE(X:3, Y:5);
X:=X-2;
UNTIL X=0;
Оператор цикла с параметром используется, когда известно число повторений.
FOR I:=M1 TO M2 DO {ЗАГОЛОВОК ЦИКЛА}
BEGIN
операторы циклической части {ТЕЛО ЦИКЛА}
END;
Например,
FOR I:= 1 TO 5 DO
BEGIN
A:=2*I+1;
B:=2*I;
END;
FOR I:= 5 DOWNTO 1 DO
BEGIN
A:=2*I+1;
B:=2*I;
END;
Если в цикле один оператор, то можно использовать следующие формы записи:
FOR I:= M1 TO M2 DO ОПЕРАТОР1;
FOR I:= M2 DOWNTO M1 DO ОПЕРАТОР1;
Например. Дано N действительных чисел. Вычислить их среднее арифметическое.
PROGRAM PRIM;
VAR
I, N: INTEGER;
|
|
X,S:REAL;
BEGIN
READ(N);
S:=0;
FOR I:=1 TO N DO
BEGIN
READ(X);
S:= S+X;
END;
S:=S/N;
WRITELN(S:8:3);
END.
Задача 4.1. Построить таблицу функции на отрезке от 0 до 1, количество точек на этом отрезке - М = 10, с шагом H=(B-A)/M.
Вариант №1. Цикл While …do Вариант №2. Цикл Repeat…until
Вариант №3. Цикл с параметром For…
Программа для блок-схемы №1.
PROGRAM Fun1;
VAR M: integer;
A, B, H, X, Y: real;
BEGIN
READ(A,B,M);
WRITELN (‘Таблица значений функции’);
{***}
H:= (B-A)/M;
X:=A;
WHILE X<=B DO
BEGIN
Y:= ESP(X)+SQRT(1-X);
WRITELN(X,’’:2, Y);
X:=X+H;
END;
{***}
END.
Программа для блок-схемы №2.
…
{***}
REPEAT
Y:= ESP(X)+SQRT(1-X);
WRITELN(X,’’:2, Y);
X:=X+H;
UNTIL X>B;
{***} …
Программа для блок-схемы №3.
…
{***}
FOR i:= 1 TO N DO
BEGIN
Y:= ESP(X)+SQRT(1-X);
WRITELN(X,’’:2, Y);
X:=X+H;
END;
{***} …
Задача 4.2. Определить сумму и произведение числового ряда: 1+2+3+4+…+n;
Блок-схема алгоритма
Листинг программы
PROGRAM TASK2;
USES CRT;
VAR I, N, S, P: INTEGER;
BEGIN
CLRSCR;
WRITELN (‘Введите n’);
READLN(N);
S:=0;
P:=1;
FOR I:=1 TO N DO
BEGIN
S:= S+I;
P:=P*I;
END;
WRITELN (‘Сумма числового ряда равна - ’, S);
WRITELN (‘произведение ряда равно - ’, P);
READLN;
END.