Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_Часть_1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
974.85 Кб
Скачать

5.7. Операторы цикла

Циклом называется многократное повторение определенного действия или группы действий. В Паскале различают три вида циклов.

5.7.1. Оператор цикла по счетчику (цикл с параметром )

Оператор цикла с параметром (смотри рис. 5.2) исполняется, если число повторений цикла заранее известно.

for

Иденти-фикатор перемен-ной

:=

Выражение 1

Рис. 5.2. Синтаксическая диаграмма оператора цикла с параметром

Данный оператор называют «циклом с параметром», так как число повторений подсчитывается в переменной, называемой параметром цикла.

На синтаксической диаграмме:

идентификатор переменной – параметра цикла – это имя, описанное в разделе VAR дискретного типа (Boolean, integer, char, byte и т. д.). В ней подсчитывается число повторений цикла;

Выражение 1, Выражение 2 – выражения, определяющие соответственно начало и конец значения параметра цикла; по типу должны совпадать с типом параметра цикла (обозначим их соответственно Выр. 1 и Выр. 2) ;

to означает возрастание параметра цикла (Выр. 1 > Выр. 2) с шагом 1;

downto убывание параметра цикла (Выр. 1 > Выр. 2) с шагом 1;

оператор – любой оператор Р ( в том числе и составной).

Порядок выполнения цикла for:

1. Переменной – параметру цикла присваивается значение Выражения 1.

2. Выполняется оператор.

3. Параметр увеличивается (уменьшается ) на 1.

4. Значение параметра сравнивается с Выражением 2.

Цикл прекращается, выполняется следующий за ним оператор:

– если значение параметра < Выражения 1 (для to);

– если значение параметра > Выражения 2 (для downto);

иначе повторяются действия, начиная с п. 2.

П р и м е р 1. Вычислить n! (1* 2 * 3 * 4 … * n).

program fact_1;

var

I,n:integer; {I -пар-р цикла, n - его кон.Занч.}

f:longint ; {результат}

begin

write(' Введите n ');

readln (n);

f: =1;

for i:=1 to n

do f:=f*i;

writeln(' при n= ',n,' n!=',f)

end.

П р и м е р 2. Распечатать буквы латинского алфавита в обратном

порядке.

program for_2 ;

var

c: char;

begin

for c:='Z'downto 'A'

do write (c)

end.

П р и м е р 3. Найти значение выражения

+

(сумму  и произведение П считать в одном цикле).

program for_3;

var

X,s,p;integer;

Begin

S:=0; P:=1;

for X:=1 to 10

do begin

S:=S+SQR(X);

P:=P*(1-SQR(X))/ABS(X)

end;

writeln('S=',S,'P=',P)

end.

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

Проверка условия выполнения тела цикла с предусловием производится в самом начале оператора (следовательно, может не выполняться ни разу). Синтаксическая диаграмма оператора изображена на рис. 5.3.

Рис. 5.3. Синтаксическая диаграмма цикла с предусловием

Выражение – условие логического типа.

Оператор – любой оператор Паскаля, простой или составной.

Оператор While задает многократное выполнение оператора, стоящего после do. Перед каждым выполнением тела цикла вычисляется значение выражения – условия. Если результат равен True (истина), то выполняется оператор после do, если False (ложь), то действие оператора while прекращается.

Программа вычисления факториала с использованием данного вида цикла будет выглядеть следующим образом:

{фрагмент программы}

begin

i:=1;

f:=1;

readln(n);

while i < =n

do begin

f:=f*i;

inc(i);

end;

П р и м е р. Подсчитать сумму чисел в интервале от 100 до 150, вводимых с клавиатуры. Как только введено отрицательное число, ввод и суммирование прекратить.

А л г о р и т м:

1. Запись в Summa 0.

2. Ввод А.

3. Начало цикла (пока А > = 0 ).

3.1. Проверка условия 100 < A < 150

3.1.1. Если условие истинно, Summa + A.

3.1.2. Ввод нового А

4. Конец цикла.

5. Печать суммы.

Составим таблицу переменных (табл. 5.1).

Таблица 5.1