Используйте конструкции if .. then или if .. then .. else для выполнения кода при истинном условии. В отличие от языков семейства C: условное выражение в Pascal не требует оборачивания скобками.
var
A: Integer;
B: boolean;
begin
// При истинном условии только одна инструкция, begin end не нужны
if A > 0 then
DoSomething;
// Несколько инструкций при истинном условии, обязательно оборачиваем begin end
if A > 0 then
begin
DoSomething;
AndDoSomethingMore;
end;
// Однострочная структура if-else
if A > 10 then
DoSomething
else
DoSomethingElse;
// Полностью эквивалентная логика предыдущему примеру: сохраняем результат сравнения в булеву переменную
B := A > 10;
if B then
DoSomething
else
DoSomethingElse;
end;Code language: JavaScript (javascript)
Правило привязки else
Конструкция else привязывается к ближайшему необвязанному if. Код ниже работает согласно ожиданиям:
if A <> 0 then
if B <> 0 then
AIsNonzeroAndBToo
else
AIsNonzeroButBIsZero;Code language: HTML, XML (xml)
Данный else относится к внутреннему блоку if B <> 0.
Вложенные конструкции if без оборачивания блоком синтаксически допустимы, но плохо читаются. Рекомендуется оборачивать всю внутреннюю вложенную логику конструкциями begin … end для четкого разграничения логических блоков; даже при хаотичном отступе легко определить границы области видимости и избежать ошибок при добавлении или удалении ветвей.
Оптимизированный стандартный вариант записи:
if A <> 0 then
begin
if B <> 0 then
AIsNonzeroAndBToo
else
AIsNonzeroButBIsZero;
end;Code language: HTML, XML (xml)
- Условие после if не оборачивается скобками (в C/C++/Java скобки обязательны, в Pascal всё наоборот);
- Если после then только одна строка кода – блоки
begin endможно опустить; при нескольких строках они обязательны; elseпривязывается к ближайшему внутреннему if; при вложенных конструкциях всегда используйте блоки для исключения неоднозначности;- Выражения сравнения (например
A>10) можно напрямую присваивать булевым переменным.
Ниже полный запускаемый пример: определение оценки по баллам
Логические правила:
- ≥90 → A
- ≥80 и <90 → B
- ≥60 и <80 → C
- <60 → D
{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program ScoreLevel;
var
score: Integer;
begin
Write('Введите балл за экзамен: ');
ReadLn(score);
if score >= 90 then
Writeln('Оценка: A')
else if score >= 80 then
Writeln('Оценка: B')
else if score >= 60 then
Writeln('Оценка: C')
else
Writeln('Оценка: D');
ReadLn;
end.Code language: PHP (php)
Скомпилируйте и запустите программу
Введите балл за экзамен: 96
Оценка: A
Программа предложит ввести балл, после чего выведет соответствующую оценку.
Нелатинские символы могут отображаться искаженно, добавьте строку: {$codepage utf8}
Логику получения оценки также можно вынести в отдельную функцию.
{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program ScoreLevelFunc;
function GetLevel(s: Integer): string;
begin
if s >= 90 then
Result := 'A'
else if s >= 80 then
Result := 'B'
else if s >= 60 then
Result := 'C'
else
Result := 'D';
end;
var
score: Integer;
begin
Write('Ваш балл: ');
ReadLn(score);
Writeln('Ваша оценка: ', GetLevel(score));
ReadLn;
end.Code language: PHP (php)

Условная проверка if