Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Операторы итерационных циклов
Формат оператора итерационного цикла с предусловием: 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;
|