logo
Лекции по информационным технологиям / Лекции_2_семестр

Условные операторы

Операторы в программе-обработчике событий выполняются в той последовательности, в которой они записаны. Однако достаточно часто требуется изменить порядок выполнения операторов в зависимости от выполнения (или невыполнения) определенного условия.

Выбор одного из альтернативных путей работы программного кода в зависимости от результата проверки какого-либо условия (логического выражения) в Delphiобеспечивают два оператора: условный операторIf и оператор выбораCase.

Условный оператор If существует в двух формах: полной и сокращенной, и схематично может быть изображен следующим образом:

Сокращенная форма

Полная форма

Структура условного оператора имеет следующий синтаксис:

Сокращенная форма

If Лог_выр Then Оператор;

Полная форма

If Лог_выр Then Оператор_1 Else Оператор_2;

Выполнение оператора заключается в следующем: если логическое выражение, записанное после ключевого слова If,принимает значениеTrue, то выполняется оператор после ключевого словаThen, а если оно имеет значениеFalse, то выполняется оператор, следующий за ключевым словомElse, если таковой имеется. Например,

If a=0 Then x:=x+1;

If x < 9 Then b:=’False!’ Else b:=’True!’;

Замечание. Перед Elseточка с запятой не ставится.

Каждый из операторов, входящих в состав условного оператора может быть простым или составным. Кроме того, один условный оператор может входить в состав другого, например:

If Условие_1 Then

If Условие_2 Then Оператор_1

Else Оператор_2

Else Оператор_3;

При вложенности условных операторов каждое Elseсоответствует томуThen, которое непосредственно ему предшествует. Поэтому для наглядности и лучшего восприятия структуры программы, особенно при использовании вложенных операторов, лучше писатьElse под соответствующимТhеn.

Оператор выбора Case. Оператор выбора позволяет обрабатывать в программе несколько условий и аналогичен блоку конструкцийif...Then...Else. Используется он для частичного облегчения программирования задач, в которых содержится большое число различных проверок. Его также удобно применять тогда, когда выполнение одного из многочисленных действий зависит от значения какой-либо переменной. Синтаксис оператора выбораCase:

Case k of

A1: Оператор_1;

A2: Оператор_2;

. . . . . . . .

AN: Оператор_N

[Else Оператор, выполняемый в случае, если значение выражения не попало ни в один из списков констант A1, A2,…,AN]

End;

Замечание. Здесь и далее квадратные скобки служат для обозначения необязательной части в структурах операторов.

Выполнение оператора начинается с вычисления выражения-селектора k, затем полученное значение сравнивается с константамиA1,…,AN(метками ветвей) и выполняется соответствующий оператор.

Выражение-селектор kможет иметь только простой порядковый тип (целый, символьный, логический); константыA1,…,ANдолжны быть того же типа, что и селектор. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками.

Циклы

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

Многократно выполняемые последовательности операторов называют циклами, а изменяющиеся в цикле переменные –переменными цикла.

Алгоритм циклической структуры должен содержать:

В Delphiдля этой цели существуют два вида элементарных циклических структур:

Циклы с параметром. Если количество повторов тела цикла заранее известно, то обычно используют так называемые циклы с параметром.

Схематично такой цикл может быть изображен следующим образом:

Циклы с параметром реализуются с помощью оператора For. Он может быть представлен в двух форматах:

ForСчетчик:=S1ToS2DoТело цикла;

ForСчетчик:=S1DownToS2DoТело цикла;

где Счетчик – параметр цикла порядкового типа (целого, символьного, логического, и т.п.);S1 и S2– выражения, определяющие начальное и конечное значение параметра цикла;Тело цикла– простой или составной оператор.

Цикл повторяется пока значение параметра цикла лежит в интервале [S1,S2], причем эти выраженияS1 и S2вычисляются только один раз в начале цикла. Необходимо, чтобы параметр цикла, начальное и конечное значения были одного типа. Этот тип не может быть вещественным.

В первом варианте при каждом повторении цикла значение параметра цикла увеличивается на 1, во втором – уменьшается на 1.

Если начальное значение параметра цикла превышает конечное значение, при шаге цикла равным 1, то тело цикла ни разу не будет выполнено.

Циклы с условиемиспользуются тогда, когда число повторений тела цикла заранее неизвестно, но задано условие окончания цикла. Причем, если условие окончания цикла проверяется перед выполнением тела цикла, то такие циклические структуры называют цикламис предусловием(«Выполнять пока»), а если проверка условия происходит после выполнения тела цикла – цикламис постусловием(«Выполнять до тех пор, пока»).

На практике циклы с условием чаще всего используют в двух случаях:

Циклы с предусловием

Схематично изображаются следующим образом:

Реализуются с помощью оператора While

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

WhileУсловиеDoТело цикла;

Тело цикла может быть простым или составным оператором. Значение логического выражения в условии вычисляется перед каждым выполнением тела цикла. Если значение истинно, то тело цикла выполняется и снова вычисляется выражение условия. Если результат имеет ложное значение, происходит выход из цикла.

Циклы с постусловием

Схематично изображаются следующим образом:

Реализуются с помощью оператора Repeat … Until.

Формат оператора цикла с постусловием Repeat … Until:

Repeat

Тело цикла

UntilУсловие;

Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если значение логического выражения ложно, тело цикла выполняется еще раз, если истинно – происходит выход из цикла. Тело цикла с постусловием выполняется всегда хотя бы один раз.

Замечание 1. Чтобы циклы с предусловием и постусловием успешно завершился необходимо, чтобы в теле цикла был хотя бы один оператор, изменяющий значения, входящих в логическое выражение переменных.

Замечание 2. При использовании цикла с постусловием нет необходимости в операторных скобках.