ЭВМ программа
Рассмотрим пример систематического составления алгоритма и программы для решения на ЭВМ достаточно сложной задачи обработки данных.
Четвертая задача: Определить суммы элементов столбцов в матрице Anxm:
Приведем обобщенную постановку задачи и описание соответствующих общего метода решения и сценария диалога.
Постановка задачиСценарий
Дано: Матрица <N>´<M>
(a11 … a1N) < a11> ... < a1N >
(... ... ... ) - матрица Anxm ... ... ...
(aMl … aMN) < aMl > … < aMN >
Треб.: Суммы элементов:
(S1 ..., SN) - суммы столбцов <S1> ... <SN>
Где:
Si = аi1 + ...+ аiM
[i = (1… N)]
При: N > 0, М > 0.
Метод вычисленийПредставление данных
sk0 = 0 matr: ' матрица Anm:
sk1 = ak1+ sk1-1 data 3, 4
[1 = (1 ... M)] data I, 2, 3, 4
Sk = SkN data 0, 1, 2, 3
[k = (1 ... N)] data 0, 0, 1, 2
В предлагаемой ниже программе для представления матриц используются операторыdata. В первом из этих операторов записаны размеры, а в каждом последующем операторе - строки матрицы:
АлгоритмПрограмма
алг «сумма строк матрицы» ' сумма строк матрицы
нач cls
чтение (п, т) read n, m
если п > 0 и т > 0 то if N > 0 and М > 0 then
массив А[1:п,1:т] dim A (N,M)
массив S[1:n] dim S(n)
ввод-вывод_матрицы gosub vvod 'ввод-матрицы
суммирование_строк gosub sum 'суммирование
от k = 1 до п цикл for k= 1 to n
выв (s[k]) ? s[k]
кцикл next k
все end if
кон end
алг «суммирование строк» sum: 'суммирование строк
нач ' нач
от k = 1 до N цикл for k = 1 to n
s[k] := 0 s[k] = 0
от l = 1 до М цикл for I = 1 to m
s[k] := s[k] + A[k,l] s[k] = s[k] + a[k,l]
кцикл next I
кцикл next k
кон return
алг «ввод-вывод_матрицы» vvod: 'ввод-вывод_матрицы
нач ' нач
вывод («Матрица», N, «х», М) ? «Матрица»; m; «х»; m
от k = 1 до N цикл for k = 1 to n
от I = 1 до М цикл for l = 1 to m
чтение (A [k,l]) read A (k,l)
вывод (A [k,l]) ? A (k,l)
кцикл next 1
нов_строка ?
кцикл next k
кон return