Условный оператор и оператор выбора. Возможные ошибки
Материал из Вики проекта PascalABC.NET
Неверная расстановка begin end
var x,y: integer; v: integer; begin write('Введите x,y: '); readln(x,y); begin // ошибка: операторные скобки должны использоваться по ветке then оператора if if x>y then v := x; x := y; y := v end; writeln('Результат упорядочения по возрастанию: ',x,' ',y); end.
Операторные скобки должны находиться внутри другого оператора (например, оператора if), а не окаймлять его.
Отсутствие begin end
var x,y: integer; v: integer; begin write('Введите x,y: '); readln(x,y); if x>y then v := x; // ошибка: операторные скобки отсутствуют, поэтому по ветке then выполняется только этот оператор x := y; // эти операторы выполняются ПОСЛЕ оператора if в любом случае y := v // writeln('Результат упорядочения по возрастанию: ',x,' ',y); end.
Операторные скобки begin-end служат для объединения нескольких операторов в один. В данном случае ими следует окружить 3 оператора по ветке then. Если этого не сделать, то по ветке then будет выполняться только один оператор - v := x; последующие операторы будут выполняться после оператора if всегда, что неверно.
Неверная расстановка скобок в сложном логическом выражении
var x: integer; begin readln(x); if x>1 and x<10 then // ошибка: отсутствуют скобки write(x); end.
В языке Паскаль операция and имеет более высокий приоритет, чем операции > и <, поэтому будет сделана попытка выполнить ее в первую очередь, что неверно.
