Условный оператор и оператор выбора. Возможные ошибки: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) (Новая: == Ссылки == Алгоритмы для начинающих) |
Mikst (обсуждение | вклад) (→Ссылки) |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
__NOTOC__ | |||
=== Неверная расстановка begin end === | |||
<source lang="Delphi">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.</source> | |||
Операторные скобки должны находиться внутри другого оператора (например, оператора if), а не окаймлять его. | |||
=== Отсутствие begin end === | |||
<source lang="Delphi">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.</source> | |||
Операторные скобки begin-end служат для объединения нескольких операторов в один. В данном случае ими следует окружить 3 оператора по ветке then. Если этого не сделать, то по ветке then будет выполняться только один оператор - v := x; последующие операторы будут выполняться после оператора if всегда, что неверно. | |||
=== Неверная расстановка скобок в сложном логическом выражении === | |||
<source lang="Delphi">var x: integer; | |||
begin | |||
readln(x); | |||
if x>1 and x<10 then // ошибка: отсутствуют скобки | |||
write(x); | |||
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 имеет более высокий приоритет, чем операции > и <, поэтому будет сделана попытка выполнить ее в первую очередь, что неверно.