- •Введение
- •Лабораторная работа №1. Создание простого приложения
- •1 ) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий):
- •3) Компиляция и выполнение приложения
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №2. Циклические программы. Многострочное поле memo
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №3. Работа с одномерными массивами
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 4. Работа с двумерными массивами
- •Контрольные вопросы
- •Лабораторная работа № 5. Процедуры и функции в delphi
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 6. Рекурсивные процедуры и функции
- •Контрольные вопросы
- •Лабораторная работа №7. Разработка приложения с несколькими модулями
- •2) Последовательность действий по программированию событий
- •Лабораторная работа №8. Работа со строками
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •3) Откомпилируйте приложение и проверьте его работу задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №9. Создание текстового редактора
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 10. Методы простой сортировки
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 11. Поиск данных в массиве
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №12. Работа с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №13. Работа с типизированными файлами (файлы записей)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 14. Динамические структуры данных . Стек и очередь
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 15. Практическое применение стека и очереди
- •Лабораторная работа №16. Линейные списки
- •Лабораторная работа №17. Работа с бинарными деревьями поиска
- •Задание для самостоятельной работы
- •Лабораторная работа №18. Основы объектно-ориентированного программирования
- •Задание для самостоятельной работы
- •Лабораторная работа №19. Графика в delphi. Компоненты shape и chart
- •Контрольные вопросы
- •Лабораторная работа №20. Графика в delphi. Рисование по пикселам и пером
- •Контрольные вопросы
- •Лабораторная работа № 21. Вычисление суммы ряда
- •Литература
- •Содержание
- •214013 Г. Смоленск, Энергетический проезд, 1
Задание для самостоятельной работы
Выполните вывод дерева слева направо (Левый-Корень-Правый) и снизу вверх (Левый – Правый - Корень).
Напишите функцию проверки наличия заданного элемента в дереве.
Напишите функцию поиска наибольшего элемента в дереве.
КОНТРОЛЬНЫЕ ВОПРОСЫ
Дайте определение бинарного дерева поиска
Где применяются бинарные деревья поиска?
Построить бинарное дерево поиска. Записать прохождение дерева сверху вниз, слева направо и снизу вверх : 14 15 9 2 4 8 11 3 19 1
Построить дерево – формулу. Получить префиксную и постфиксную записи выражения: A / (B ^ C – D) / (E + F) + G
Лабораторная работа №18. Основы объектно-ориентированного программирования
ЦЕЛЬ РАБОТЫ: Познакомиться с основами объектно-ориентированного программирования (ООП), классами, объектами и механизмом наследования. Получения практического навыка создания пользовательских классов.
ПОДГОТОВКА К РАБОТЕ:
Изучить основные принципы ООП.
Ознакомиться с составляющими класса – полями, свойствами и методами.
Ознакомиться с базовым классом Object и механизмом наследования.
ЗАДАНИЕ: Разработать приложение, содержащее следующие классы: TLocation (Расположение), TPoint (Точка), TCircle ( Круг).Диаграмма классов приведена на рисунке 18.1.
Класс TLocation состоит из следующих полей и методов:
x, y - координаты;
Image – поверхность, на которой определяются координаты x и y;
ClearWin – процедура очистки поверхности (закраска поверхности белым цветом);
Draw – абстрактная процедура изображения фигуры на поверхности.
Класс TPoint состоит из следующих полей, свойств и методов:
FColor – поле «цвет точки с координатами x и y»;
PColor – свойство «цвет точки с координатами x и y». Для получения цвета точки используется функция GetColor. Для получения цвета точки используется функция SetColor;
Show – процедура «Показать точку»;
Hide – процедура «Скрыть точку»;
Draw – процедура «Нарисовать точку».
Класс TCircle состоит из следующих полей, свойств и методов:
r – радиус круга;
Draw – процедура «Нарисовать круг».
П риложение должно иметь вид, изображенный на рисунке 18.2.
Компоненты приложения приведены в таблице 18.1.
Последовательность действий по созданию приложения:
В блоке Type после объявления класса формы объявите пользовательские классы:
TForm1 = class(TForm)
…………………….
end;
// Class TLocation
TLocation=Class
x,y:Integer;
Image:TImage;
Procedure Draw (IsShow:Boolean;aImage:TImage); virtual;abstract;
Procedure ClearWin(aImage:TImage);
end;
// Class TPoint
TPoint=Class(TLocation)
FColor:DWord;
Function GetColor:DWord;
Procedure SetColor(NewColor:DWord);
Procedure Draw(IsShow:Boolean;aImage:TImage);override;
Procedure Show(aImage:TImage);
Procedure Hide(aImage:TImage);
Property PColor:DWord read GetColor write SetColor;
end;
// Class TCircle
Tcircle=Class(TPoint)
r:Integer;
Procedure Draw(IsShow:Boolean;aImage:TImage);override;
end;
Таблица 18.1 Компоненты приложения
Компонент |
Класс |
Описание |
Image1 |
Tmage |
Поверхность для изображения объекта |
Button1 |
TButton |
Командная кнопка «Вверх» |
Button2 |
TButton |
Командная кнопка «Вниз» |
Продолжение таблицы 18.1
Компонент |
Класс |
Описание |
Button3 |
TButton |
Командная кнопка «Влево» |
Button4 |
TButton |
Командная кнопка «Вправо» |
Button5 |
TButton |
Командная кнопка «Увеличить» |
Button6 |
TButton |
Командная кнопка «Уменьшить» |
Создайте блок объявления констант:
const dy=10; // смещение фигуры по оси y
dx=10; // смещение фигуры по оси x
var
Form1: TForm1;
…………………………
В области объявления глобальных переменных объявите объект «круг»:
var
Form1: TForm1;
Circle:TCircle;
В блоке implementation опишите методы класса TLocation:
// Методы класса TLocation
// Очистка окна
Procedure TLocation.ClearWin(aImage:TImage);
begin
Image:=aImage;
// Установить черный цвет пера
Image.Canvas.Pen.Color:=clBlack;
// Нарисовать прямоугольник, размер которого равен размеру окна
Image.Canvas.Rectangle(0,0,Image.Width,Image.Height);
// Установить белый цвет кисти
Image.Canvas.Brush.Color:=clWhite;
// Закрасить прямоугольник белым цветом
Image.Canvas.FloodFill(1,1,clBlack,fsBorder);
end;
В блоке implementation опишите методы класса TPoint:
// Методы класса TPoint
// Получить значение цвета точки
Function TPoint.GetColor:DWord;
begin
Result:=FColor;
end;
// Установить цвет точки
Procedure TPoint.SetColor(NewColor:DWord);
begin
FColor:=NewColor;
end;
// рисовать точку
Procedure TPoint.Draw(IsShow:Boolean;aImage:TImage);
begin
Image:=aImage;
// Очистить окно
ClearWin(Image);
// Если флаг равен True, показать точку
If IsShow then Image.Canvas.Pixels[X,Y]:=FColor;
end;
// Показать точку
Procedure TPoint.Show(aImage:TImage);
begin
Image:=aImage;
// Установить флаг равным True
Draw(True,Image);
end;
// Скрыть точку
Procedure TPoint.Hide(aImage:TImage);
begin
Image:=aImage;
// Установить флаг равным False
Draw(False,Image);
end;
В блоке implementation опишите методы класса TCircle:
// Методы класса TCircle
// рисовать круг
Procedure TCircle.Draw(IsShow:Boolean;aImage:TImage);
begin
Image:=aImage;
ClearWin(Image);
If IsShow then
With Image.Canvas do
begin
Brush.Color:=FColor;
// Установить координаты центра круга
MoveTo(x,y);
// Рисовать круг
Ellipse(x-r,y-r,x+r,y+r);
// Закрасить круг
FloodFill(x,y,clBlack,fsBorder);
end;
end;
Для события OnActivate компонента Form1 напишите следующий программный код:
procedure TForm1.FormActivate(Sender: TObject);
begin
// Создать объект «круг»
Circle:=TCircle.Create;
// Координаты круга в центре окна
Circle.x:=Image1.Width div 2;
Circle.y:=Image1.Height div 2;
// Радиус круга равен 10
Circle.r:=10;
// Цвет круга - голубой
Circle.FColor:=clSkyBlue;
// Нарисовать объект «круг»
Circle.Show(Image1);
end;
Для события OnClick командной кнопки Button1 (вверх) напишите следующий программный код:
procedure TForm1.Button1Click(Sender: TObject);
begin
// Изменить координату по оси Y
Circle.y:=Circle.y-dy;
// Нарисовать круг
Circle.Show(Image1);
end;
Для события OnClick командной кнопки Button2 (вниз) напишите следующий программный код:
procedure TForm1.Button2Click(Sender: TObject);
begin
// Изменить координату по оси Y
Circle.y:=Circle.y+dy;
// Нарисовать круг
Circle.Show(Image1);
end;
Для события OnClick командной кнопки Button3 (влево) напишите следующий программный код:
procedure TForm1.Button3Click(Sender: TObject);
begin
// Изменить координату по оси X
Circle.x:=Circle.x-dx;
// Нарисовать круг
Circle.Show(Image1);
end;
Для события OnClick командной кнопки Button4 (вправо) напишите следующий программный код:
procedure TForm1.Button4Click(Sender: TObject);
begin
// Изменить координату по оси X
Circle.x:=Circle.x+dx;
// Нарисовать круг
Circle.Show(Image1);
end;
Для события OnClick командной кнопки Button5 (увеличить) напишите следующий программный код:
procedure TForm1.Button5Click(Sender: TObject);
begin
// Увеличить радиус в 2 раза
Circle.r:=Circle.r*2;
// Нарисовать круг
Circle.Show(Image1);
end;
Для события OnClick командной кнопки Button5 (уменьшить) напишите следующий программный код:
procedure TForm1.Button6Click(Sender: TObject);
begin
// Уменьшить радиус в 2 раза
Circle.r:=Circle.r div 2;
// Нарисовать круг
Circle.Show(Image1);
end;
Откомпилируйте приложение и проверьте его работу.