- •Методические указания по выполнению домашнего задания на тему «Разработка алгоритмов для структурного программирования и их реализация. Линейные алгоритмы»
- •1. Неструктурные алгоритмы и их реализация в паскале
- •1.1. Оператор безусловной передачи управления GoTo
- •1.2. Процедуры неструктурной передачи управления
- •2. Структурные типы данных
- •2.1. Массив
- •3. Порядок выполнения домашней работы «Структурные типы данных: массивы»
- •4. Символьные массивы и строки
- •Приложение (варианты заданий)
3. Порядок выполнения домашней работы «Структурные типы данных: массивы»
Этап 1. Постановка
задачи 1.
Разработать
алгоритм, спецификацию, тестовый пример
и программу обработки статистических
данных: вычисления среднего арифметического,
дисперсии и стандартного отклонения
для числового ряда
,
состоящего из n(=12)
членов, где массив а:
ежемесячные данные за 2004 год о реально
отработанных в России часах в расчете
на одного занятого человека.
Этап 2. Анализ
поставленной задачи.
Из теории математики и математической
статистики определяем необходимые для
вычисления формулы: сумма ряда
;
среднее арифметическое
;
дисперсия
,
где
.
Сумма элементов
массива S
определяется методом накопления.
Количество суммируемых чисел известно,
поэтому используем цикл с заданным
количеством повторений. При каждом
проходе к сумме будем добавлять значение
,
где i
будет изменяться от 1 до n(=12).
Перед началом цикла необходимо переменную
суммы обнулить. Затем определим значение
среднего арифметического. Сумма U
определяется аналогично сумме S.
В последнюю очередь вычисляем значение дисперсии.
Этап 3. Проектирование и определение спецификаций. В данных методических указаниях предлагается производить расчет тестовых (контрольных) примеров в EXCEL.
На рис. 5 приведена схема алгоритма. Результаты расчета тестового примера занесем в табл. 1. Спецификация к алгоритму представлена в табл. 2.
Рис. 5. Блок – схема алгоритма решения задачи 1.
Таблица 1.
Тестовые примеры для задачи 1.
Н№ теста |
n |
Массив а |
Результат
|
Результат U |
Дисперсия g2 |
1 |
12 |
120; 130; 140; 150; 160; 123; 145; 156; 167; 144; 122; 177 |
144,5 |
3765 |
313,75 |
Таблица 2.
Спецификация к алгоритму на рис. 5.
№ |
Наименование |
Обозначение в алгоритме |
Обозначение в программе |
Статус переменной |
Тип переменной |
1 |
Количество элементов массива |
n |
N |
Входная |
Целый |
2 |
Параметр цикла |
i |
i |
Расчетная |
Целый |
3 |
Значение суммы |
S |
S |
Выходная |
Не целый |
4 |
Значение суммы |
U |
U |
Выходная |
Не целый |
5 |
Среднее арифметическое |
|
a_1 |
Выходная |
Не целый |
6 |
Массив |
а |
а |
Входная |
Не целый |
7 |
Дисперсия |
|
g2 |
Выходная |
Не целый |
Этап 4. Реализация. Разрабатываем программу:
Program Massiv; Uses Crt;
Var a:array[1..12] of Real;
U, S, a_1, g2: Real;
i, n: Byte;
Begin
ClrScr;
Writeln('Введите n:'); Readln(n);
Writeln('Введите массив a:'); с м
S:=0;
For i:=1 to n do
Begin
Read(a[i]);
S:=S+a[i];
End;
Readln;
a_1:=S/n;
Writeln('Среднее арифметическое а_1=',a_1:4:1);
U:=0;
For i:=1 to n do
U:=U+Sqr(a[i]-a_1);
g2:=U/n;
Writeln('U=',U:5:2);
Writeln('Дисперсия g2=',g2:5:2);
Readln;
End.
Результат работы программы:
Введите n:
12
Введите массив a:
120 130 140 150 160 123 145 156 167 144 122 177
Среднее арифметическое а_1=144.5
U=3765.00
Дисперсия g2=313.75
Сверяем полученные результаты с тестовым примером.
Вывод: Результаты работы программы на Паскале совпадают со значениями, рассчитанными в среде MATHCAD.
