Организация циклических процессов


Циклом называется многократно повторяющийся участок вычислительного процесса. Каждое повторение этого участка происходит при новом значении некоторой переменной, называемой параметром цикла. Циклы различаются по способу проверки условия выхода из цикла и по построению.

По способу проверки условия выхода из цикла их делят на следующие циклы:

1. циклы с предусловием (рис.1);

2.

 
 

циклы с постусловием (рис.2).

Итерационные циклы характеризуются последовательным приближением к искомому значению с заданной точностью.

В языке Паскаль имеются три вида операторов цикла:

1. Оператор цикла с предусловием;

2. Оператор цикла с постусловием;

3. Оператор цикла с заданным числом повторений.

Все данные операторы являются сложными. Вход в цикл возможен через его начало.


Цикл с предусловием используют, если число повторений в цикле заранее неизвестно. Форма данного циклического оператора имеет вид:

WHILE <лог_выражение> DO{начало цикла}

BEGIN

Операторы циклической части программы {тело цикла}

END; {конец цикла}

Где while (пока), do (делать) – служебные слова.

Предварительно проверяется значение логического выражения. Пока оно истинно, выполняются операторы циклической части программы, как только выражение становится ложным, происходит выход из цикла. Операторы циклической части заключаются в операторные скобки BEGIN END и представляют составной оператор.

Если в циклической части всего один оператор, то оператор цикла принимает следующий вид:

WHILE <лог_выраж>DO оператор1;

Пример 4.1.

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.

Лабораторная работа №4

Наши рекомендации