logo
Лекции по TURBO PASCAL

Цикл в цикле

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

Начнём знакомство с составления программы, которая выводит на экран числа от 10 до 29. Выпишем сначала все эти числа в ряд:

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Посмотрите внимательно! Замечаете закономерность? Сначала увеличиваються единицы от 0 до 9, при этом значение десятков не меняется. Только когда перебор единиц завершён, десятки увеличились на 1. После этого опять пошли плясать подряд единицы.

Давайте отразим поведение десяток и едениц в составляемой программе. В переменной a – у нас будут десятки, в b – единицы:

for a := 1 to 2 do

for b := 0 to 9 do

begin

s := a*10 + b;

writeln (s)

end;

Вот они: вложенные циклы! Как только начал выполнение первый цикл “для а”, тут же началось выполнение цикла “для b”. И пока этот внутренний цикл не выполнится (в маленьком прямоугольнике), внешний цикл не продолжит выполнение.

Как вы думаете, сколько всего раз выполниться содержимое маленького прямоугольника? А содержимое большого?

Попробуйте на основе этого примера самостоятельно составить программу, которая выведет на экран числа от 27 до 49, причём чтобы единицы принимали только значения от 7 до 9. То есть на экран должны буть выведены следующие числа:

27 28 29

37 38 39

47 48 49

Теперь несколько небольших заданий на эту тему.

Сколько раз выполниться оператор writeln внутри следующих циклов:

for i := 1 to 5 do

for j := 5 to 10 do

begin

writeln (i+j)

end;

Сколько раз выполнится оператор := внутри следующих циклов:

a := 0;

while a <= 5 do

while a <= 10 do

a := a + 1;

Сколько раз выполнится оператор := внутри следующих циклов:

a := 0;

while a <= 10 do

while a <= 20 do

a := a + 1;

Сколько раз выполнится оператор := внутри следующих циклов:

a := 0;

while a <= 20 do

while a <= 10 do

a := a + 1;

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