- •Лабораторная работа № 1 «Технология разработки по при структурном подходе»
- •3.2 Структурная схема по с пошаговой детализацией
- •3.3 Структуры данных
- •3.4 Пользовательский интерфейс
- •4 Исходный код программы
- •5 Вывод
- •4 Результаты тестирования
- •5 Вывод
- •3.2 Определение отношений между объектами
- •3.3 Проектирование классов
- •4 Исходный код программы
- •5 Вывод
- •4 Результаты тестирования
- •5 Вывод
3.2 Структурная схема по с пошаговой детализацией
Основная программа
Инициализация
Моделирование подпрыгивания
Завершить
Инициализация
Нарисовать меню
Задание параметров
Инициализация мяча
Нарисовать рельефную поверхность
Моделирование подпрыгивания
Цикл Пока не прервано
Переместить мяч
Проверить касание
Анимировать
Все-Цикл
Инициализация мяча
Задать координаты центра мячаXиY
Задать радиусRadius
Задать начальную скоростьZeroSpeed
Задать начальный угол движенияAlpha
Задать начальные координаты движения ZeroX:=X;ZeroY:=Y;
Задать текущее время TimeMoment := 0
Переместить мяч
Увеличить текущее время
Рассчитать координаты мяча
X := ZeroX + TimeMoment * ZeroSpeed * Cos(Alpha)
Y := ZeroY + TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * Sqr(TimeMoment) / 2
Рассчитать скорость мяча
Speed := Sqrt(Sqr(TimeMoment * ZeroSpeed * Cos(Alpha)) +
Sqr(TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * TimeMoment))
Проверить касание
Найти минимальное расстояние до поверхности Smin
Найти расстояние от мяча до границ экранаS.
Если Smin <= Radius или S <= Radius, то
Рассчитать параметры движения
Рассчитать параметры движения
Найти угол падения Teta
Рассчитать угол Alpha:=Pi–Teta
Задать начальную скоростьZeroSpeed := Speed
Задать текущее времяTimeMoment := 0
Задать начальные координаты движенияZeroX:=X;ZeroY:=Y;
Программа
Нарисовать меню
Задание параметров
Задать координаты центра мяча XиY
Задать радиус Radius
Задать начальную скорость ZeroSpeed
Задать начальный угол движения Alpha
Задать начальные координаты движения ZeroX:=X;ZeroY:=Y;
Задать текущее время TimeMoment := 0
Нарисовать рельефную поверхность
ЦиклПока не прервано
Увеличить текущее время
Рассчитать координаты мяча
X:=ZeroX+TimeMoment*ZeroSpeed*Cos(Alpha)
Y := ZeroY + TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * Sqr(TimeMoment) / 2
Рассчитать скорость мяча
Speed := Sqrt(Sqr(TimeMoment * ZeroSpeed * Cos(Alpha)) +
Sqr(TimeMoment * ZeroSpeed * Sin(Alpha) – 9.8 * TimeMoment))
Найти минимальное расстояние до поверхностиSmin
Найти расстояние от мяча до границ экрана S.
Если Smin <= Radius или S <= Radius, то
Найти угол падения Teta
Рассчитать угол Alpha:=Pi–Teta
Задать начальную скорость ZeroSpeed:=Speed
Задать текущее время TimeMoment:= 0
Задать начальные координаты движения ZeroX:=X;ZeroY:=Y;
Анимировать
Все-Цикл
Завершить
3.3 Структуры данных
Для работы программы необходимы структуры данных, описывающие следующие сущности: мяч, параметры движения мяча, поверхности. Далее приведено математическое описание структур данных, и проекция на физические типы языка ObjectPascal.
Мяч= <X;Y; Скорость; Радиус >,
где X,YR– координаты центра мяча;
Скорость R– текущая скорость мяча;
Радиус{0,1,2... 2 147 483 648} – радиус мяча.
Физически данные о мяче можно представить в виде записи. Координаты X и Y, а также Скорость необходимо представить типомDouble, Радиус типомInteger.
Параметры движения мяча= <X0;Y0;Xp;Yp; Начальная скорость; Альфа; Текущее время >,
где X0,Y0R– координаты центра мяча в момент времениt0=0;
Xp;YpR– координаты центра мяча в предыдущий момент времени;
Начальная скорость R– скорость мячав момент времениt0=0;
Альфа R– угол наклона вектора скорости относительно оси абсцисс в момент времениt0=0;
Текущее времяR– текущее время движения по параболе.
Физически параметры движения мяча также можно представить с помощью типа record, с полями типаDouble.
Поверхность= {Точкаi|i= 0..n},
где Точкаi– точечная параX,Y;
n– ширина поверхности.
Физически поверхность удобно представить в виде динамического массива точек.