- •Введение
- •Способы записи алгоритма
- •Типы алгоритмов
- •Линейные алгоритмы
- •Разветвляющийся алгоритм
- •5. Циклические алгоритмы
- •5.1. Организация циклов с предусловием и постусловием
- •5.2. Табуляция функции одной переменной
- •5.3. Применение циклов в алгоритмах обработки массивов
- •5.3.1. Ввод-вывод одномерных массивов
- •5.3.2.Алгоритм нахождения суммы элементов одномерного массива
- •5.3.3. Алгоритм нахождения минимального или максимального элемента массива и его порядкового номера
- •5.3.4. Алгоритм перестановки
- •5.3.4. Алгоритм формирования нового массива из элементов имеющегося
- •5.3.5. Поиск в упорядоченном массиве.
- •6. Алгоритмы обработки двумерных массивов
- •6.1. Ввод-вывод двумерных массивов
- •Литература
5. Циклические алгоритмы
5.1. Организация циклов с предусловием и постусловием
Как уже отмечалось в разделе 2, в типовую структуру цикл входит две разновидности: цикл с предусловием и цикл с постусловием. Обе они реализуются одним и тем же набором символов (рис.5.1.), которые выполняют следующие действия:
-
– задание начального значения параметру цикла;
-
– проверка условия: для а) – возможности выполнения цикла; для б) – возможности выхода из цикла;
-
– рабочая часть цикла (тело цикла);
-
– блок модификации (изменения) параметра цикла; если этот блок в схеме будет пропущен, то, как правило, возникает ситуация, когда цикл будет выполняться бесконечно долго, т.к. значение параметра цикла остается неизменным. Говорят, что в этом случае имеет место бесконечный цикл.
Как видно из приведенных схем, в случае а) сначала проверяется условие: можно ли выполнить цикл, и, если ответ положительный, то цикл выполняется. В случае б) сначала выполняется цикл, а затем проверяется условие: можно ли выйти из цикла, и, если ответ положительный, то работа цикла завершается.
Рис.4.2. Схема алгоритма примера 4.2.
а) б)
Рис.5.1. Организация цикла: а) – с предусловием; б) – с постусловием
В отличие от цикла с предусловием, цикл с постусловием выполняется хотя бы один раз, каким бы не было задано начальное значение параметра цикла, а вот цикл с предусловием при неверно заданном начальном значении параметра может быть не выполнен ни разу.
5.2. Табуляция функции одной переменной
Пример 5.1. Табулировать функцию на заданном отрезке [xнач.,xкон.] с шагом Δx. Результаты оформить в виде таблицы
Х y ……… …………… …………… ……………
…………….. ……………… ……………… ………………
} Заголовок
Основная
часть
} подножие
Решение. Табулировать функцию – значит рассчитать ряд ее значений в зависимости от значений аргумента x, который принимает значения:
Можно заранее определить, сколько значений аргумента и функции нужно будет вывести в таблицу, если применить для подсчета формулу
,
где [ ] – означает, что у полученного в результате деления числа нужно выделить целую часть. Таким образом, нужно n раз повторить одни и те же действия: вычислять и выводить в таблицу x и y. Есть смысл для этой цели использовать циклический алгоритм, построенный на базе цикла с предусловием (рис.5.1(а)) (хотя можно и с постусловием). Параметром цикла будет являться переменная x, значения которой на каждом шаге цикла будут
вычисляться следующим образом: .
Проиллюстрируем постановку этой задачи графически (рис.5.2.).
Чтобы оформить таблицу необходимо учесть, что такие элементы, как заголовок и подножие таблицы выводятся только один раз (т.е. вне цикла), а вот основная часть, состоящая из отдельных строк, содержащих значения x и y - внутри цикла. С учетом этого получим схему программы, приведенную на рис.5.3.
Рис.5.2. Графическая иллюстрация табулирования функции на отрезке
Замечание. Если бы функция имела вид такой, как у функции, рассмотренной в примере 4.2 (т.е. прежде чем рассчитать ее, нужно выбрать расчетную формулу), то вместо символа процесс, определяющего расчет функции, в схеме программы нужно поставить структуру ветвление.