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