Раздел 3.4.4. Вложенные циклы

Циклы могут быть простыми или вложенными (цикл в цикле).

Например:

Program VCicl;
var i,j:integer;
begin
for i:=1 to 5 do

begin
writeln;

for j:=10 to 13 do

write('i=',i,' j=',j);

end;

readln;
end.

Для цикла for i:=1 to 5 do телом цикла является:

begin for j:=10 to 13 do

write(' i= ', i, ', j = ', j);

writeln;

end;

Этот цикл является внешним, по отношению к нему внутренним будет цикл:

for j:=10 to 13 doс телом write (' i = ', i, j =', j);

Разберём работу программы, с вложенным циклом.
Сначала программа и начинает выполнять внешний цикл: присваивает i=l, затем переходит к его телу, а здесь встречает внутренний цикл и присваивает j значение 10, после чего выполняет тело внутреннего цикла, т.е. выводит на экран i=l, j=10. Так как внутренний цикл еще не окончен, то машина продолжает его выполнять, т.е. присваивает j значение 11 и добавляет к уже выведенной строке i=l, j=11.

Заметим, что оператор writeотличается от оператора writeln тем, что он не начинает вывод с новой строки, а продолжает писать в той же строке, т.е. после второго выполнения внутреннего цикла на экране появится

i= 1, j=10 i= 1, j=11.

Программа продолжит выполнение внутреннего цикла, и, когда он закончится (выполнится для j = 10,11,12,13), на экране будет строка

i = 1 j = 10 i =l j = 11 i = 1 j = 12 i = 1 j = 13.

Внутренний цикл закончится, однако тело внешнего цикла еще не закончи-лось, поэтому выполняется оператор writeln, который переводит курсор на новую строку. После этого тело внешнего цикла закончится, но сам цикл отработал только для i = 1. Поэтому внешний цикл продолжит работу, присвоив i: =2 и вновь начав выполнение своего тела. Встретив внутренний цикл j, на экран с новой строки выведется: i=2, j=10, затем к этой строке добавится i=2, j=11 и т.д., пока не закончится внутренний цикл.

Таким образом, внешний цикл, изменяя индекс i от 1 до 5, заставит каждый раз выполняться полностью внутренний цикл, и в результате работы программы на экране появится:

i=l, j=10 i=1, j=11 i=1, j=12 i=1, j=13

i=2, j=10 i=1, j=11 i=1, j=12 i=1, j=13

i=3, j=10 i=1, j=11 i=1, j=12 i=1, j=13

i=4, j=10 i=1, j=11 i=1, j=12 i=1, j=13

i=5, j=10 i=1, j=11 i=1, j=12 i=1, j=13

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

for i:=l to 9 do

for j:=l to 9 do

for k:=l to 9 do

writeln (i, j, k);

дает столбик цифр:

111 112 113 114 … 119

– – – – –

121 122 123 124 … 129

– – – – –

211 212 213 214 … 219

– – – – –

991 992 993 994 … 999

что составляет 1000 строчек.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: