Фамилия рост вес

Сценарий алгоритмы

¯ ¯

ЭВМ ® программа

Основные типы алгоритмических ошибок в программах:

· ошибки в выбранных методах решения;

· ошибки в постановке решаемых задач;

· дефекты в сценариях диалога с ЭВМ;

· ошибки организации ввода данных;

· неправильная реализация методов решения.

Исчерпывающий анализ правильности алгоритмов и устранение из программ ошибок всех перечисленных типов возможны только при наличии соответствующих спецификаций: постановок задач, описаний методов решения и спецификаций ввода-вывода данных.

Будем считать, чтопрограмма правильная, если она дает правильные результаты для любых допустимых исходных данных. Такого рода программы вполне можно использовать для решения прикладных задач.

Программа считаетсянадежной, если она не дает сбоев и отказов ни при каких исходных данных. Надежность - обязательное условие для всех программ, которые используются людьми для решения практических задач на ЭВМ.

В качестве иллюстрации приведем пример систематического со­ставления алгоритма и программы задачи определения суммарного веса учеников по данным из таблицы:

 

Иванов
Петрова
Сидоров

Рассмотрим постановку задачи и метод вычисления суммарного веса.

Постановка задачи

Определение суммарного веса.

Дано: Метод вычисления

(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

чтение fam$, 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

Правильность приведенного алгоритма можно увидеть из описа­ния результатов его выполнения.

АлгоритмРезультаты выполнения

алг «суммарный вес» на экране и в памяти ЭВМ