Вложенные конструкции if-else
Следует быть внимательными при использовании вложенных операторов if
. Предпочтительнее пользоваться схемой else-if
(т.е. вкладывать во внешнюю ветку else
), а не then-if
(т.е не вкладывать во внешнюю ветку if
). Так как в последнем случае придется следить за тем, к какой ветке относится соответствующее else
. Пренебрежение этим правилом приводит к нагромождению закрывающих else
.
Сравните две программы ниже. Они делают одно и то же. Однако предпочтительной является первая.
else-if
var
a: integer;
begin
write('Введите целое число: ');
readln(a);
if a = 0 then
writeln('zero')
else
if a = 1 then
writeln('one')
else
if a = 2 then
writeln('two')
else
writeln('unknown');
end.
then-if
var
a: integer;
begin
write('Введите целое число: ');
readln(a);
if a <> 0 then
if a <> 1 then
if a <> 2 then
writeln('unknown')
else
writeln('two')
else
writeln('one')
else
writeln('zero');
end.
При использовании второго варианта надо помнить следующее общее правило: каждый else
относится к ближайшему предшествующему if
, еще не имеющему парного else
.
При вложении в ветвь else
(первый вариант) конструкция получается логически более понятной.