Цикл
Загрузка_доходов
End
Кон
Нач
I •••••• I
Расходы
Максимум
Кон
Товар цена кол-во
s0 =0 [k = 0]
[k= 1,2,...,N]
{ <тов> <с> <m> }*
sk = sk-1 + ck⋅mk
при k = 1 max1 = c1⋅m1, ToвMaх1 = тов1 при сk⋅mk > mах mахk = сk⋅mk ТовМахk = товk
cуммa = <sN>
вывод («Максимум») вывод (ТовМах, тах)
<ToвMaxN> <maxN>
Из расмотренных примеров следует, что правильность алгоритмов и программ зависит прежде всего от правильности выбранных методов решения. Составление соответствующих им алгоритмов и программ сводится к решению технических проблем.
Можно утверждать, что правильные алгоритмы и программы - это корректная реализация правильных методов решения. Ошибки в выбранных методах решения носят не алгоритмиче-ский, а принципиальный характер и их следует искать не с помощью отладки программ на ЭВМ, а исследованием самих методов.
Рассмотрим самую популярную экономическую задачу - расчет семейного бюджета в це-лях анализа достатка семьи. Напомним, что достаток семьи - это остаток от разности доходов и расходов:
|
|
достаток = доходы - расходы.
Допустим, что данные о семейном бюджете представлены двумя таблицами: - таблицей до-ходов и таблицей расходов:
Доходы |
папа | питание | ||
мама | одежда | ||
брат | транспорт | ||
я | отдых | ||
разное |
Метод решения S = Sd - Sr Sd = сN rсk = сk-i + dk \[k = (l...N)] сo= 0 Sr = bM fb; = bi-i + Г; \[i = (1... M)] b0 = 0 |
Приведем точную постановку задачи и опишем метод ее решения.
Постановка задачи
Определение достатка семьи.
Дано:
D = (дох1,..., дох n) - доходы,
R = (расхь..., расхМ) - расходы,
где дох = (имя, d),
расх = (стат, г).
Треб.: S - достаток семьи.
Где:
S = Sum (di, ..., dN) - Sum (rb.... rM).
При: N, M > 0.
Для решения задачи на ЭВМ в качестве представления данных примем два списка операторов data, а для организации вывода результирующих данных - следующий сценарий.
СценарийПредставление данных
Подсчет достатка Доходы семьи: <имяк> <dk> "1 *
••• •••
Доходов = <Sd> Расходы семьи: j < статk> <rk > "I *
Расходов = <Sd> Достаток = <S>
' doch: ' доходы data «папа», 300000 data «мама», 120000 data «брат», 200000 data «», 0
rash: ' расходы data «питание», 200000 data «одежда», 120000 data «транспорт», 60000 data «», 0
Приведем соответствующие этому сценарию и выбранному методу представления данных алгоритмы и программу на Бейсике:
алг «достаток семьи»
вывод («Подсчет достатка») вывод («Доходы семьи:») подсчет_доходов вывод («Доходов=», Sd) вывод («Расходы семьи:») подсчет_расходов вывод («Расходов =», Sr) S:= Sd - Sr вывод («Достаток=», S)
'достаток семьи
cls? «Подсчет достатка»? «Доходы семьи:» gosub dchs 'доходы? «Доходов=», Sd? «Расходы семьи:» gosub rashs 'расходы? «Расходов=», Sr S = Sd - Sr? «Достаток=», S
|
|
алг «подсчет доходов» нач
Sd:= 0
чтение (имя, d) при имя = «» вых вывод (имя, d) Sd = Sd + d кцикл кон
dchs: 'подсчет доходов» ' restore doch 'доходы Sd = 0 do
read namS, d if nam$ = «» then exit do? nam$, d Sd = Sd + d loop return
алг «подсчет расходов» нач
Sr:= 0