Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль.doc
Скачиваний:
58
Добавлен:
07.06.2015
Размер:
1.21 Mб
Скачать

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

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

For Параметр := НачальноеЗначение to КонечноеЗначение do

Оператор1; (8.1)

или

For Параметр := НачальноеЗначение Downto КонечноеЗначение do

Оператор1; (8.2)

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

1) целого;

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

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

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

Е

Рис. 2.5. Схема работы оператора For

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

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

Пример: {к величине S прибавляется 10 чисел от 1 до 10}

For i := 1 To 10 Do

S:= S+i;

Если многократно нужно выполнить несколько операторов, то они помещаются в блок операторов – между служебными словами 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;

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

Это циклы, количество повторений которых заранее неизвестно. Выход из цикла определяется условием, записанным относительно параметра.

Пример. Вывести степени двойки, не превышающие 10000.

Количество выводимых чисел – степеней двойки – заранее неизвестно (хотя и может быть вычислено), но есть условие окончания их поиска: выводимое число должно быть меньше 10000.

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

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

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

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

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

Repeat

Операторы

Until условие;

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

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

При этом необходимо обязательно изменять параметр внутри цикла, иначе цикл будет выполняться бесконечно (произойдет "зацикливание"). В соответствии со схемой цикл выполняется по крайней мере 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.