Нужно ли использовать begin чтобы сработало else?

Как правильно оформить условие? Можно ли сделать так:

if (x <> 1001) then
  writeln(x)
else 
  writeln('-1');

Или нужно делать так:

if (x <> 1001) then begin
  writeln(x);
end
else 
  writeln('-1');

Нужно ли писать begin, чтобы сработало else (как во 2 случае)? Или else может работать и без begin? (как в первом случае)


Ответы (2 шт):

Автор решения: bonchincha

Да, можно так написать это не считается неправильным

Обычно блок

Begin
...
End

используют для объединения нескольких команд в единый блок, но нет запрета на использования блока для одной команды как в вашем случае. Но есть рекомендации использовать begin end нежели опускать, по причине если в дальнейшей разработки вы добавите еще одну команду то в else есть вероятность что вы можете упустить добавить блок и ваша новая команда будет выполняться всегда.

else
 firstcommand();

....

else
 onecommand();
 secondcommand();

или

else
 begin
  firstcommand();
 end
....

else
 begin
  onecommand();
  secondcommand();
 end;
→ Ссылка
Автор решения: Kromster

Если действие после then одно, то можно и без begin .. end его записать.


begin .. end в условиях, обычно используется для предотвращения ошибок в логике и формирования правильной структуры нескольких условий. Например:

// Неправильное форматирование и структуру не так просто заметить
if (x <> 1001) then
  writeln(x);
  if x <> 1002 then
    writeln(x)
else 
  writeln('-1');  // этот else относится ко второму if, а не к первому!

// А вот так, все наглядно
if (x <> 1001) then
begin
  writeln(x);
  if x <> 1002 then
    writeln(x)
end
else 
  writeln('-1');
→ Ссылка