- •Лабораторная работа № 4
- •Освоение технологии структурного программирования
- •При разработке и создании программы на языке Турбо Паскаль
- •Для циклического вычислительного процесса с неизвестным числом повторений
- •Теоретические сведения
- •1. Условие задачи:
- •9. Для защиты лабораторной работы:
- •Задания к лабораторной работе № 4
1. Условие задачи:
Вычислить значение бесконечной суммы с заданной точностью :
. |
(4.2) |
2. Решение задачи в ее предметной области, в данном случае – это высшая математика:
. |
(4.3) |
Здесь Вы должны обратить внимание на то, что n в (4.3) заранее не известно.
3. Проектируем структуры данных (их имена и типы). Понятно, что все имена, входящие в (4.3), нужно описать в программе, т.е. S, x, i, eps. Кроме того, нам понадобится некоторая переменная, в которой будет храниться текущее вспомогательное значение для члена ряда. Назовем ее part. Поскольку S, x, eps, power могут иметь дробную часть, то их тип выбираем Real. Для i – значения не имеет: это может быть Real либо Integer.
Значит в разделе описаний программы, назовем ее Summa, с учетом требований о необходимости обеспечения легкочитаемости программы и размещения необходимых комментариев, поместим следующие описания:
Var
S, { сумма }
x, { значение x }
i, { число в знаменателе }
eps, { точность вычислений }
part : Real; { текущее значение части члена ряда }
4. Проводим нисходящую разработку (проектирование) программы методом пошаговой детализации с помощью псевдокода. Воспользуемся результатами (рис. 1) для получения первой версии алгоритма:
Ввести данные Summa
Выполнить вычисления Summa
Вывести результаты Summa
С учетом требований к «дружественности» интерфейса, детализация псевдокода Ввести данные Summa дает следующее:
Вывести на экран приглашение для ввода x
Ввести x
Вывести на экран приглашение для ввода eps
Ввести eps
Детализация псевдокода Выполнить вычисления Summa дает следующее:
S присвоить 0
part присвоить 1
i присвоить 1
ЦИКЛ ПОКА (part/i)>eps
part умножить на x-1 и разделить на x
к S добавить part деленное на i
i увеличить на единицу
Детализация псевдокода Вывести результаты Summa дает следующее:
Вывести название и содержимое ячейки S
5. Выполняем структурное программирование с использованием структуры ЦИКЛ-ПОКА:
BEGIN
ClrScr; { Очищаем экран }
Write(‘Введите значение x = ’);
ReadLn(x);
Write(‘Введите значение eps = ’);
ReadLn(eps);
{ Подготовка к циклу }
S := 0; { Подготовка к циклу }
part := 1; { Начальное значение }
i := 1; { Начальное значение }
while (part/i)>eps do
begin
part := part*(x-1)/x; { Получаем часть члена ряда }
S := S+ part/i; { Суммируем в S }
i := i+1 { Увеличиваем i на 1 }
end;
WriteLn(‘S = ’, S:4:2);
ReadLn
END.
6. Отладка программы. Отладка программы – это процесс поиска и устранения синтаксических ошибок в готовой программе. Обычно отладка предшествует стадии тестирования. В этом пункте необходимо привести скриншот результата работы готовой программы (см. п. 5 Лаб. раб № 1).
7. Тестирование программы. Цель тестирования всякой программы состоит в том, чтобы убедиться, что она решает действительно ту задачу, для которой предназначена, и выдаёт правильный ответ при любых значениях из области решений. Тестовые данные должны обеспечивать проверку всех возможных условий возникновения ошибок. Подготовьте тестовый пример для своей задачи и вычислите конечный результат с помощью калькулятора, имеющегося в среде Windows.
Тестовый пример для нашей задачи будет включать вычисление S при x=2.5 и eps=0.00001:
Исследуйте Вашу программу при необходимых тестовых значениях.
Создайте программу с использованием структуры repeat-until (ЦИКЛ-ДО) и исследуйте ее.
8. Перед защитой лабораторной работы Вам необходимо подготовить отчет (Приложение 2). Перед распечаткой обязательно продемонстрируйте его преподавателю в электронном виде, чтобы избежать ошибок в оформлении!