Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
70
Добавлен:
31.03.2015
Размер:
85.5 Кб
Скачать

Этапы выполнения лабораторной работы Лабораторная работа должна выполняться по этапам, описанным ниже.

1. Составить спецификацию (см. раздел 7.8), заполнив следующие ее части: задача, состав входных и выходных данных, входная, выходная форма.

Пример.

Спецификация

Задача. Пересекаются ли круг и эллипс?

Ограничения: центр круга и ось эллипса лежат на оси ОХ.

Входные данные.

Состав: вещ r, ro – радиус и центр круга

вещ a, b, аo – полуоси и центр эллипса

<r><ro>

<a><b><ao>

Входная форма: input

Выходные данные.

Круг и эллипс

 пересекаются {[касаются]

 [вложенные] [концентрические] }

 не пересекаются

Выходная форма: output

Метод. Фигуры пересекаются, если они имеют по крайней мере одну общую точку.

2. Разработать интерфейс задачи (см. раздел 7.6 и стр. 9-10). Отладить, поставив в качестве заглушки печать заголовка (Сегмент С0).

3. Раскрыть абстракцию Простой ввод данных (Сегмент С1а). Вставить в сегмент С0 и отладить.

4. Раскрыть абстракцию Ввод данных с подсказкой (Сегмент С1б). Вставить в сегмент С0 и отладить.

{Круг и эллипс} C 0

program Cross (input, output);

var r, ro: real;{радиус и центр круга}

a, b, ao: real;{полуоси и центр эллипса}

begin

writeln('Круг и эллипс');

С1

С2

end.

{Простой ввод данных} С1а

readln (r,ro); readln (a,b,ao);

{Ввод данных с подсказкой} С1б

writeln(‘Ввод радиуса и центр круга’);

readln (r,ro);

writeln(‘Ввод полуосей и центра эллипса’);

readln (a,b,ao);

{Ввод данных}

{Анализ фигур}

5. Составить условие пересечения фигур, записать его в раздел спецификации - Метод и раскрыть абстракцию Анализ фигур, записав ее в виде сегмента С2.

П

Вставить С2 в сегмент С0. Отладить. Для тестирования подобрать значения входных данных и нарисовать рисунок для случаев:

  • фигуры пересекаются;

  • фигуры не пересекаются.

ример.Метод. Если расстояние между центрами круга и эллипса не больше, чем r+a, то фигуры пересекаются.

{Анализ фигур} C2

if abs (ro-ao) <= r+a then

C3

else

writeln ('не пересекаются')

end.

{Пересекаются}

6. Уточнить условие пересечения с точки зрения взаимного расположения фигур. Направления исследования могут быть разными, но главной целью является выявление условий вложенности и пересечения фигур. Описать в Методе направление исследования и раскрыть абстракцию Пересекаются в виде сегмента С3, где записать следующий шаг уточнения условия пересечения. В примере проверяется касание фигур.

{Пересекаются} C3

if abs (ro-ao) < r +a then

begin

writeln(‘пересекаются’);

C4

end

else

writeln ('касаются')

Вставить С3 в сегмент С2. Отладить.

Для тестирования подобрать значения входных данных и нарисовать рисунок для случаев:

  • фигуры пересекаются (общий случай);

  • фигуры пересекаются (касаются).

{Вложенность?}

Для рассматриваемого примера проверка вложенности круга в эллипс даст нам одно из решений задачи. Это легко выполнить, если фигуры концентрические. При этом условии раскроем абстракцию Вложенность? в виде сегмента С4.

Пример. Метод (окончание). Если фигуры концентрические, то круг вложен в эллипс, если его радиус меньше каждой из полуосей эллипса.

{Вложенность?} C4

if (ro=ao) then

begin

writeln ('Фигуры концентрические');

if (r<=a) and (r<= b) then

writeln (‘Круг вложен в эллипс')

else

writeln ('круг не вложен в эллипс')

end

else

writeln ('Фигуры не концентрические')

Вставить С4 в сегмент С3 .

Для тестирования подобрать значе -ния входных данных и нарисовать рисунки для случаев:

- фигуры концентрические и круг вложен в эллипс;

- фигуры концентрические и круг не вложен в эллипс;

- фигуры не концентрические.

7. Добавить в программу оболочку для тестирования (см. раздел 7.6 и стр. 17). Все раскрытые абстракции остаются в программе в виде комментариев. Сдать работу (без проверки аномалий) преподавателю. Работа принимается только при наличии полной спецификации с функциональными тестами, демонстрационными рисунками и структурной схемой программы.

8. Добавить в спецификацию диапазон допустимых значений входных данных и раздел аномалий. Изменить выходную форму.

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

Пример. Диапазон:. r>0 и a,b>0

Аномалии: r  0 или a  0 или b  0

{Круг и эллипс} C 0

program Cross (input, output);

var r, ro: real;{ радиус и центр круга }

a, b, ao: real;{ полуоси и центр эллипса }

begin

Оболочка для тестирования

writeln('Круг и эллипс');

if (r>0) and (a>0) and (b>0) then

else

writeln (‘Входные данные неверные’)

end.

Подобрать тесты для проверки аномалий.

Каждый тестовый набор данных должен содержать одну величину с аномальным значением при остальных правильных данных.

{Ввод данных}

С0

{Анализ фигур}

С1

С2

С3

С4

Рис.5. Структурная схема программы

(при проектировании)

Соседние файлы в папке Metod1_2010