Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА_Паскаль.doc
Скачиваний:
7
Добавлен:
08.05.2019
Размер:
1.77 Mб
Скачать

7. Циклические алгоритмы

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

Group 93 Group 116

Рис.8.1. Циклы

Начальные установки, проверка условия продолжения цикла и модификация параметра цикла служат для управления процессом повторения вычислений.

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

Цикл завершается, если условие его продолжения не выполняется.

В Паскале три вида циклов:

  • Цикл с предусловием while,

  • Цикл с постусловием repeat,

  • Цикл с параметром for.

Каждый из них состоит из определенной последовательности операторов.

7.1. Цикл с предусловием While

Обращение к оператору While… do переводится как «пока… делать» и формат оператора

While<условие>do<оператор>;

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

Условие может быть логической константой, переменной или логическим выражением. While…do предназначен для реализации циклов с предусловием. Например: Вычислить каждое значение y=cos(x) при изменении х от начального значения xn до конечного значения xk с шагом dx. Вычислить сумму положительных значений y, произведения ненулевые y, количество отрицательных y.

Group 207

Рис 8.2 Алгоритм решения

Program cicle_predusl;

Uses CRT;

Var

X, xn, xk, dx, y, s, p: real;

K: integer;

Begin

CLRSCR

{Вводисходныхданных}

Write (‘xn=’); readln(xn);

Write (‘xk=’); readln(xk);

Write (‘dx=’); readln(dx);

S:=0; {присвоение начального значения суммы S}

P:=1; { присвоение начального значения произведения P}

K:=0; { присвоение начального значения количество отрицательных y}

{ присвоение параметру цикла начального значения }

X:=xn;

While x<=xk do

Begin {началоциклаwhile}

y:=cos(x);

wriiteln(‘x=’, x:1:2,’ y=’,y:1:2);

if y>=0 then s:=s+y else k:=k+1;

if y<>0 then p:=p*y;

x:=x+dx; {наращивание параметра цикла}

end; {конецциклаwhile}

writeln (‘ k= ‘, k);

readln;

end.

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