Раздел: Как стать программистом / Секреты программирования /

Особенности использования вложенных операторов

Lazarus IDE: Основы программирования в Windows Lazarus IDE: Основы программирования в Windows

Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее...

Вложенные операторы - это, как правило, однотипные операторы, которые вложены друг в друга. Например:

if TRUE then
    if FALSE then ;  //Это вложенный условный оператор if

Вложенными могут быть и любые другие операторы, такие как оператор выбора (case) и операторы циклов.

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

Вот пример исходного кода:

//----------------------------------------------------------------
// Ищет каталоги в каталоге Dir
//----------------------------------------------------------------
procedure TfrmMain.FindFilesOnDisk(Dir : string);
var SR    : TSearchRec;
    Err   : integer;
    i, j  : integer;
    st    : string;
begin
  if (Dir[Length(Dir)] <> '\') then Dir := Dir + '\';
  Err := FindFirst(Dir + '*.*', faAnyFile, SR);
  while Err = 0 do
    begin
      j := 0;
      st := AnsiUpperCase(SR.Name);
      if lbDirs.Items.Count > 0 then //Если в списке есть каталоги
        //Проверить, нет ли среди них
        for i := 0 to lbDirs.Items.Count - 1 do            
          if lbDirs.Items[i] = st then  //найденного
            begin
              j := 1;
              break;
            end;      //if lbDirs.Items[i] = st then
      if j = 0 then
        begin
          if (SR.Name <> '.') and
             (SR.Name <> '..') and
             ((SR.Attr and faDirectory) <> 0) then
            begin
              inc(NumDir);
              DirList.Add(Dir + st);
              frmMain.sbMain.Panels[1].Text := IntToStr(NumDir);
              pbFind.Position := NumDir;
              Application.ProcessMessages;
              FindFilesOnDisk(Dir + SR.Name);
            end;    //if (SR.Name <> '.') and
        end;        //if j = 0 then
      Err := FindNext(SR);
    end;
end;

Совершенно неважно, что делает этот код. Важно, что он содержит вложенные операторы. И вообще в программе может быть довольно много вложенных операторов, которые как матрёшки находятся друг в друге.

И когда таких операторов слишком много, очень трудно бывает понять, где кончается блок кода одного оператора и начинается другой. Поэтому в конце каждого блока я ставлю комментарий, в котором пишу начало оператора (например, if j = 0 then). И тогда становится видно и понятно, что здесь кончается блок именно этого оператора.

В примере такие случаи выделены цветом.

Ограничения вложенных операторов

Напоследок пару слов об ограничениях вложенных операторов.

Во-первых, эти ограничения зависят от языка программирования. Во-вторых, от компилятора и средства разработки.

Почти во всех языках при использовании вложенных операторов требуется применять так называемые операторные скобки (в Паскале это begin...end, в С++ это {...}). Обычно допускается не использовать операторные скобки, если в блоке только одно выражение. Подробнее см. здесь.

Кроме того, в некоторых языках программирования могут быть ограничения на количество вложенных операторов. Впрочем, в любом случае следует стремиться к тому, чтобы вложенных операторов было как можно меньше, потому что это усложняет код, делает его менее “читабельным” (менее понятным), и, следовательно, повышает вероятность возникновения труднонаходимых ошибок.


Первые шаги в программирование Первые шаги в программирование

Очень небольшая книга, которую можно прочитать буквально за 15 минут. Но эти 15 минут дадут вам представление о том, что такое программирование. И вы даже напишите свою первую программу. Для тех, кто интересуется программированием, но ещё не знает, что это такое, и не пробовал создавать программы (или пробовал, но не получилось). Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика