В данной статье описаны приемы использования оператора if
.
Условие — одна из важнейших компонент алгоритмов, цепочек действий, логических схем. В программировании условие применяется для изменения поведения программы в зависимости от состояния одного или группы параметров.
В языке программирования Pascal для работы с условиями применяются два основных оператора:
- IF
- CASE
Общий формат использования оператора IF
Оператор if
имеет следующий формат:
if <Condition> then <Action1> else <Action2>;
Здесь
- Condition — условие типа Boolean
- Action1 — действие при выполнении условия (Condition=True)
- Action2 — действие при невыполнении условия (Condition=False)
В следующем примере функция Area возвращает площадь прямоугольника, если длина каждой его стороны не превышает 15. В противном случае функция возвращает 0:
function Area(a, b: Double): Double;
begin
if (a <= 15) and (b <= 15) then
Result := a * b
else
Result := 0;
end;
Форматы условий
В качестве условия в операторе if
используется выражение логического типа Boolean
. Выражение может иметь значение True
(истина) или False
(ложь). Если условие истинно, то выполняется блок команд THEN, иначе — команды в блоке ELSE.
В логических выражениях допустимо применять:
- операторы сравнения:
=
(равно),<
(меньше),>
(больше),<=
(меньше либо равно),>=
(больше либо равно),<>
(не равно) - логические команды:
and
(и),or
(или),not
(не),xor
(исключающее или)
Пример. Процедура проверяет имя пользователя и пароль на корректность и выдает предупреждение, если выявлена ошибка.
procedure Login(Username, Password: string);
begin
if Username = '' then
begin
ShowMessage('Empty name is not allowed!');
Exit;
end;
if (Password = '') or (Password = Username) then begin ShowMessage('Password is invalid!'); Exit; end;
// ...
end;
Вложенные условия
Условные операторы могут быть вложены друг в друга.
В следующем примере сначала выполняется проверка прочности элемента конструкции. Если проверка прочности проходит, то дополнительно выполняется проверка прогиба:
function AllCases(M, Mr: Double; f, fr: Double): Boolean;
begin
Result := False;
if M <= Mr then
if f <= fr then
Result := True
else
ShowMessage('SLS check is not performed')
else
ShowMessage('ULS check is not performed');
end;
При использовании вложенных условных операторов важно контролировать, к какому из них относится блок else
. Рекомендуется избегать следующих записей:
function F(x);
begin
if x < 0 then
if x < -100 then
Result := -100
else
Result := x; // (x<0) or (x<-100)???
end;
Вместо этого, рекомендуется явно обозначить структуру кода операторными скобками begin..end
:
function F(x);
begin
if x < 0 then
begin
if x < -100 then
Result := -100
else
Result := x;
end;
end;
Сокращенная запись оператора IF
Если по логике работы приложения ветка "иначе" не требуется, то допустима следующая упрощенная запись оператора IF:
if <Condition> then <Action1>;
В любых вариантах использования, если за командой then
или else
следует более одного оператора, то следует использовать операторные скобки begin..end
.