Теоретические сведения
Если тело какого-то цикла содержит другую циклическую
структуру, то такие циклы называются вложенными. Цикл, который
содержит другой цикл, называют внешним. Цикл, который содер-
жится в теле другого цикла, называют внутренним.
Внешний и внутренний циклы могут быть любыми из трех ви-
дов: цикл с постусловием Repeat, цикл с предусловием While и цикл
с параметром For.
Правила организации внешнего и внутреннего циклов такие же,
как и для простых циклов каждого вида. Но при программировании
вложенных циклов необходимо соблюдать следующее дополни-
тельное условие: все операторы внутреннего цикла должны полно-
стью располагаться в теле внешнего цикла. Так же следует помнить,
что имена параметров внешнего и внутреннего циклов должны
быть разными.
Каждое повторение внешнего цикла означает завершение всех
внутренних циклов. При этом всем выражениям, которые управляют
внутренними циклами, вновь присваиваются начальные значения.
Глубина вложенности циклов друг в друга не определена, в ос-
новном зависит от мощности компьютера.
Примеры выполнения заданий
Пример 1. Составьте блок-схему (рис. 5.1) и напишите про-
грамму вывода на экран таблицы умножения.
Program Primer_1;
Var a,I,J:Integer;
BEGIN
70
For I:=1 to 9 do
Begin
For J:=1 to 9 do
Begin
A:=i*J;
Write(I,'*',J,'=',A:2,' ');
End;
Writeln; {Перевод курсора
на новую строку}
End;
END.
Рис. 5.1
Пример 2. Составьте блок-схему (рис. 5.2) и напишите програм-
му решения следующей задачи: из отрезка [a, b] выведите числа,
которые являются степенью числа 6.
Program Primer_2;
Var a,b,p,x,k:Integer;
BEGIN
Writeln('Ввести концы отрезка');
Readln(a,b);
If a>b Then begin x:=a; a:=b; b:=x; end; {Если начало отрезка вве-
дено больше конца}
k:=0; {Счетчик искомых чисел}
For x:=a to b do
Begin
p:=1; {Для нахождения произведения}
While pIf p=x {После выполнения цикла: если р=х, то}
Then Begin
Writeln (p); {Выводим найденное число}
k:=k+1; {и считаем, что одно число уже вывели}
End;
End;
71
If k=0 {если счетчик искомых чисел остался равен 0, то нужных
чисел нет}
Then Writeln('Степеней числа 6 на данном отрезке нет');
End.
Do'stlaringiz bilan baham: |