Условный оператор и оператор выбора. Возможные ошибки: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) |
Mikst (обсуждение | вклад) (→Ссылки) |
||
(не показано 5 промежуточных версий этого же участника) | |||
Строка 15: | Строка 15: | ||
writeln('Результат упорядочения по возрастанию: ',x,' ',y); | writeln('Результат упорядочения по возрастанию: ',x,' ',y); | ||
end.</source> | end.</source> | ||
Операторные скобки должны находиться внутри другого оператора (например, оператора if), а не окаймлять его. | |||
=== Отсутствие begin end === | === Отсутствие begin end === | ||
Строка 29: | Строка 30: | ||
writeln('Результат упорядочения по возрастанию: ',x,' ',y); | writeln('Результат упорядочения по возрастанию: ',x,' ',y); | ||
end.</source> | end.</source> | ||
Операторные скобки begin-end служат для объединения нескольких операторов в один. В данном случае ими следует окружить 3 оператора по ветке then. Если этого не сделать, то по ветке then будет выполняться только один оператор - v := x; последующие операторы будут выполняться после оператора if всегда, что неверно. | |||
=== Неверная расстановка скобок в сложном логическом выражении === | === Неверная расстановка скобок в сложном логическом выражении === | ||
Строка 37: | Строка 39: | ||
write(x); | write(x); | ||
end.</source> | end.</source> | ||
В языке Паскаль операция and имеет более высокий приоритет, чем операции > и <, поэтому будет сделана попытка выполнить ее в первую очередь, что неверно. | |||
== Ссылки == | == Ссылки == | ||
[[ | *[[Программы для начинающих]] | ||
*[http://pascalabc.net/ru/programmyi-i-algoritmyi-dlya-nachinayuschih.html Сайт PascalABC.NET: Программы и алгоритмы для начинающих] |
Текущая версия от 15:48, 19 января 2010
Неверная расстановка 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 имеет более высокий приоритет, чем операции > и <, поэтому будет сделана попытка выполнить ее в первую очередь, что неверно.