Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_МЕТ№1.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
180.74 Кб
Скачать

2. Циклы со счетчиком

Для их организации в Паскале используется оператор FOR (ДЛЯ), который в общем виде записывается так:

For Параметр:=Нач.значение to Кон.Значение do (1)

Оператор1;

For Параметр:=Нач.значен. downto Кон.Знач. do (2)

Оператор1;

Параметром цикла в этом операторе может служить переменная:

1) целого;

2) символьного типа.

Оператор (1) работает так. Параметр пробегает значения от начального до конечного через 1. При этом, конечное значение должно быть больше или равно начальному. В противном случае оператор не выполняется.

В операторе (2) использовано слово DOWNTO. При этом значения параметра убывают (изменяются от большего – начального, – значения до меньшего с шагом - 1).

Если начальное значение равно конечному, то в обоих случаях (при ТО и DOWNTO) оператор выполняется один раз.

В общем случае (если параметр пробегает несколько значений) оператор 1 выполняется несколько раз.

Операторам (1) и (2) соответствует схема цикла вида рис. 8,а) и б) соответственно.

а) б)

Рис.8. Схема выполнения операторов цикла For

Пример:

For i:= 1 To 10 Do

S:= S+i; {к величине S прибавляется

10 чисел от 1 до 10}

Если многократно нужно выполнить несколько операторов, то они помещаются в блок операторов – между служебными словами BEGIN и END.

Пример.

Ввести в ЭВМ 10 трёхзначных чисел и распечатать их цифры в обратном порядке.

Алгоритм

1. Для номера от 1 до 10

Ввести и обработать число

2. Конец.

Уточняем

1. Для номера от 1 до 10

1.1. Ввести число

1.2. Ц.1 = число mod 10

1.3. Число = число div 10 - выделение двух старших цифр

1.4. Ц.2 = число mod 10

1.5. Ц.3 = число div 10

1.6. Вывести Ц1,Ц2,Ц3

Программа для этого алгоритма будет иметь вид:

PROGRAM DIG;

Const

d=10;

VAR

Num,C1,C2,C3:INTEGRER; {исходное число и цифры}

i:INTEGRER; {Х номер числа }

BEGIN

For i:=1 To d Do

BEGIN

READLN(Num);

C1:=Num MOD d;

Num:=Num DIV d;

C2:=Num MOD d;

C3:=Num DIV d;

WRITELN(C1:2,C2:2,C3:2)

END;

END.

Пункты 1.2 – 1.6 можно также выполнить в цикле вида:

For C2:=1 To 3 do

BEGIN

C1:=Num MOD d;

WRITELN (C1);

Num:=Num DIV d;

END;

3. Итерационные циклы

Это циклы, количество повторений которых заранее неизвестно. Выход из цикла определяется условием, записанным относительно параметра. Пример: Изобразить (на экране или бумаге) степени двойки, не превышающие 10000 – количество степеней не известно заранее (это – решение задачи), но есть условие окончания их поиска: число меньше 10000.

Для циклов с неизвестным числом повторений в Паскале используются 2 оператора:

1) с пост-условием;

2) с пред-условием.

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

Это оператор REPEAT (ПОВТОРЯТЬ), который в общем виде записывается так:

Repeat

Операторы

Until условие;

Схема его работы представлена на рис. 9.

Ри.9. Схема выполнения оператора цикла Repeat

В теле цикла записывается один или несколько операторов, которые будут выполняться многократно. Они располагаются между служебными словами REPEAT и UNTIL, поэтому обрамлять их словами BEGIN и END не нужно. После слова UNTIL записывается условие выхода из цикла (по значению параметра).

Пример.

Если цикл выполняется пока число < 10000, то условие будет:

ЧИСЛО > 10000 - выход из цикла (пока НЕ)

При этом необходимо обязательно изменять параметр внутри цикла, иначе цикл будет выполняться бесконечно (произойдет "зацикливание"). В соответствии со схемой, цикл выполняется по крайней мере 1 раз.

Пример.

Изобразить степени двойки, не превышающие 10000.

Алгоритм

1. Положить число = 2.

2. Повторять:

2.1. Изобразить число.

2.2. Вычислить новое число = число * 2.

Пока число НЕ превысит 10000.

3. Конец

Программа для этого алгоритма будет иметь вид:

PROGRAM Two;

VAR

Num: Integer;

BEGIN

Num:=2;

REPEAT

WRITELN (Num);

Num:=Num*2;

UNTIL Num>1000;

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]