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

Обеспечение реакции на управляющие кнопки

Созданные в главе «Разработка внешнего интерфейса программы» кнопки выбора функций необходимо запрограммировать. Определим критерии к данным кнопкам:

  • при нажатии на одну из кнопок, все остальные обнуляются (нажата = 1, не нажата = 0);

  • каждой из кнопок соответствует свой уникальный набор параметров, который отображается в других окнах;

  • при повторном нажатии на одну и ту же кнопку, она не обнуляется.

Создадим имидж и назовем его Switcher. Запишем код, определяющий первый и третий критерии в данном имидже:

FLOAT Sin_Up, Cos_Up,Tg_Up, Ctg_Up

FLOAT Sin_Show, Cos_Show,Tg_Show, Ctg_Show

if (~Sin_Up)

sin_show:=1

cos_show:=0

tg_show:=0

ctg_show:=0

changed:=1

sin_up:=0

endif

if (~cos_Up)

sin_show:=0

cos_show:=1

tg_show:=0

ctg_show:=0

changed:=1

cos_up:=0

endif

if (~tg_Up)

sin_show:=0

cos_show:=0

tg_show:=1

ctg_show:=0

changed:=1

tg_up:=0

if (~Ctg_Up)

sin_show:=0

cos_show:=0

tg_show:=0

ctg_show:=1

changed:=1

ctg_up:=0

endif

Проведем связи от имиджа Switcher к кнопкам и настроим передаваемые сигналы. Пусть сигналу sin_Up соответствует сигнал ButtonDown, а сигналу sin_show соответствуем сигнал pressed (и так для каждой функции). Флаг changed передадим по связи в имидж Graph, там запрограммируем реализацию второго критерия. (см. Приложение 1)

Организация пересчета значений функций

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

  1. движение управляющей точки;

  2. выбор другой функции;

  3. нажатие кнопки «Заново».

Во всех трех случаях пересчет будет осуществляться по одной и той же схеме (см. Приложение 4):

  1. Находим угол с помощью функции GetAngleByXY (см. Приложение 2);

  2. Находим координаты управляющей точки;

  3. Задаем радиус-вектору новые координаты с помощью функции SetVectorPoint2d (см. Приложение 2);

  4. Передаем в окно промежуточных значений новые значения с помощью функции SetString2d (см. Приложение 2);

  5. Пересчитываем значение функции, в зависимости от ее выбора, и передаем его в окно значения функции SetString2d (см. Приложение 2), предусмотрев случай, когда тангенс и котангенс не имеют значений, показывать знак бесконечности;

  6. Задаем новые координаты для векторов x, y с помощью функции SetVectorPoint2d (см. Приложение 2);

  7. Если выбрана функция тангенса или котангенса находим, с помощью уравнения прямой, координаты x или y соответственно, и в зависимости от них задаем конечные координаты вектора с помощью функции с помощью функции SetVectorPoint2d (см. Приложение 2);

Важно отметить, что пересчет осуществляется ежесекундно.

Тестирование получившейся программы

Результаты тестирования представлены в таблице 1.

Таблица 1

№ тестирования

Данные

Ожидаемый результат

Успешность тестирования

Т1

выбрана функция «синус»

появляется формула синуса, изменяется наименование функции в окне значений, появляется линия синуса

+

Т2

выбрана функция «косинус»

появляется формула косинуса, изменяется наименование функции в окне значений, появляется линия косинуса

+

Т3

выбрана функция «тангенс»

появляется формула тангенса, изменяется наименование функции в окне значений, появляется линия тангенса

+

Т4

выбрана функция «котангенс»

появляется формула котангенса, изменяется наименование функции в окне значений, появляется линия котангенса

+

Т5

движение точки

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

+

Т6

нажатие на экран (не на точку)

ничего не происходит

+

Т7

выбор одной и той же функции второй раз

галочка не убирается

Т8

нажата кнопка «показать сетку»

если уже стояла галочка – сетка скрывается, если галочка не стояла – сетка показывается

+

Т9

нажата кнопка «заново»

выдается случайное положение точки на верхней полуокружности и случайная функция

+

Т10

нажата кнопка «выход»

программа прерывается

+