Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типы данных и операторы языка Delphi и Pascal.doc
Скачиваний:
2
Добавлен:
20.12.2018
Размер:
211.46 Кб
Скачать

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

Предназначен для выполнения тех или иных действий в зависимости от истинности или ложности некоторого условия. Синтаксис:

if <условие > then <оператор>;

if <условие> then <оператор1> else <оператор2>;

Условный оператор в короткой форме работает по правилу: если булевское выражение, записанное в условии, истинно, то выполняется оператор 1, далее выполняется оператор, следующий за условным. Если булевское выражение ложно, то будет выполняться оператор, следующий за этим условным оператором.

В выражении должен получаться результат, имеющий стандартный булевский тип. Если результатом выражения является истинное значение (true), то выполняется оператор, следующий за ключевым словом then. Если результатом выражения является значение false и присутствует ключевое слово else, то выполнятся оператор, следующий за ключевым словом else. Если ключевое слово else отсутствует, то никакой оператор не выполняется.

В общем случае ключевое слово else связывается с ближайшим ключевым словом if, которое еще не связано с ключевым словом else.

Примеры использования оператора if:

if X < 1.5 then Z := X+Y else Z := 1.5;

if P1 <> nil then P1 := P1^.father;

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

Синтаксическая неоднозначность, возникающая в конструкции:

if e1 then if e2 else e3

разрешается путем следующей интерпретации этой конструкции:

if e1 then begin

if e2 then s1 else s2

end

3.6. Оператор варианта

Оператор варианта (casе) состоит из выражения (переключателя) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Переключатель (селектор) должен иметь порядковый тип (размером в байт или слово). Таким образом, строковый тип и длинный целый тип являются недопустимыми типами переключателя. Все константы выбора должны быть уникальными и иметь порядковый тип, совместимый с типом переключателя. В общем виде оператор case записывается следующим образом:

case выражение of

список значений 1: оператор1;

список значений 2: оператор2;

список значений n: операторn;

else

оператор;

end;

Оператор варианта case приводит к выполнению оператора, которому предшествует константа выбора, равная значению переключателя или диапазону выбора, в котором находится значение переключателя. Если такой константы выбора или такого диапазона выбора не существует и присутствует ветвь else, то выполнится оператор, следующий за ключевым словом else. Если же ветвь else отсутствует, то никакой оператор не выполняется. Примеры оператора варианта:

case Operator of

plus: X := X+Y;

minus:X := X–Y;

times:X := X*Y;

end;

case I of

0, 2, 4, 6, 8: Writeln('Четная цифра');

1, 3, 5, 7, 9: Writeln('Нечетная цифра');

10..100: Writeln('Между 10 и 100');

end;

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

Структура while do используется для организации циклического выполнения оператора, пока выполняется некоторое условие. Синтаксис:

while <условие> do <оператор>;

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

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

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

<Оператор> может быть простым или составным. Он выполняется повторно до тех пор, пока выражение принимает значение truе.

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

while I > 0 do begin

if Odd(I) then Z := Z * X;

I := I div 2;

X := Sqr(X);

end;

while not Eof(InFile) do begin

Readln(InFile,Line);

Process(Line);

end;

while Data[I] <> X do I := I + 1;