
- •Методические указания по выполнению домашних заданий для студентов 1 курса специальности иу-10.
- •Введение.
- •Домашнее задание 1. Практикум 6. Приближенные вычисления.
- •Задача 6.1.
- •Var a, b, c : real;
- •Iter : longword;
- •Inc(iter);
- •Задания.
- •Задача 6.2.
- •Inc(n); inc(iter);
- •Задания.
- •Практикум 7. Процедурные типы.
- •Задача 7.1.
- •Var a, b, X, dx, y1, y2, s1, s2 : real;
- •Var a, b, X, dx, y1, y2, s1, s2 : real;
- •Inc(iter);
- •Задания.
- •Задача 7.2.
- •Var s1, s2 : real;
- •Задания.
- •Домашнее задание 2. Практикум 13. Типизированные файлы.
- •Задача 13.1.
- •Var I : word;
- •Var I, j : word; buf : tSportMan;
- •If fSort(a[I], a[j]) then
- •Var I : word;
- •Var I : word;
- •Var aHi : Ta; Var nHi : word);
- •Var I : word;
- •Задания.
- •Домашнее задание 3. Практикум 18. Использование объектной технологии для построения движущихся фигур.
- •X, y : real;
- •2*T0.X-border, 2*t0.Y-border);
- •X3, y3 : real;
- •X1, y1, x2, y2, x3, y3 : real;
- •Inherited Init(fx0, fy0, fmx, fcnv);
- •Var t : array[1..3] of tPoint; I : byte;
- •Var t0 : tPoint; tc : trPoint; tri:cTri;
- •0,0, 1,0, 0,1, Tc, clRed);
- •Var I : byte; r, a : real;
- •Var t0 : tPoint; tc : trPoint;
- •0,0, 1,0, 0,1, Tc, clRed);
- •Var I : word;
- •Var dx : real; tr : trPoint; tp: tPoint; I : word;
- •Inherited Init(fx0, fy0, fmx, fcnv);
- •Var dx : real;
- •Var t : array[1..3] of tPoint; tr : trPoint;
- •I : byte;
- •Var dx : real;
- •Var list : cList;
- •Var I : word;
Домашнее задание 3. Практикум 18. Использование объектной технологии для построения движущихся фигур.
Для выполнения этого домашнего задания необходима тщательная проработка предыдущего практикума, где рассмотрены основные приемы объектно-ориентированного программирования.
Учебная задача имеет своей целью показать практику использования объектной технологии для создания различного рода программ – симуляторов ситуационного поведения, обучающих принятию решений в условиях возникновения сложных многофакторных ситуаций.
Основным отличительным признаком таких программ является отображение на экране движения нескольких разнородных фигур. Причем как время их возникновения или исчезновения, так и траектории движения могут изменяться. Мы будем решать эту задачу в упрощенном варианте, когда вид фигур и их траектории движения считаются заданными (см. свой вариант).
В этом и последующих практикумах будет рассматриваться фигура, состоящая из 4 прямоугольных равнобедренных треугольников.
Последовательность разработки.
Этап 1. Выбор области рисования и положения системы координат. На этом этапе создается базовый класс cDecart. Его объявление приведено ниже.
Листинг 18а. Объявление класса cDecart.
Type
TRPoint=record
X, y : real;
end;
cDecart=class
protected
t0 : TPoint;
mx : real;
cnv : TCanvas;
public
Constructor Init(fx0, fy0 : integer;
fmx : real;
fcnv : TCanvas);
Procedure Draw;
Function tpix(tr : TRPoint):TPoint;
end;
Реализация методов класса.
Procedure cDecart.Draw;
Const border=20;
Begin
// Добавлена очистка области рисования (фрагмент ниже)
cnv.Brush.Color:=clWhite;
cnv.Pen.Color:=clWhite;
cnv.Rectangle(border, border,
2*T0.X-border, 2*t0.Y-border);
// Далее по тексту рисование осей координат, как и раньше
. . . . . . . . . .
// Реализация функции пересчета
Function cDecart.tpix(tr : TRPoint):TPoint;
Begin
Result.X:=t0.X + round(mx*tr.x);
Result.Y:=t0.Y - round(mx*tr.y);
End;
Этап 2. Проектирование производного класса «закрашенный треугольник» с вершинами apex, центром вращения tc и цветом cl. Пока все очень упрощенно с конструктором из декартовых координат для данного примера.
Листинг 18б. Объявление класса cTri.
Type cTri=class(cDecart)
apex : array[1..3] of TRPoint;
tc : TRPoint;
cl : TColor;
public
Constructor Init(fx0, fy0 : integer;
fmx : real;
fcnv : TCanvas;
x1, y1, x2, y2,
X3, y3 : real;
ftc : TRPoint;
fcl : TColor);
Procedure Draw;
end;
Реализация конструктора и методов.
Constructor cTri.Init(fx0, fy0 : integer;
fmx : real; fcnv : TCanvas;
X1, y1, x2, y2, x3, y3 : real;
ftc : TRPoint; fcl : TColor);
Begin
Inherited Init(fx0, fy0, fmx, fcnv);
apex[1].x:=x1; apex[1].y:=y1;
apex[2].x:=x2; apex[2].y:=y2;
apex[3].x:=x3; apex[3].y:=y3;
tc:=ftc; cl:=fcl;
End;
Напомню, что тип TPoint, который используется в Polygon, взят из WINDOWS, а тип TRPoint объявлен в UDecart
Procedure cTri.Draw;