Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
краткий курс по паскалю.doc
Скачиваний:
44
Добавлен:
03.06.2015
Размер:
193.54 Кб
Скачать

2.14. Блок-схема цикла с известным числом повторений.

Тело цикла

2.15. Операторы итерационных циклов

Формат оператора итерационного цикла с предусловием:

WHILE <усл> DO ( S1; S2; ... ; Sn );

где

  • WHILE - первое ключевое слово, в переводе означает "пока";

  • <усл> - условие естественного окончания цикла, записанное в

  • виде логического выражения или операции отношения;

  • DO - второе ключевое слово, в переводе означает "выполняем";

  • (S1;S2;...;Sn) - составной оператор, тело цикла.

Оператор работает следующим образом: до начала исполнения операторов тела цикла происходит проверка условия выполнения цикла (отсюда взято название цикла- " с предварительной проверкой условия "). Если оно не нарушено, тело цикла исполняется. Но может быть, что при неправильном составлении программы, <усл> не выполняется сразу, следовательно, тело цикла тоже ни разу не будет выполнено. Работа продолжается, пока выполняется <усл>.

Формат оператора итерационного цикла с постусловием:

REPEAT S1; S2; ... ; Sn UNTIL <усл>;

где

  • REPEAT - первое ключевое слово, в переводе означает "повторять";

  • S1; S2; ... ; Sn - составной оператор, тело цикла. В этом составном операторе слова BEGIN ... END не нужны, поскольку считается, что слова REPEAT ...UNTIL сами являются операторными скобками;

  • UNTIL - второе ключевое слово, в переводе означает "до тех пор, пока";

  • <усл> - условие естественного окончания цикла, записанное в виде логического выражения или операции отношения.

Оператор работает следующим образом: после первого выполнения операторов тела цикла происходит проверка условия окончания цикла (отсюда взято название цикла-" с последующей проверкой условия"). Если оно не выполняется, управление передаётся на начало цикла и работа продолжается до выполнения <усл>.

При всей несхожести этих операторов они выдвигают одни и те же требования к организации вычислительного процесса:

  • перед началом работы цикла управляющая переменная должна получить нужное начальное значение;

  • условие естественного окончания цикла - " <усл> " - необходимо составить таким образом, чтобы оно обеспечивало многократное его повторение;

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

Тело цикла

нет

да

Тело цикла

нет

да

а) б)

Рис.2.4. а) цикл WHILE-DO ; б) цикл REPEAT-UNTIL

2.15. Характерные приёмы программирования циклических вычислительных процессов

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

В таких ситуациях принято применять специальные операторы, называемые счётчик, сумматор, накопитель произведения. Рассмотрим работу счётчика. Условимся о таком допущении: введём индексацию переменных, которая будет обозначать текущее её значение на соответствующем шаге цикла. Формула счётчика выглядит так:

N:=N+1;

C точки зрения алгебры это сплошной абсурд - переменная не может равняться себе самой плюс ещё какая-то константа. Чтобы понять, в чём тут дело, необходимо вспомнить, как выполняется оператор присваивания. Символ ":=" не означает равенства левой и правой частей уравнения. При обработке этого оператора транслятором сначала в процессор будет отослана информация, уже записанная в ячейку, отведённую под переменную N, т.е. "старое", (предыдущее) значение N. Затем туда будет послана константа "1" и т.д. После вычисления суммы "старое" значение + 1 - этот результат будет записан туда же, т.е. в ячейку переменной N.

Счётчик располагается на циклическом участке

................... программы. До начала цикла он инициализирует-

................... ся нулевым значением (N0=0).Подсчитаем, какое

N:=0; значение он получит на первом шаге:

................... I N1 = N0 + 1 = 0 + 1 = 1

{Начало цикла} Второе значение будет вычислено также, но с

................... учётом значения N, полученного после первого

N:=N+1; шага:

................... II N2 = N1 + 1 = 1 + 1 = 2

{Конец цикла} Третье значение вычисляется по уже известной

................... схеме:

III N3 = N2 + 1 = 2 + 1 = 3 и т.д.

Сумматор выполняется следующим оператором:

S := S + Y;

Переменная S до начала цикла, как и N у счётчика, обнуляется. Затем к начальному значению последовательно, на каждом шаге цикла, вместо единицы, как у счётчика, добавляются значения суммируемой переменной. В нашем примере - рассчитываемой функции Y. Для нормальной работы накопителя произведения его начальное значение должно быть равным 1. В противном случае конечное значение произведения будет искажено начальной величиной. Совершенно недопустимым является присваивание накопителю произведения в качестве начального значения нуля. Вычисления производятся оператором:

P := P*Y ;