Иванов | ||
Петрова | ||
Сидоров |
Рассмотрим постановку задачи и метод вычисления суммарного веса.
Постановка задачи
Определение суммарного веса.
Дано:Метод вычисления
(D1,.., DN) - данные об учениках, S0 = 0
где D = [Fam,R,V] - состав данных, Sk = Sk-1 + vk
Fam - фамилия, R - рост, V - вес. [k = (1... N)]
Треб.: Vsum - суммарный вес. Vsum = SN
Vsum = v1 + v2 +... + vN
При: N > 0.
Правильность метода вычислений можно доказать по индукции. Рассмотрим результаты вычислений на 1-м, 2-м и k-м шагах. Отметим, что начальное значение S0 = 0.
На первом шаге при k = 1 результат вычисления
S1 = S0 +v1 = v1
На следующем втором шаге при k = 2 результат
S2 = S1 + v2 = v1 + v2.
На третьем шаге при k = 3 результат
S3= S2 + v3 = v1 + v2 + v3.
В общем случае можно предположить, что к k-му шагу результат вычисления
Sk-1=v1+...+vk-1.
Тогда результат вычислений после k-го шага (исходя из описания метода)
Sk = Sk-1 +vk = v1 + … + vk-1 + vk.
В силу принципа математической индукции утверждение верно для всех k = 1, 2,.... N. Следовательно, на последнем шаге при k = N конечный результат:
SN = v1 +... + vN.
Что и требовалось. Следовательно, метод правильный.
Приведем сценарий диалога решения поставленной задачи на ЭВМ. Для представления данных в программе примем последовательность операторов data.
Сценарий Представление данных
Данные об учениках
фамилия вес рост
dano:'данные учеников
<Fam1> <V1> <R1> data «Иванов», 185, 85
… … … data «Петрова», 165, 65
<FamN> <VN> <RN> data «Сидоров», 170, 80
data «», 0, 0
суммарный вес = <Vsum>
Алгоритм обработки данных и программа, соответствующие выбранному сценарию и методу вычисления:
АлгоритмПрограмма
алг «суммарный вес» ' суммарный вес
нач cls
вывод («Данные об учениках»)? «Данные об учениках»
вывод («фамилия вес рост»)? «фамилия вес рост»
s:= 0 s = 0
цикл do
чтение famS, r, v read fam$, r, v
при fam$=«» выход if fam$=«» then exit do
вывод (fam$, v, r)? fam$; v; r
s:= s + v s = s + v
кцикл loop
vsum = s vsum = s
вывод («суммарный вec=»,vsum)? «суммарный вес=»; vsum
кон end
Правильность приведенного алгоритма можно увидеть из описания результатов его выполнения.
АлгоритмРезультаты выполнения
алг «суммарный вес» на экране и в памяти ЭВМ
Нач
вывод («Данные об учениках») Данные об учениках
вывод («фамилия вес рост») фамилия вес рост
s: = 0 s0 = 0
Цикл
чтение fam$, r, v
при fam$=«» выход
вывод (fam$, v, r) <famk> <vk> <rk>
s: = s + v sk = sk-1 + vk
кцикл [k = (1...n)]
vsum = s vsum = sn
вывод («суммарный вec=»,vsum) суммарный вес= <vsum>
Кон
Сопоставление описания результатов выполнения с описаниями сценария и выбранного метода говорит об их полном соответствии. Следовательно, составленные алгоритм и программа правильные.