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

Определенные циклы ‘for…do…’

Определенный цикл FOR-DO (цикл со счетчиком) имеет следующую структуру:

(ОТ ДО)

FOR <перем_цикла>:=<нач_знач> TO <конеч_знач> DO

Begin

<тело_цикла>

End;

<перем_цикла> - переменная цикла- любая переменная целочисленного типа (Например INTEGER, кроме REAL). Переменную цикла также называют счетчиком.

<нач_знач> - начальное значение - выражение того же типа;

<конеч_знач> - конечное значение - выражение того же типа;

<тело_цикла> - произвольная последовательность операторов Турбо Паскаля;

При выполнении оператора FOR вначале вычисляется выражение <нач_знач> и осуществляется присваивание <перем_цикла>:=<нач_знач>. После этого циклически повторяется:

- проверка условия <перем_цикла> <= <конеч_знач>; если условие не выполнено, оператор FOR завершает свою работу;

- выполнение операторов входящих в <тело_цикла>;

- наращивание переменной <перем_цикла> на единицу;

Первая форма записи оператора foRс последовательным увеличением счетчика.

  • Для целой переменной строится цикл с шагом +1 по возрастанию параметра

for i:=1 to 8 do Оператор;

В этом случае iпоследовательно принимает значения 1,2,3,..,8.

  • Попытка организовать цикл «от большего к меньшему»

for i:=8 to 1 do Оператор;

не приведет к ошибке, но будет пройден лишь один шаг (i=8).

Пример: Написать программу для вычисления суммы Nпервых натуральных чисел, т.е. требуется вычислить 1+2+3+…N

ProgramPRIMER;

Var

N:integer; {последнее число суммы- исходное данное}

i,s:integer; {счетчик цикла и слагаемое, сумма результата}

Begin

Write(‘N’);Readln(N); {Вводим значениеN}

s:=0; {Начальное значение суммы}

fori:=1toNdo{Цикл подсчета суммы}

s:=s+i;

Writeln(‘S = ’, s); {вывод на экран результата}

End.

Замечание 1. Условие <перем_цикла> <= <конеч_знач>, управляющее работой

цикла FOR-DO проверяется перед выполнением тела цикла: если условие не выполняется в самом начале работы цикла FOR-DO, цикл не будет выполнен ни разу.

Замечание 2.Шаг наращивания параметра цикла строго постоянен и равен 1.

Замечание 3.Внутри тела цикла нельзя менять значения переменной цикла, то есть если i – переменная цикла, то в цикле недопустимо присвоение i какого-нибудь значения: i:=5 неверно.

Вторая форма записи оператора foRcуменьшением счетчика:

FOR <перем_цикла>:=<нач_знач> DOWNTO <конеч_знач> DO

Begin

<тело_цикла>

End;

Замена зарезервированного слова TO на DOWNTO означает, что шаг наращивания переменной цикла равен (-1).

Пример . for i:=8 downto 2 do Оператор;

В этом случае iпоследовательно принимает значения 8,7,6,…2

Пример. Написать программу для вычисления суммы Nпервых натуральных, т.е. требуется вычислить 1+2+3+…N

Фрагмент программы:

s:=0;

for i:=N downto 1 do {от N до 1 вниз}

s:=s+i;

Замечание:Если в цикле выполняется один оператор, то его можно не ставить в последовательно операторовBegin-End.

Циклы с постусловием ‘repeat…until…’

(Повтор Пока не готовы)

Синтаксис оператора цикла REPEAT…UNTIL:

REPEAT

<тело_цикла>

{операторы begin-endне требуются}

UNTIL <логическое условие>

Здесь REPEAT, UNTIL – зарезервированные слова (повторять до тех пор, пока не будет выполнено условие);

Операторы <тело_цикла> выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть FALSE (ложь), операторы <тело_цикла> повторяются, в противном случае оператор REPEAT…UNTIL завершает свою работу.

Обратите внимание: пара REPEAT…UNTIL подобна операторным скобкам begin…end, поэтому перед Until ставить точку с запятой необязательно.

Алгоритм выполнения:Выполнять тело цикла, пока не станет истинным(true) условие, т.е. пока условие ложно (false) выполняется цикл.После слова UNTIL надо записывать условие завершение цикла. Даже если условие сразу окажется истинным, цикл выполнится хотя бы один раз.

1) Выполнение цикла продолжается, если проверка логического условия дает результат ложь;

2) Если логическое условие выполнено выход из цикла.

Пример. Написать программу для вычисления суммы Nпервых натуральных, т.е. требуется вычислить 1+2+3+…N

Фрагмент программы

s:=o; {начальное значение суммы)

i:=1; {начальное значение счетчика и слагаемое}

REPEAT

s:=s+i; {добавим слагаемое к сумме}

i:=i+1; {увеличение значения счетчика и слагаемое на 1}

UNTILi>N; {вып. пока ложно, условие завершение цикла)