- •Лабораторная работа № 2
- •Освоение технологии структурного программирования
- •При разработке и создании программы на языке Турбо Паскаль
- •Для ветвящегося вычислительного процесса
- •Теоретические сведения
- •1. Условие задачи:
- •9. Для защиты лабораторной работы:
- •Литература
- •Задания к лабораторной работе № 2
- •Министерство образования и науки, молодежи и спорта Украины
1. Условие задачи:
Даны два вектора (x1,y1) и (x2,y2). Вычислить длины этих векторов и определить, во сколько раз вектор длиннее или короче вектора.
2. Решение задачи в ее предметной области, в данном случае – это высшая математика Если Вы не помните формулу вычисления длины вектора, то в учебнике по высшей математике [1, с. 389] можно обнаружить, что она имеет вид:
|
(3) |
где и проекции вектораa на оси x и y соответственно.
Формулируя условие задачи для программирования, старайтесь держаться как можно ближе к исходному условию, чтобы Вас при программировании не отвлекали никакие разночтения. Поэтому формулу (3) перепишем в виде:
|
(4) |
Теперь Вы видите, что нахождение длин векторов труда не составляет и можно переходить к следующему этапу.
Вы должны представить в уме или написать на листе бумаги следующие соотношения:
(a/b) > 1 a длиннее b;
(a/b) = 1 a равно b; (этот случай не рассматриваем)
(a/b) < 1 a короче b.
3. Проводим нисходящую разработку (проектирование) программы методом пошаговой детализации с помощью псевдокода. Воспользуемся примером (рис. 1.1) для получения первой версии алгоритма:
Ввести данные Vectors
Выполнить вычисления Vectors
Вывести результаты Vectors
С учетом требований к «дружественности» интерфейса, псевдокод Вашей программы примет вид:
Вывести на экран приглашение для ввода x1
Ввести x1
. . .
Вывести на экран приглашение для ввода y2
Ввести y2
Вычислить длину вектора
Вычислить длину вектора
Вычислить отношение длины a к b, т.е a/b = ab
ЕСЛИ a/b > 1.0 ТО
Напечатать: «a длиннее b в ab раз»
ИНАЧЕ
Вычислить отношение длины b к a – ab
Напечатать: «a короче b в ab раз»
4. Проектируем структуры данных (их имена и типы). Понятно, что все имена, входящие в (4), нужно описать в программе, т.е. a, x1, y1, b, x2, y2. Кроме того, нам понадобится некоторая переменная, в которой будет храниться отношение a к b. Назовем ее ab. Поскольку все эти величины будут иметь дробную часть, то их тип будет Real.
Значит в разделе описаний программы, назовем ее Vectors, с учетом требований о необходимости обеспечения легкочитаемости программы и размещения необходимых комментариев, поместим следующие описания:
Var
a, { длина вектора a }
x1, { координата x вектора a }
y1, { координата y вектора a }
b, { длина вектора b }
x2, { координата x вектора b }
y2, { координата y вектора b }
ab : Real; { отношение длины вектора a к b }
5. Выполняем структурное программирование с использованием структуры развилка:
BEGIN
ClrScr; { Очищаем экран }
Write(‘Введите координату x1 вектора a = ’);
ReadLn(x1);
Write(‘Введите координату y1 вектора a = ’);
ReadLn(y1);
Write(‘Введите координату x2 вектора b = ’);
ReadLn(x2);
Write(‘Введите координату y2 вектора b = ’);
ReadLn(y2);
a := sqrt(sqr(x1)+ sqr(y1)); {Вычисляем длину вектора a }
b := sqrt(sqr(x2)+ sqr(y2)); {Вычисляем длину вектора b }
ab := a/b; { Вычисляем отношение длины a к b }
if ab > 1.0 then
WrietLn(‘a длиннее b в ’, ab:4:2, ‘ раз’)
else
begin
ab := b/a; { Вычисляем отношение длины b к a }
WriteLn(‘a короче b в ’, ab:4:2, ‘ раз’))
end;
ReadLn
END.
6. Отладка программы. Отладка программы – это процесс поиска и устранения синтаксических ошибок в готовой программе. Обычно отладка предшествует стадии тестирования. В этом пункте необходимо привести скриншот результата работы готовой программы (см. п. 5 Лаб. раб № 1).
7. Тестирование программы. Цель тестирования всякой программы состоит в том, чтобы убедиться, что она решает действительно ту задачу, для которой предназначена, и выдаёт правильный ответ при любых значениях из области решений. Тестовые данные должны обеспечивать проверку всех возможных условий возникновения ошибок. Подготовьте тестовый пример для своей задачи и вычислите конечный результат с помощью калькулятора, имеющегося в среде Windows. Должна быть испытана каждая ветвь алгоритма. Это значит, что если имеются две или три ветви алгоритма, то каждый из возможных путей работы программы необходимо проверить хотя бы по одному разу.
Тестовый пример для нашей задачи будет включать два варианта:
1. (0, 9) и (0, 4) – вектор длиннее вектора .
2. (0, 4) и (0, 9) – вектор короче вектора .
Теперь Вам необходимо провести исследование Вашей программы и убедиться, что вычислительный процесс действительно является ветвящимся с помощью дебаггера, то есть отладчика программ (см. п. 7 Лаб. раб № 1). Но, кроме переменной ab Вы должны также исследовать поведение значения условия оператора if-then-else (рис. 2.7, 2.8).
8. Перед защитой лабораторной работы Вам необходимо подготовить отчет (Приложение 2). Перед распечаткой обязательно продемонстрируйте его преподавателю в электронном виде, чтобы избежать ошибок в оформлении!