- •Лабораторная работа № 3
- •Освоение технологии структурного программирования
- •При разработке и создании программы на языке Турбо Паскаль
- •Для циклического вычислительного процесса с известным числом повторений
- •Теоретические сведения
- •1. Условие задачи:
- •9. Для защиты лабораторной работы:
- •Задания к лабораторной работе № 32
1. Условие задачи:
Вычислить значение конечной суммы:
. |
(3.1) |
2. Решение задачи в ее предметной области, в данном случае – это высшая математика. Например, при n = 3 выражение (3.1) будет иметь вид:
. |
(3.2) |
Здесь Вы должны обратить внимание на то, что каждое последующее слагаемое в (3.2) получается из предыдущего домножением на a предыдущего.
3. Проводим нисходящую разработку (проектирование) программы методом пошаговой детализации с помощью псевдокода. Воспользуемся результатами (рис. 1) для получения первой версии алгоритма:
Ввести данные Summa
Выполнить вычисления Summa
Вывести результаты Summa
С учетом требований к «дружественности» интерфейса, детализация псевдокода Ввести данные Summa дает следующее:
Вывести на экран приглашение для ввода a
Ввести a
Вывести на экран приглашение для ввода n
Ввести n
Детализация псевдокода Выполнить вычисления Summa дает следующее:
power присвоить 1
ЦИКЛ ОТ i=1 ДО n
power умножить на а
к S добавить power
Детализация псевдокода Вывести результаты Summa дает следующее:
Вывести название и содержимое ячейки S
4. Выполняем структурное программирование с использованием структуры цикл:
BEGIN
ClrScr; { Очищаем экран }
Write(‘Введите значение a = ’);
ReadLn(a);
Write(‘Введите значение n = ’);
ReadLn(n);
{ Подготовка к циклу }
power := 1; { Начальное значение перед умножением на a }
for i:=1 to n do
begin
power := power*a; { Получаем степень а }
S := S+power; { Суммируем в S }
end;
WriteLn(‘S = ’, S:4:2);
ReadLn
END.
5. Проектируем структуры данных (их имена и типы). Понятно, что все имена, входящие в (3.1), нужно описать в программе, т.е. S, a, i, n. Кроме того, нам понадобится некоторая переменная, в которой будет храниться текущее значение степени a. Назовем ее power. Поскольку S, a, power могут иметь дробную часть, то их тип выбираем Real. Поскольку i – переменная цикла, n – конечное значение, то их тип не может быть Real, а только перечислимым, поэтому выбираем Integer.
Значит в разделе описаний программы, назовем ее Summa, с учетом требований о необходимости обеспечения удобочитаемости программы и размещения необходимых комментариев, поместим следующие описания:
Var
S, { сумма }
a, { значение a }
power : Real; { текущее значение степени a }
i, { переменная цикла }
n : Integer; { конечное значение цикла }
Вам остается только объединить раздел описаний и раздел операторов, чтобы получить готовую программу.
6. Отладка программы. Отладка программы – это процесс поиска и устранения синтаксических ошибок в готовой программе. Обычно отладка предшествует стадии тестирования. В этом пункте необходимо привести скриншот результата работы готовой программы (см. п. 5 Лаб. раб № 1).
7. Тестирование программы. Цель тестирования всякой программы состоит в том, чтобы убедиться, что она решает действительно ту задачу, для которой предназначена, и выдаёт правильный ответ при любых значениях из области решений. Тестовые данные должны обеспечивать проверку всех возможных условий возникновения ошибок. Подготовьте тестовый пример для своей задачи и вычислите конечный результат с помощью калькулятора, имеющегося в среде Windows.
Тестовый пример для нашей задачи будет включать вычисление S при а=2 и n=3:
S = 2+22+23 = 14.
Теперь Вам необходимо провести исследование Вашей программы и убедиться, что вычислительный процесс действительно является циклическим с помощью дебаггера, то есть отладчика программ (см. п. 7 Лаб. раб № 1). Здесь Вы должны исследовать поведение переменных S, power, i структуры for-to-do (рис. 3.5).
8. Перед защитой лабораторной работы Вам необходимо подготовить отчет (Приложение 2). Перед распечаткой обязательно продемонстрируйте его преподавателю в электронном виде, чтобы избежать ошибок в оформлении!