Лекция: Лекция 16
Структурные операторы представляют собой совокупности нескольких операторов. К ним относятся:
— составной оператор;
— операторы цикла;
— условный оператор;
— оператор варианта;
— оператор присоединения.
4.9.1. Составной оператор.
Составным оператором называется последовательность операторов, ограниченных ключевыми словами Begin и End; (операторные скобки).
Форма записи
Begin
Оператор1;
Оператор2;
...... .
Операторn
End ;
Перед End символ; можно не ставить.
Замечание. Составной оператор может содержать любые операторы. Delphi не накладывает никаких ограничений на характер операторов, входящих в составной оператор. Составной оператор может содержать другие составные операторы, глубина их вложенности не ограничена.
Основное назначение составных операторов – обеспечить возможность писать программы по современной технологии структурного программирования – без оператора GOTO.
4.9.2. Условный оператор.
Условный оператор предназначен для оформления конструкции «Развилка» структурного пограммирования (рис.4.15.1.).
Рис.4.15.1
В языке ТР такой фрагмент алгоритма оформляется с помощью условного оператора, форма записи которого имеет вид
If < условие > Then <оператор 1> Else <оператор 2> ;.
Здесь If (если), Then (тогда), Else (иначе) – зарезервированные слова; <условие>-произвольное выражение логического типа; <оператор 1>, <оператор 2> -по одному простому или составному оператору. Условный оператор реализует следующий алгоритм. Сначала вычисляется условное выражеие < условие >. Если результат равен True, то выполняется <оператор 1> (<оператор 2> пропускается); если результат есть False то выполняется <оператор 2> (<оператор 1> пропускается.
Условный оператор удобно записывать по схеме алгоритма, используя следующие простые правила:
— после If записываем условие, указанное в ромбике;
— после Then записываем оператор указанный по пути «Да»;
— после Else записываем оператор указанный по пути «Нет»;
— если по пути «Да» или по пути «Нет» располагается более одного оператора, то помещаем их в составной оператор.
Пример записи условного оператора приведен на рис. 4.15.2.
Рис.4.15.2.
Пример записи условного оператора с использованием составного оператора приведен на рис.4.15.3.
Рис.4.15.3
В данном случае по пути «Нет» в алгоритме указано два оператора присваивания поэтому после Else эти операторы помещены в составной оператор.
Замечание. Составной оператор может содержать любые операторы, в том числе и составные. Пример такой конструкции приведен на рис.4.15.4.
Рис.4.15.4.
Как известно в конструкции развилка одна из ветвей может быть пустой. Обычно пустой делают ветвь по пути «НЕТ». В этом случае часть, начинающуюся со слова «ELSE» исключают из оператора IF. Пример оформления такой конструкции приведен на рис.4.15.5.
Рис.4.15.5.
4.9.3 Цикл с предусловием, конструкция While.
В алгоритмах возможны две конструкции циклических процессов: циклы с предусловием и циклы с постусловием. Для оформления таких конструкций в ТР есть соответствующие операторы, причем для цикла с предусловием предусмотрено два вида цикла: цикл While и цикл For.
Форма записи цикла While имеет вид:
While < условие > do < оператор >;
Здесь While (до тех пор пока), do (выполнять) – зарезервированные слова; <условие > -выражение логического типа; < оператор > — один простой или составной оператор.
Эту запись можно прочитать так:
ДО ТЕХ ПОР ПОКА <условие > истинно ВЫПОЛНЯТЬ < оператор >.
Если выражение <условие > имеет значение True, то выполняется < оператор>, после чего снова осуществляется проверка выражения <условие >. Как только выражение <условие > получит значение False, осуществляется выход из цикла, то есть управление передается оператору, расположенному после < оператор > цикла..
Правила:
— если тело цикла содержит более одного оператора, то необходимо использовать составной оператор;
— хотя бы один из параметров, входящих в выражение <условие > должен изменяться в теле цикла. Пример записи цикла с помощью рассмотренной конструкции (вычисление таблицы значений функции) приведен на рис.4.15.6.
Рис.4.15.6.
Лекция 16
4.9.4. Оператор цикла с параметром.
Часто параметр цикла целого типа и его надо изменять с шагом 1 в сторону увеличения или уменьшения. Такая ситуация имеет место например, при обработке массивов, когда в качестве параметра цикла используется индекс элемента массива. Для оформления таких циклов в ТР есть специальный оператор. Который называется «оператором цикла с параметром» (он позволяет получить более короткую запись цикла в программе).
Форма записи цикла с параметром имеет вид:
For n: = b1 To b2 Do Тц ;
где For (для), To (до), Do (выполнять) – зарезервированные слова;
n — параметр цикла (переменная целого типа);
B1, b2 — выражения целого типа;
Тц — один простой или составной оператор.
Пусть значение b1 равно а1, а значение b2 равно а2, тогда эту запись можно прочитать так: для n начиная с а1 выполнять Тц до тех пор пока n<= а2, увеличивая параметр цикла каждый раз на единицу.
Принцип действия.
А) Вычисляются значения выражений b1 и b2 (один раз до цикла);
Б) n получает значение выражения b1 и осуществляется проверка:
В) если n <= значения b2, то выполняется тело цикла, иначе выход из цикла;
г) значение n увеличивается на 1 и осуществляется возврат к шагу В).
Как только n станет > b2 цикл завершается и управление передается оператору, расположенному после Тц.
Пример записи цикла с помощью конструкции For приведен на рис. 4.16.1.
Рис.4.16.1
Так как изменение параметра цикла (К: = К + 1) автоматически учитывается в цикле For, то записывать его в теле цикла не следует (поэтому в данном случае тело цикла содержит только один оператор).
Правило: если тело цикла содержит более одного оператора (оператор изменения параметра цикла не учитывается), то при записи тела цикла надо использовать составной оператор. Пример записи цикла For с использованием составного оператора приведен на рис.4.16.2 (вычисление таблицы значений функции).
Рис.4.16.2.
Если в цикле с параметром параметр цикла должен уменьшаться на 1, то используется конструкция цикла вида
For n: = a1 DOWNTO a2 DO Тц;
Пример записи такой конструкции приведен на рис.4.16.3.
Рис .4.16.3.
4.9.5. Оператор цикла с постусловием.
В цикле с постусловием проверка условия окончания цикла осуществляется после выполнения тела цикла. Форма записи цикла с постусловием имеет вид
Repeat <тело цикла> until <условие>;
Здесь Repeat (повторять) и until (пока) – зарезервированные слова; <тело цикла> произвольная последовательность операторов; <условие> — выражение логического типа. Это выражение можно перевести на русский язык так: Повторять <тело цикла> до тех пор пока не будет выполнено <условие>.
Порядок действий: выполняются операторы тела цикла, после чего вычисляется выражение <условие>: если оно имеет значение False, то снова выполняются операторы тела цикла.
. Пример записи цикла Repeat приведен на рис.4.16.4.
Рис.4.16.4