Вложенные циклы

  Внутри алгоритма циклической структуры может быть помещен другой цикл – вложенный (внутренний) цикл.  Можно повторять много раз выполнение другого цикла. Вложенный цикл может быть один, но может быть и несколько вложенных циклов. Второй вложен в первый, третий – во второй и т.д
  Циклы, вложены друг в друга, как "матрешки".
  Цикл, содержащий в себе другой цикл, называют внешним циклом.
 А цикл, содержащийся в теле другого цикла, называют внутренним циклом.

Внешние и внутренние циклы могут быть: 
  • с предусловием while
  • с постусловием repeat
  • с параметром (счетчиком) for

!Все операторы внутреннего цикла должны располагаться в теле внешнего цикла.!

For <счетчик 1>:=<начальное знач.> To <конечное знач.> Do <тело цикла 1>;
For <счетчик 2>:=<начальное знач.> To <конечное знач.> Do <тело цикла 2>;

For <счетчик n>:=<начальное знач.> To <конечное знач.> Do <тело цикла n>;
Так цикл 2 относительно цикла 1 является внутренним, а для цикла n он внешний.
Принцип работы вложенных циклов заключается в следующем. Сначала один раз выполняется цикл, идущий первым в программе, затем управление передается следующему циклу (№2), и если после него нет никаких других циклов, то он прокручивается до конца и снова единожды выполняется внешний цикл, иначе, если после цикла №2 стоит еще один вложенный цикл, то №2 выполняется один раз, передавая управление циклу идущему после него. Такой алгоритм продолжается до тех пор, пока самый внешний цикл не выполниться необходимое количество раз.
ПРИМЕР
Задание: напечатать числа в виде следующей таблицы
3 3 3 3 3
3 3 3 3 3 
3 3 3 3 3 
3 3 3 3 3 
Данная таблица состоит из четырех строчек, в каждой из которых число 3 напечатано 5 раз. Строчку из пяти чисел можно напечатать с помощью одного цикла for:

for i:=1 to 5 do
    write(3, '   ');
Чтобы повторить вывод строчки 4 раза, вставляем этот цикл внутрь другого:

for k:=1 to 4 do
  {4 раза делаем то, что написано между begin’ом и end’ом}
  begin
    for i:=1 to 5 do
      write(3, '   ');  {Выводим одну строку}
    writeln;    {Переводим курсор на следующую строку}
  end;

Задание выполнено!





Отправить комментарий