Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль_теория.doc
Скачиваний:
8
Добавлен:
08.11.2018
Размер:
341.5 Кб
Скачать

3. Подумайте над вопросами и внесите предложенные изменения:

а) Что произойдет, если оператор Writeln ('S=',S) внести в тело цикла? Проверить результат на ЭВМ.

б) Если в исходной программе переменной В присвоить значение 1:

- что изменится в условии?

- как изменится результат? Проверить результат на ЭВМ.

в) Что произойдет, если в исходной программе из тела цикла удалить оператор В=В+2? Проверить результат на ЭВМ.

г) Что произойдет, если в исходной программе из тела цикла удалить счетчик цикла? Проверить результат на ЭВМ.

д) Изменится ли результат работы исходной программы, если операторы S:=S+B и B:=B+2 поменять местами?

4. Задание для самостоятельного выполнения.

Используя цикл с постусловием, написать программу нахождения произведения P первых N нечетных натуральных чисел.

5. Контрольные вопросы.

1. Сколько раз повторится тело цикла в задании 2?

2. Может ли быть написана программа задания 2 без использования счетчика цикла?

3. Укажите в задании 2 операторы, которые относятся к телу цикла?

4. Укажите в задании 2 операторы, в которых осуществляются начальные присвоения?

5. Укажите в задании 2 номер оператор, осуществляющий проверку условия выполнения тела цикла?

Тема: Вложенные циклы.

Цель: выработать умения и навыки учащихся использовать вложенные циклы при решении задач.

План.

  1. Повторить теорию.

  2. Набрать на компьютере заданную программу.

  3. Внести предложенные изменения.

  4. Выполнить задание.

  5. Ответить на контрольные вопросы.

1. Теория.

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

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

Пример:

Составим программу нахождения делителей каждого из чисел в интервале от 1 до N.

При решении рассматриваем числа от 2 до N, а делители от 1 до N-1.

Внешний цикл – цикл чисел, а внутренний – цикл делителей.

Program Deliteli;

Var I,J,N:integer;

Begin

Read (N); {вводим количество чисел}

For I:= 2 to N do {открываем внешний цикл}

Begin

Writeln (‘делители числа ’,I);

For J:=1 to I-1 do {открываем внутренний цикл}

If I mod J = 0 then write (J:6); {проверяем условие:

если число I при делении

на J дает остаток 0, то выводим

J (найденный делитель)}

End;

End.

Рассмотрим изменения параметров циклов:

При I=2 параметр J примет значение 1, и выполнится тело внутреннего цикла, на этом внутренний цикл завершит свою работу, т.к. его параметр J должен изменяться от 1 до I-1 (а в данном конкретном случае до 1(т.к. I=2), т.е. тело этого цикла выполнится один раз).

При I=3 параметр J примет значение 1, и выполнится тело внутреннего цикла, затем J примет значение 2, и снова выполнится тело внутреннего цикла, на этом внутренний цикл закончит свою работу, а внешний перейдет к следующему значению I.

При I=4 параметр J примет значение 1, и выполнится тело внутреннего цикла, затем J примет значение 2, и снова выполнится тело внутреннего цикла, затем J примет значение 3, и опять выполнится тело внутреннего цикла, на этом внутренний цикл закончит свою работу, а внешний перейдет к следующему значению I.

Данные операции повторяются до тех пор, пока параметр внешнего цикла I не примет все требуемые значения (т.е. до N), и не осуществится выход из вложенных циклов.

  1. Наберите заданную программу и проверьте её работу на ЭВМ:

Найти сумму делителей каждого числа в диапазоне от 1 до N(само число при этом не учитывать).

Program Sum_Delitelei;

Var S,I,J,N:integer;

Begin

Read (N); {вводим количество чисел}

For I:= 2 to N do {открываем внешний цикл}

Begin

S:=0; {обнуляем ячейку для суммы делителей числа I}

For J:=1 to I-1 do {открываем внутренний цикл}

If I mod J = 0 then S:=S+J;

{если число I при делении на J дает остаток 0,

то увеличиваем сумму на значение J}

Writeln (‘сумма делителей числа ’, I, ‘ равна ’,S);

End;

End.