BEGIN
CLRSCR;
SUM := 0; I:=1;
REPEAT
J:=1;
REPEAT
IF I=J THEN GOTO 10;
Y := (I+J) / ((I-J)*(I-J)); SUM := SUM + Y;
10: J := J+1; UNTIL J > 3;
I:=I+1; UNTIL I > 5 ;
WRITELN(’ SUM =’,SUM ); END.
SUM = 30.21
9.7.4. Математический способ организации цикла.
При организации этого цикла также не известно число повторений, то есть цикл повторяется до тех пор, пока истинно поставленное условие, то есть ставится условие повторения цикла.
Пример: Составить программу вычисления суммы натуральных чисел от 1 до 100.
PROGRAM SUM;
USES CRT, PRINTER;
LABEL 10;
VAR I, S: INTEGER;
BEGIN
CLRSCR;
S:=0; I:=1;
10: S:=S+I;
I:=I+1
IF I<=100 THEN GOTO 10;
WRITELN (’ S:=’,S );
END.
Результат: S=5050
Пример для самостоятельной работы:
Вычислить функцию Y=X2 при Х , равном 2, 4, 6, 8, 10, 12.
PROGRAM FUNC;
USES CRT, PRINTER;
VAR X, Y: INTEGER;
BEGIN
CLRSCR;
X:=2;
REPEAT
Y:=X*X;
WRITELN(' X=', X,' Y=', Y);
X:=X+2;
UNTIL X>12;
END.
Результат: X= 2 Y= 4
X= 4 Y= 16
X= 6 Y= 36
X= 8 Y= 64
X=10 Y=100
X=12 Y=144
Пример: Составить программу вычисления суммы
.
PROGRAM SUMMA;
USES CRT, PRINTER;
LABEL 10, 20;
VAR I, J : INTEGER;
SUM, Y : REAL;
BEGIN
CLRSCR;
SUM := 0; I=1; J:=1;
20: IF I=J THEN GOTO 10;
Y := (I+J) / ((I-J)*(I-J)); SUM := SUM + Y;
10: J:= J + 1;
IF J <= 3 THEN GOTO 20 ;
I: = I + 1;
IF I <= 5 THEN GOTO 20 ;
WRITELN(’ SUM =’,SUM ); END.
SUM = 30.21
Циклы могут быть вложены один в другой. Внутренний цикл должен полностью находиться внутри внешнего. Он, в свою очередь, может содержать свой внутренний цикл. Циклы могут быть вложены один в другой различными способами:
Вложенные циклы используются при работе с двухмер-ными массивами. Если в цикле находится оператор перехода, передающий управление за пределы цикла, то цикл может за-вершиться до его естественного окончания.
Пример: Составить программу вычисления сумм эле-ментов строк матрицы А(6,8).
PROGRAM MATR;
CONST N=6;
M=6;
VAR SUM, N, M, I, J: INTEGER;
A: ARRAY[1..N,1..M] OF INTEGER;
ASTR:ARRAY[1..N] OF INTEGER;
BEGIN
WRITE(’ ’);
FOR I:=1 TO N DO BEGIN
FOR J:=1 TO M DO BEGIN
A[I,J]:=RANDOM(100); WRITE(A[I,J]:4)
END;
WRITE(’ ’);
END;
FOR I:=1 TO N DO BEGIN
SUM:=0;
FOR J:=1 TO M DO BEGIN
SUM:=SUM+A[I,J];
ASTR[I]:=SUM
END;END;
WRITE(’ ’);
FOR I:=1 TO N DO
WRITE(ASTR[I]:4);
END.
В результате выполнения программы будет напечатан результат:
96 20 53 13 87 2
47 95 31 76 68 87
30 62 82 66 46 96
22 95 55 97 12 45
99 19 68 66 37 7
81 42 46 80 56 46
269 404 382 326 296 351
Пример для самостоятельной работы:
1. Посчитать сумму .
PROGRAM FUNC1;
USES CRT;
LABEL 10;
VAR I, J: INTEGER;
B, Y, S: REAL;
BEGIN
CLRSCR;
WRITELN; WRITELN; WRITELN;
S:=0;
FOR I:=0 TO 20 DO BEGIN FOR J:=0 TO I DO BEGIN
B:= 1-SIN(I/J);
IF B<=0 THEN GOTO 10;
Y:=SIN(I/J)/SQRT(B);
S:=S+Y;
10: END; END;
WRITE(' S=', S:6:2);
END.
В результате выполнения программы будет напечатан ре-зультат: S=113.59
2. Заменить в матрице В(10,10) первые цифры каждой строки на суммы элементов этой же строки.
PROGRAM MATR;
USES CRT;
VAR I, J, S: INTEGER;
B:ARRAY[1..6,1..6] OF INTEGER;
BEGIN
CLRSCR;
WRITELN; WRITELN; WRITELN;
WRITE(' ');
FOR I:=1 TO 6 DO BEGIN
S:=0;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.