Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурное тестирование_Указания к л.р..DOC
Скачиваний:
7
Добавлен:
09.11.2019
Размер:
90.11 Кб
Скачать

3.2. Пример разработки схемы программы

Рассмотрим построение схемы программы (алгоритма обработки) для программы расчета суммы бесконечного знакопеременного ряда:

1-1/22+1/32-1/42+ . . .

Общий член ряда выражается формулой (-1)(N-1)/ , а сумма ряда равна Pi2/12, где Pi – число =3,14……..

Сумма членов бесконечной последовательности a1, а2, а3, . . . , aN, . . . называется бесконечным рядом и записывается в виде a1 + а2 + а3 + . . . + aN + . . . . Здесь aN - общий член ряда. Сумма конечного числа членов ряда называется частичной суммой и обозначается SN. Если сумма членов бесконечного ряда имеет конечный предел S, то ряд называется сходящимся.

Для сходящегося ряда вычисляется последовательность частичных сумм с заданной погрешностью delta (погрешность должна иметь порядок значений ). Если точное значение суммы ряда S известно, абсолютная погрешность расчетов определяется по формуле Eps=abs(S-SN), либо Eps=abs(aN), если значение S неизвестно. Относительная погрешность расчетов определяется по формуле Eps_o=abs((S-SN)/S), либо Eps_o=abs(aN/SN). Частичные суммы вычисляются по формуле: SN=SN-1 + aN.

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

Достаточно часто в бесконечных сходящихся рядах N-й член ряда выражается через (N-1)-й, например, для рассматриваемого ряда коэффициент изменения (аналог коэффициента геометрической прогрессии) может быть определен следующим образом:

k = аNN-1 = ((-1)(N-1)/ )/ = - (1).

Следовательно, очередной член ряда , начиная со второго, будем рассчитывать по формуле .

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

В итоге можем словесно сформулировать алгоритм обработки данных для программы расчета суммы знакопеременного ряда следующим образом:

а) задать точность расчета суммы delta;

б) присвоить начальное значение суммы ряда (это значение равно первому элементу ряда, а именно, 1), очередному члену ряда (это значение тоже равно первому члену ряда) и начальное значение номера члена ряда N=1;

в) увеличить номер члена ряда на 1, рассчитать очередной член ряда по формуле (1) и добавить полученное значение к сумме ряда для получения частичной суммы;

г) определить абсолютную погрешность вычисления суммы ряда и сравнить ее с заданной точностью delta;

д) выполнять пункты б-г до тех пор, пока абсолютная погрешность вычисления суммы не окажется меньше заданной delta;

е) вывести на печать полученное приближенное значение суммы ряда и точное значение (в нашем примере это Pi2/12).

Схема программы

Примечание. Обратите внимание, что надписи в символах схемы поясняют смысловое содержание преобразований информации. Студенты часто делают ошибку, и в надписях повторяют операторы программы. Такая схема мало информативна, часто непонятна программисту, знающему другой язык программирования, нежели автор схемы. Особенно бесполезными бывают такие схемы для программ без комментариев. С целью углубленного изучения вопроса о построение схем программ рекомендую обращаться к литературным источникам последних лет издания, таким, как / 4,5 /.

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