Условный оператор и оператор выбора. Возможные ошибки
Материал из Вики проекта 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 имеет более высокий приоритет, чем операции > и <, поэтому будет сделана попытка выполнить ее в первую очередь, что неверно.