Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ АЛГОРИТМИЗАЦИИ.doc
Скачиваний:
14
Добавлен:
16.08.2019
Размер:
1.8 Mб
Скачать

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

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

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

  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. Цикл Whiledo Вариант №2. Цикл Repeatuntil

Вариант №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.