Раздел: Как стать программистом / Секреты программирования /
Особенности использования вложенных операторов
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), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |