Разумеется, реальные задачи, решаемые на ЭВМ, не сводятся к обработке отдельного элемента данных с помощью одной операции. Напротив, они требуют обработки многих элементов данных (например, массива или блока данных) или отдельных элементов, которые занимают несколько ячеек памяти. Программа может выполнять одну и ту же операцию над содержимым нескольких ячеек или элементов данных. Многократное выполнение группы команд осуществляется с помощью программных циклов, числом повторений цикла управляют счетчики, а указатели или индексы показывают, какой именно элемент данных обрабатывается при данном проходе цикла Пример 4. Сумма ряда чисел.
Задача состоит в том, чтобы осуществить суммирование нескольких чисел сразу. Эти числа могут представлять собой совокупности входных сигналов определенного типа, находящихся под управлением системы, число изделий, проданных в некоторой торговой операции, число очков, набранных в игре, или число сообщений, принятых за некоторый интервал времени. Предположим, что длина суммируемого ряда хранится в ячейке 41 и что сам ряд размещен, начиная с ячейки 42. Предположим также, что сумма не превышает 256 и для ее хранения достаточно одной 8-битной ячейки памяти с адресом 40.
Типичный пример
(41) = 03;
(42) = 35;
(43) = 72;
(44) = 1D
Ряд содержит три числа, так как в ячейке 41 находится чис^о 3-Сумма равна
(42)+(43)+(44) = 35+72+ID = С4 (все числа являются шестнадцатиричными). Итак, результат равен (40) = С4.
Процесс сложения выполняется следующим образом:
Шаг /.
COUNT =(41)
SUM= 0
POINTER = 42
Шаг 2.
SUM = SUM + (POINTER)
ШагЗ.
COUNT = COUNT —1
POINTER = POINTER + 1
Шаг 4.
ЕСЛИ COUNT = 0 ИДТИ К ШАГУ 2
Шаг 5.
(41) = SUM
Из блок-схемы (рис. 5.1З) видно, что программа состоит из четырех различных блоков:
1. Блок присвоения начальных значении переменным, счетчикам и указателям данных. Указатели представляют собой адреса данных.
2. Блок обработки, который фактически выполняет ' требуемые вычисления.
3. Блок управления циклом, в котором изменяются значения счетчиков и указателей перед выполнением следующей операции, а также осуществляется проверка числа выполнений цикла.
4. Заключительный блок выполняет запоминание результата.
Собственно суммирование выполняется в блоке 2. Однако наличие всех остальных блоков также существенно для обеспечения правильного выполнения блока 2. На рис. 5.14 приведена обобщенная блок-схема циклической программы. Первый и четвертый блоки ^выполняются только 1 раз, поэтому большая часть машинного времени затрачивается на выполнение второго и третьего блоков. Программа сможет выполняться существенно быстрее только в том случае, если программист сумеет уменьшить время работы второго и третьего1 блоков. Влияние первого и четвертого «блоков на время выполнения программы незначительно.
.jpg)