Delphi. Pascal
Урок 4. Операторы ветвления
Оператор условия - полная форма | Пример |
if условие then | if (x>0) and (y>0) then |
оператор 1 | begin x:=x+y; y:=0 end |
else | else |
оператор 2 | begin x:=x-y; y:=-y end |
Оператор условия - неполная форма | Пример |
if условие then | if x>y then |
оператор | x:=x mod y |
Логическая операция | Описание операции | Приоритет (порядок выполнения операции) |
not | Отрицание (НЕ) | 1 |
and | Конъюнкция (И) | 2 |
or | Дизъюнкция (ИЛИ) | 3 |
xor | Сильная дизъюнкция (ИЛИ-ИЛИ) | 3 |
Логическое отношение (предикат) | Описание отношения | Приоритет (порядок выполнения операции) |
= | Равно | 4 |
> | Больше | 4 |
< | Меньше | 4 |
<> | Не равно | 4 |
<= | Не больше (меньше или равно) | 4 |
>= | Не меньше (больше или равно) | 4 |
К операторам ветвления в Delphi относятся операторы if и case. Оператор if используется тогда, когда у нас есть выбор только из двух вариантов, case - в случае, когда мы имеем множественный выбор.
Вот пример использования оператора if:
...
var
k: Integer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
Readln(k);
if k>0 Then
WriteLn('Positiv number') //Число положительное
else
WriteLn('Negativ number'); //Число отрицательное
ReadLn
end.
Данный фрагмент выводит на экран ту или иную фразу в зависимости от того, является ли введенное пользователем число положительным или отрицательным.
Веточку else можно не писать, если по логике программы она вам не нужна.
Как и в других аналогичных случаях, можно использовать составной оператор, образуемый парой begin - end:
...
if k>0 Then
begin
WriteLn('Positiv number');
k:=0
end
...
Инструкция case
Вариант 1:
case Выражение of Список1_Констант: begin { инструкции } end; Список2_Констант: begin { инструкции } end; СписокJ_Констант: begin { инструкции } end; end;
Вариант 2:
case Выражение of Список1_Констант: begin { инструкции } end; Список2_Констант: begin { инструкции } end; СписокJ_Констант: begin { инструкции J} end; else begin { инструкции } end; end;
Инструкции между begin и end выполняются, если значение выражения, записанного после case, совпадает с константой из соответствующего списка. Если это не так, то выполняются инструкции, находящиеся после else, между begin и end.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Следующий пример - на оператор case:
...
Readln(ch); //ch - типа char
case ch of
'f':
WriteLn('woman'); //женщина
'm':
WriteLn('man'); //мужчина
else
WriteLn('unknown'); //неизвестный
end;
ReadLn
...
Указанный фрагмент печатает на экране woman, man если пользователь введет f или m соответственно или unknown, если пользователь введет что-то другое.
Как и для if, веточку else можно не писать и при необходимости выполнения нескольких операторов в одной из веточек их надо объединять посредством пары begin - end:
...
case ch of
'f':
begin
WriteLn('woman');
WriteLn('Some text');
end;
'm':
WriteLn('man');
end;
...
В каждом из вариантов перед двоеточием может стоять несколько значений. Если это отдельные перечисляемые значения, то они разделяются запятой, если же нам надо указать диапазон значений, то мы используем две точки:
...
var
k: Integer;
begin
Readln(k);
case k of
1, 2:
WriteLn('1 or 2');
3..5:
WriteLn('3, 4 or 5');
end;
ReadLn
end.
В данном фрагменте если k равно 1 или 2, то напечатается одна надпись, а если от 3 до 5 - то другая.