Читайте также:
|
|
Пусть необходимо вычислить .
Исходные данные алгоритма – это значение переменной N, которое необходимо ввести, а выходные данные – это значение P, которое надо вычислить и вывести. В данном примере счетчиком цикла является переменная I, которая принимает значения от 1 до N с шагом 1.
Представим процесс вычисления произведения P как последовательное вычисление частичных произведений:
¼¼¼¼¼¼¼
¼¼¼¼¼¼¼
Начальное значение произведения принимается равным 1 (а не 0, как в случае суммы), а, затем, на каждом шаге текущее значение произведения умножается на значение i -го сомножителя:
Заполним таблицу имен объектов.
Имя объекта в задаче | Имя объекта в блок-схеме | Тип объекта | Примечания |
i | I | целая переменная | счетчик цикла |
N | N | целая переменная | Конечное значение счетчика цикла |
P | вещ. переменная | текущее значение частное произведение |
Тогда схема алгоритма по шагам запишется следующим образом:
Ш1. Ввод N.
Ш2. P присвоить 1.
Ш3. i присвоить 1.
Ш4. Если I £ N, то перейти на Ш7.
Ш5. Вывод P.
Ш6. Конец.
Ш7. P присвоить P × i.
Ш8. i присвоить i + 1.
Ш9. Перейти на Ш4.
Блок-схема этого алгоритма приведена на рис.2.7.
Поясним работу алгоритма таблицей трассировки для N = 3.
№ действия | № блока | Результат действия |
Ввод | ||
P = 1 | ||
i = 1 | ||
1 £ 3, ДА | ||
P = 1×1=1 | ||
i = 1+1 = 2 | ||
Переход на 4 | ||
2 £ 3, да | ||
P = 1×2 = 2 | ||
i = 2 + 1 = 3 | ||
Переход на 4 | ||
3 £ 3, да | ||
P = 2×3 = 6 | ||
i = 3 + 1 = 4 | ||
Переход на 4 | ||
4 £ 3, нет | ||
Вывод P = 6 | ||
Конец |
Рис. 2.7 Блок-схема алгоритма вычисления произведения N сомножителей
Оператор цикла с параметром может быть использован лишь для программирования арифметического цикла в случаях, когда приращение счетчика цикла равно либо 1 либо -1. В блок-схеме алгоритма этому оператору соответствует несколько блоков: блок присваивания счетчику цикла начального значения, блок проверки того, что счетчик цикла не превосходит конечного значения, и блок увеличения счетчика цикла на величину приращения.
Перейдем непосредственно к программированию примера на основе использования оператора цикла.
Программирование начальных блоков происходит также, как и при использовании оператора цикла с предусловиями WHILE. Отличие начинаются с программирования блока 5.
Блок 5 формирует начальное значение параметра цикла I, т.е. присваивает ему значение 1. Если обратиться к правилам записи оператора цикла с параметром, то увидим, что это делается не оператором присваивания, а с помощью составной части заголовка цикла (подставить в заголовок цикла вместо имени параметра цикла – I, а вместо его начального значения – значение 1); в заголовок цикла также входит конечное значение параметра цикла, которое в этом случае равно N, при превышении которого параметром цикла выполнение цикла заканчивается. На блок-схеме это реализуется с помощью условного блока 6. Кроме того, в заголовке цикла автоматически организовано продвижение по циклу с помощью задания приращения параметра цикла равного 1 (TO), либо -1 (DOWNTO). В блок-схеме изменения параметра цикла изображено в виде блока 10. Т.о. блокам 5,6,10 блок-схемы соответствует заголовок цикла. В теле цикла остаются лишь одно действие: блок 9. Блок 7 программируется также, как и в случае программирования арифметического цикла на основе использования оператора WHILE.
В результате получается следующая программа:
PROGRAM FACTORIAL;
VAR I, N: INTEGER;
P: REAL;
BEGIN
WRITELN('ВВЕДИ ЗНАЧЕНИЕ N');
READLN(N);
P:=1;
FOR I:=1 TO N DO P:=P*I;
WRITELN('ФАКТОРИАЛ P=',P:10:4);
END.
Использование операторов цикла при программировании арифметических циклов делает текст программы наглядней и компактней по сравнению с аналогичной программой, написанной без их использования, но при этом число выполняемых действий не сокращается и быстродействие программы не увеличивается.
Дата добавления: 2015-07-16; просмотров: 66 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Арифметический цикл | | | Табулирование функции на конечном отрезке. |