Опубликован: 25.06.2014 | Уровень: для всех | Доступ: платный | ВУЗ: Учебный центр "ANIT Texno Inform"
Лекция 7:

Логические типы, конструкции и компоненты

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

Операторские скобки BEGIN…END

Логический оператор IF, как и многие другие операторы, которые нам еще предстоит изучить, выполняет только одно действие. Взгляните на следующий код:

if a then
   ShowMessage('Действие №1');
   ShowMessage('Действие №2');
   ShowMessage('Действие №3');
    

В этом примере сообщение "Действие №1" выйдет только в том случае, если a = True. Остальные сообщения выйдут в любом случае, так как они к оператору IF уже не относятся, а выполняются как самостоятельные операторы. Однако что делать, если в рамках конструкции IF нам нужно выполнить не один оператор, а целый блок кода? В таком случае, этот блок помещают в операторские скобки begin…end, в результате чего блок операторов выполняется, как единый оператор. Изменим код:

procedure TfMain.Button1Click(Sender: TObject);
var
  a: boolean;
begin
  if a then begin
    ShowMessage('Действие №1');
    ShowMessage('Действие №2');
    ShowMessage('Действие №3');
  end; //конец if
end;
    

В данном примере все три сообщения заключены в скобки begin…end и выполняются, как один оператор. Значит, они все будут выведены, только если a = True, иначе не будет выведено ни одно сообщение.

Здесь следует сказать пару слов о стиле программирования. Единых стандартов тут нет, есть только рекомендации.

Во-первых, код должен быть удобочитаем. Сравните:

  if a then ShowMessage('Действие №1') else ShowMessage('Действие №2');
    

Синтаксис здесь правильный, компилятор ошибок не найдет. И код этот будет выполнен верно, однако как же его сложно читать! Все части конструкции IF сливаются в одну строку, сразу и не разберешь, что тут к чему, а ведь конструкция еще очень простая! Что, если бы мы применяли несколько операций AND или OR, да еще с множеством операндов? Совсем иначе смотрится такой код:

  if a then
  ShowMessage('Действие №1')
  else
  ShowMessage('Действие №2');
    

Здесь конструкция разбита на несколько небольших логических частей, каждой части отведена отдельная строка. Код стал явно более понятным, как говорят, более удобочитаемым. Однако его можно еще улучшить, если сдвинуть вложенные операторы вправо на 2-3 пробела, чтобы показать зависимости:

  if a then
     ShowMessage('Действие №1')
  else
    ShowMessage('Действие №2');
    

Хороший программист именно так и оформляет свой код. Тут сразу видно, что от чего зависит, конструкция становится понятней.

Во-вторых, если вы применяете операторские скобки, то в учебной литературе вы можете встретить два способа оформления кода. Такой:

  if a then begin
    ShowMessage('Действие №1');
    ShowMessage('Действие №2');
    ShowMessage('Действие №3');
  end; //конец if
    

и такой:

  if a then
  begin
    ShowMessage('Действие №1');
    ShowMessage('Действие №2');
    ShowMessage('Действие №3');
  end; //конец if
    

Оба этих способа считаются классическими, оба хорошо смотрятся, какой из них применять - ваш выбор. Лично я не люблю переносить BEGIN на отдельную строку (разве что строка получается слишком длинной), поэтому предпочитаю первый способ. Вы, если захотите, можете выбрать и второй вариант, он тоже правильный.

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Инга Готфрид
Инга Готфрид
Александр Скрябнев
Александр Скрябнев

Через WMI, или используя утилиту wmic? А может есть еще какие более простые пути...