<Fam1> <V1> <R1> data «Иванов», 185, 85
… … … data «Петрова», 165, 65
<FamN> <VN> <RN> data «Сидоров», 170, 80
data «», 0, 0суммарный вес = <Vsum>
Алгоритм обработки данных и программа, соответствующие выбранному сценарию и методу вычисления:
АлгоритмПрограмма
алг «суммарный вес» ' суммарный вес
нач cls
вывод («Данные об учениках»)? «Данные об учениках»
вывод («фамилия вес рост»)? «фамилия вес рост»
s := 0s = 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: = 0s0= 0цикл
чтение fam$, r, v
при fam$=«» выход
вывод (fam$, v, r)<famk> <vk> <rk>
s: = s + vsk = sk-1 + vk
кцикл[k = (1...n)]
vsum =svsum = sn
вывод («суммарный вec=»,vsum)суммарный вес= <vsum>
кон
Сопоставление описания результатов выполнения с описаниями сценария и выбранного метода говорит об их полном соответствии. Следовательно, составленные алгоритм и программа правильные.
В о п р о с ы
1. Когда программы содержат ошибки?
2. Что такое правильный способ решения?
3. Когда способ решения неправильный?
4. Что такое правильный метод решения?
5. Когда метод решения неправильный?
6. Что такое правильный алгоритм?
7. Когда алгоритм содержит ошибки?
8. Каковы основные типы ошибок в программах?
З а д а ч и
1. Приведите постановку задачи, сценарий, алгоритм и программу решения линейного уравнения а×х + b = 0, с помощью формулы х = -b/а (при а ¹ 0).
2. Приведите постановку задачи, сценарий, алгоритм и программу решения квадратного уравнения а×х2 + b×x + с = 0 с помощью формулы дискриминанта.
3. Приведите постановку задачи, сценарий, алгоритм и программу решения системы из двух уравнений с двумя неизвестными:
а×х + Ь×у = е,с×х + d×y = f.
Примените для этой задачи вычисление корней с помощью определителей:
х = Dx/D,y = Dy/D.
Определители D, Dx и Dy вычисляются по формулам:
D = a×d - b×c,Dx = e×d - f×b,
Dy = a×f - c×e.
4. Приведите постановку, сценарии, алгоритм и программу решения следующих задач:
а) определение площади треугольника по длине сторон а, Ь, с по формуле Герона:
S = ,р = (а + b + с)/2.
б) определение площади треугольника, заданного на плоскости координатами своих вершин: (х1, у1), (х2, у2), (х3, у3); для вычисления длин сторон треугольника воспользуйтесь формулой определения длин отрезков на плоскости, задаваемых координатами концов:
l =
5. Приведите постановку, метод, сценарий, алгоритм и программу решения следующих задач:
а) определение времени встречи пешеходов, двигающихся навстречу друг другу;
б) определение времени, которое требуется пешеходу, чтобы догнать другого пешехода;
в) определение времени движения парохода по течению и против течения реки;
г) определение времени движения пешеходов навстречу друг другу, если один из них движется с замедлением;
д) определение времени падения тела с заданной высоты;
е) определение времени полета тела, брошенного вверх;
ж) определение расстояния, на которое улетит мяч, брошенный под углом к горизонту.
6. Дана прямоугольная матрица АNM - прямоугольная числовая таблица размера N ´ М. Приведите постановку, метод решения, сценарий, алгоритм и программу для решения следующих задач:
а) подсчет сумм элементов матрицы по столбцам,
б) подсчет сумм элементов матрицы по строкам,
в) нахождение минимального значения в каждом столбце,
г) нахождение минимального значения в каждой строке,
д) нахождение максимального значения в каждом столбце,
е) нахождение максимального значения в каждой строке,
ж) нахождение наибольшего из минимальных значений в столбцах,
з) нахождение наименьшего из максимальных значений в строках.
Решение задач на ЭВМ является одним из основных источников для создания алгоритмов и программ. Экономические задачи и проблемы обработки данных - один из важнейших классов прикладных задач, решаемых на ЭВМ.
Применение компьютеров для решения экономических задач существенно упрощает работу по подготовке и обработке данных. Одной из причин в использовании ЭВМ для решения этих задач - снижение трудоемкости и уменьшение числа ошибок при обработке данных.
Для решения многих экономических задач на ЭВМ используются электронные таблицы и специальные пакеты программ. Однако решение любых новых прикладных задач на ЭВМ предполагает необходимость создания новых алгоритмов и программ на основе определенных математических методов решения и обработки данных.
Особое значение правильность алгоритмов имеет для экономических задач, поскольку ошибки в их решении могут дорого стоить. Неправильные экономические расчеты могут нанести материальный ущерб или даже привести к банкротству целую организацию.
Для предотвращения ошибок можно использовать систематические методы конструирования алгоритмов и программ с одновременным анализом их правильности. Последовательное применение этих методов обеспечивает составление прикладных алгоритмов и программ с гарантиями их правильности.
Общий принцип систематического подхода к составлению алгоритмов и программ заключается в последовательной разработке спецификаций: постановок задач, способов и методов их решения, а также сценариев работы в процессе решения задач.
Составление программ
задача ® способы
¯¯
постановка ® методы
¯¯
сценарий ® алгоритмы
¯¯
ЭВМ ¬ программы
Систематический анализ правильности алгоритмов и программ сводится к сопоставлению этих спецификаций друг с другом: программ - с алгоритмами, алгоритмов - со сценариями и описаниями методов, а методы решения - с постановками задач.
Анализ правильности
задача ¬ способ
постановка ¬ методы
сценарий ¬ алгоритмы
ЭВМ ®программы
Приведем примеры систематической разработки алгоритмов и программ решения экономических задач на ЭВМ с обоснованием их правильности. Главной особенностью этих задач является то, что все они относятся к задачам обработки данных.
Первый пример экономической задачи - определение средней зарплаты в организации. Допустим, что данные о зарплате представлены таблицей:
фамилия должность зарплата
Иванов | директор | 300000 |
Петров | менеджер | 240000 |
Сидорова | секретарь | 120000 |
Приведем постановку задачи и описание метода вычисления средней зарплаты.
Постановка задачиМетод расчета
Определение средней зарплаты.
Дано:
(D1, ..., DN) - данные о сотрудниках,
где D = [Fam, Т, Z] - состав данных,
Fam - фамилия, D1- должность, S0 = 0 Z - зарплата. Sk = Sk-1*(k-l )/k + Zk/kТреб: Zcpeдн - средняя зарплата.[k=(l...N)]
Где: Zcpeдн = (Z1 +Z2 + ... + ZN)/N.Zcpeдн = SN
При: N > 0.
Прежде всего убедимся, что выбранный метод вычисления правилен. Для этого воспользуемся индукцией. Рассмотрим результаты вычислений на первых трех шагах.
При k = 1 результат
S1=S0(1 - 1)/1 +Z1/1 =Z1/1.
При k = 2 результат
S2 = S1(2 - 1)/2 + Z2/2 = Z1/2 + Z2/2.
При k = 3 результат
S3= S2(3 - 1)/3 + Z3/3= (Z1 + Z2)/3 + Z3/3.
По этим трем результатам можно утверждать, что в общем случае результатом k-го шага вычислений будет
Sk = (Z1 + ... + Zk-1)/k.