Изучение языка объектно-ориентированного программирования Borland Delphi
Исследование теории и технологии работы со средой программирования Borland Delphi. Особенность описания интерфейса. Изучение порядка работы с программой. Анализ структуры хранения данных. Инициализация генератора случайных чисел процедурой Randomize.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 13.10.2017 |
Размер файла | 21,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Рыбинский государственный авиационный технический университет имени П.А. Соловьева»
Кафедра вычислительных систем
Контрольная работа
по дисциплине «Программирование»
Выполнил
Колобов А.Э.
Преподаватель
Паламарь И.Н.
Рыбинск 2014
Целью работы является изучение языка объектно-ориентированного программирования Borland Delphi и разработка практических заданий. При выполнении курсовой работы предстоит:
изучить теорию и технологию работы со средой программирования Delphi;
изучить и проанализировать соответствующую литературу;
Объектно-ориентированные языки программирования пользуются в последнее время большой популярностью среди программистов, так как они позволяют использовать преимущества объектно-ориентированного подхода не только на этапах проектирования и конструирования программных систем, но и на этапах их реализации, тестирования и сопровождения.
Первый объектно-ориентированный язык программирования Simula 67 был разработан в конце 60-х годов в Норвегии. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время. Однако современники (программисты 60-х годов) оказались не готовы воспринять ценности языка Simula 67, и он не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran).
Прохладному отношению к языку Simula 67 способствовало и то обстоятельство, что он был реализован как интерпретируемый (а не компилируемый) язык, что было совершенно неприемлемым в 60-е годы, так как интерпретация связана со снижением эффективности (скорости выполнения) программ.
Но достоинства языка Simula 67 были замечены некоторыми программистами, и в 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования: например, языки CLU, Alphard, Concurrent Pascal и др. Эти языки так и остались экспериментальными, но в результате их исследования были разработаны современные объектно-ориентированные языки программирования: C++, Smalltalk, Delphi и др.
Появление Delphi не могло пройти незамеченным среди многочисленных пользователей компьютера. Оценки экспертов, изучающих возможности этого нового продукта фирмы Borland, обычно окрашены в восторженные тона. Основное достоинство Delphi состоит в том, что здесь реализованы идеи визуального программирования. Среда визуального программирования превращает процесс создания программы в приятное и легко понимаемое конструирование приложения из большого набора графических и структурных примитивов.
Delphi - чрезвычайно быстро развивающаяся система. Первая версия - Delphi 1. 0 была выпущена в феврале 1995 г. А затем новые версии выпускались ежегодно.
Каждая последующая версия Delphi дополняла предыдущую.
Большинство версий Delphi выпускается в нескольких вариантах: Standart - стандартном, Professional профессиональном, Client/Server - клиент/сервер, Enterprise - разработка баз данных предметных областей. Различаются варианты в основном разным уровнем доступа к системам управления базами данных. Последние варианты - Client/Server и Enterprise, в этом отношении наиболее мощные.
Описание интерфейса
Внешний вид программы приведен на рисунке 1.
Окно содержит следующие визуальные компоненты:
- поле для вывода результата (Timage);
- поле, содержащее список точек (TListBox);
- поля для ввода координат точки (TEdit);
- кнопка для ручного добавления точки (TButon);
- поле для ввода количества точек для случайной генерации точек (TEdit);
- кнопки для генерации точек и кнопка для запуска процесса расчета (TButon).
Порядок работы с программой
Процесс работы с программой заключается в выполнении следующих шагов:
1. пользователь вводит количество точек (N), которое необходимо сгенерировать и нажимает кнопку «Сгенерировать» или вручную добавляет необходимые точки;
2. пользователь нажимает на кнопку «Рассчитать»;
3. программа находит все возможные квадраты, рисует их на поле для вывода результата и выводит их количество.
Структура данных
Для хранения данных о точках введем тип данных tmypoint:
1. type
2. tmypoint = record
3. x: Integer;
4. y: Integer;
5. end;
Тип tmypoint представляет собой запись, которая имеет 2 поля: x и y, для хранения соответствующих координат точек.
Для хранения информации о рабочем поле будем использовать объектный тип tfield. Его код приведен ниже.
tfield = object
points: array [0..100000] of tmypoint;
cnt: Integer;
function is_digit(s: string):Boolean;
procedure update_list();
procedure add_point_str(_x, _y: string);
procedure add_point_int(x, y: integer);
function distance(p1, p2: tmypoint): Double;
function is_bar(p1, p2, p3, p4: tmypoint):
Boolean;
procedure drawbar(p1, p2, p3, p4: tmypoint);
procedure gen_bars();
end;
Генерация точек
Ниже приведен обработчик нажатия на кнопку «Сгенерировать».
1. procedure TForm1.genClick(Sender: TObject);
2. var
3. i: Integer;
4. begin
5. Randomize;
6. if not field.is_digit(n_gen.Text)
7. then
8. begin
9. ShowMessage('Неподходящие координаты');
10. Exit;
11. end;
12. for i := 1 to StrToInt(n_gen.Text) do
13. field.add_point_int(Random(img1.Width), Random(img1.Height));
14. field.update_list;
15. end;
В строке 5 происходит инициализация генератора случайных чисел процедурой Randomize. Если пользователь ввел некорректное числовое значение, то программа сообщает об ошибке и выходит из процедры (строки 6-11). В случае, если пользователь ввел корректное числовое значение N, программа генерирует 2*N случайных числа, с условием, что они могут быть корректными координатами точек. Сгенерированные координаты добавляются в список методом add_point_int объекта tfield (строки 12-13), после чего происходит обновление списка методом update_list.
Листинг метода add_point_int приведен ниже.
1. procedure tfield.add_point_int(x, y: integer);
2. begin
3. if (x > form1.img1.Width) or (y > Form1.img1.Height) or (x < 0) or (y < 0)
4. then
5. begin
6. ShowMessage('Неподходящие координаты');
7. Exit;
8. end;
9. points[cnt].x := x;
10. points[cnt].y := y;
11. Inc(cnt);
12. end;
Эта процедура добавляет в список точек точку с координатами (x, y), после чего увеличивает на 1 счетчик точек.
Листинг процедуры update_list приведен ниже.
1. procedure tfield.update_list();
2. var i: integer;
3. canvas: tcanvas;
4. begin
5. Form1.lst1.Clear;
6. canvas := Form1.img1.Canvas;
7. canvas.Brush.Color:=clWhite;
8. canvas.Rectangle(0, 0, Form1.img1.Width, Form1.img1.Height);
9. canvas.Brush.Color:=clBlack;
10. for i := 0 to cnt-1 do
11. begin
12. Form1.lst1.Items.add(IntToStr(points[i].x)+ ', '+IntToStr(points[i].y));
13. canvas.Ellipse(points[i].x-2, Form1.img1.Height - points[i].y-2, points[i].x+2, Form1.img1.Height - points[i].y+2);
14. end;
15. end;
В строке 5 очищается список точек.
В строке 6 ссылка на canvas поля для вывода результата сохраняется в локальную переменную для быстрого доступа в дальнейшем.
В строках 6-7 фон поля для вывода результата меняется на белый.
В строках 8-12 рисуются и добавляются в список точек сами точки.
Ручное добавление точек
Обработчик нажатия на кнопку «Добавить» приведен ниже.
1. procedure TForm1.addClick(Sender: TObject);
2. var
3. x, y: Integer;
4. begin
5. field.add_point_str(point_x.Text, point_y.text);
6. field.update_list;
7. end;
Здесь происходит вызов процедуры добавления точки в список (add_point_str) и обновление списка точек.
Листинг метода add_point_str приведен ниже.
1. procedure tfield.add_point_str(_x, _y: string);
2. var
3. x, y: Integer;
4. begin
5. if not is_digit(_x) or not is_digit(_y)
6. then
7. begin
8. ShowMessage('Ошибка ввода');
9. Exit;
10. end;
11. x := StrToInt(_x);
12. y := StrToInt(_y);
13. add_point_int(x, y);
14. end;
Здесь проверяется корректность введенных данных (строки 5-10), преобразование строковых координат в числовые и добавление в список методом add_point_int.
Поиск квадратов
Для поиска всех квадратов введем метод, определяющий, возможность построения квадрата с вершинами в точках p1, p2, p3, p4.
1. function tfield.is_bar(p1, p2, p3, p4: tmypoint): Boolean;
2. var d1, d2, d3, d4: double;
3. begin
4. d1 := distance(p1, p2);
5. d2 := distance(p2, p3);
6. d3 := distance(p3, p4);
7. d4 := distance(p4, p1);
8. Result := (d1 = d2) and (d2 = d3) and (d3 = d4) and (d4 = d1) and (d1 <> 0);
9. end;
Решение о возможности построить квадрат с координатами в точках p1, p2, p3, p4 принимается на основе следующего утверждения: расстояние между точками p1 и p2 совпадает с расстояниями между точками p2 и p3, p3 и p4, p4 и p1, и при этом это расстояние не равно 0, то возможно построить квадрат с вершинами в точках p1, p2, p3, p4, в противном случае такое построение невозможно.
Метод distance выглядит следующим образом.
1. function tfield.distance(p1, p2: tmypoint): Double;
2. begin
3. Result := (Sqrt(Sqr(p2.x - p1.x) + Sqr(p2.y - p1.y)));
4. end;
Метод, осуществляющий поиск квадратов, выглядит следующим образом.
1. procedure tfield.gen_bars();
2. var
3. i1, i2, i3, i4, acnt: Integer;
4. begin
5. acnt := 0;
6. for i1 := 0 to cnt-1 do
7. for i2 := i1+1 to cnt-1 do
8. for i3 := i2+1 to cnt-1 do
9. for i4 := i3+1 to cnt-1 do
10. if is_bar(points[i1], points[i2], points[i3], points[i4])
11. then
12. begin
13. drawbar(points[i1], points[i2], points[i3], points[i4]);
14. inc(acnt);
15. end;
16. ShowMessage(IntToStr(acnt)+' квадратов найдено');
17. end;
В результате своей работы метод выводит на экран число квадратов с вершинами в данных точках, а также рисует их на поле для вывода.
В строке 5 инициализируется значение счетчика квадратов.
В строках 6-9 организуется перебор всех возможных четверок точек.
В строке 10 проверяется, возможно ли построение квадрата с вершинами в текущих координатах.
В случае успешной проверки квадрат рисуется на поле для вывода (строка 13) и увеличивается счетчик квадратов (строка 14).
В строке 16 выводится ответ.
Обработчик нажатия на кнопку «Рассчитать» выглядит следующим образом.
1. procedure TForm1.btn1Click(Sender: TObject);
2. begin
3. field.gen_bars;
4. end;
Рисование квадратов
Процедура рисования квадратов выглядит следующим образом.
1. procedure tfield.drawbar(p1, p2, p3, p4: tmypoint);
2. begin
3. Form1.img1.Canvas.MoveTo(p1.x, Form1.img1.Height - p1.y);
4. Form1.img1.Canvas.LineTo(p2.x, Form1.img1.Height - p2.y);
5. Form1.img1.Canvas.LineTo(p3.x, Form1.img1.Height - p3.y);
6. Form1.img1.Canvas.LineTo(p4.x, Form1.img1.Height - p4.y);
7. Form1.img1.Canvas.LineTo(p1.x, Form1.img1.Height - p1.y);
8. end;
Последовательно рисуются линии от 1 точки к 2, от 2 к 3, от 3 к 4 и от 4 к 1. интерфейс программа инициализация генератор
Следует отметить, что из-за различий системы координат в Canvas и от привычной декартовой системы координат приходится «инвертировать» значения ординат точек.
Список используемой литературы
1. Дал У., Дэйкстра Э., Хоор К. Структурное программирование.
2. Глас Р. Руководство по надежному программированию.
3. Хьюз Дж., Мичтом Дж. Структурный подход к программированию.
4. Боэм Б. и др. Характеристики качества программного обеспечения.
Приложения
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
img1: TImage;
lst1: TListBox;
point_x: TEdit;
lbl1: TLabel;
point_y: TEdit;
lbl2: TLabel;
add: TButton;
btn1: TButton;
n_gen: TEdit;
gen: TButton;
lbl3: TLabel;
procedure addClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure genClick(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
tmypoint = record
x: Integer;
y: Integer;
end;
var
points: array [0..100000] of tmypoint;
cnt: Integer;
// проверка, является ли s числом
function is_digit(s: string):Boolean;
var i: integer;
f: boolean;
begin
f := true;
if s = '' then f := false;
for i := 1 to length(s) do
if (Ord(s[i]) < Ord('0')) or (Ord(s[i]) > Ord('9'))
then
f := false;
Result := f;
end;
// рисует список точек
procedure update_list();
var i: integer;
canvas: tcanvas;
begin
Form1.lst1.Clear;
canvas := Form1.img1.Canvas;
canvas.Brush.Color:=clWhite;
canvas.Rectangle(0, 0, Form1.img1.Width, Form1.img1.Height);
canvas.Brush.Color:=clBlack;
for i := 0 to cnt-1 do
begin
Form1.lst1.Items.add(IntToStr(points[i].x)+ ', '+IntToStr(points[i].y));
canvas.Ellipse(points[i].x-2, Form1.img1.Height - points[i].y-2, points[i].x+2, Form1.img1.Height - points[i].y+2);
end;
end;
// добавляет точки в список
procedure add_point_int(x, y: integer);
begin
if (x > form1.img1.Width) or (y > Form1.img1.Height) or (x < 0) or (y < 0)
then
begin
ShowMessage('Неподходящие координаты');
Exit;
end;
points[cnt].x := x;
points[cnt].y := y;
Inc(cnt);
end;
// добавляет точки в список
procedure add_point_str(_x, _y: string);
var
x, y: Integer;
begin
if not is_digit(_x) or not is_digit(_y)
then
begin
ShowMessage('Неподходящие координаты');
Exit;
end;
x := StrToInt(_x);
y := StrToInt(_y);
add_point_int(x, y);
end;
procedure TForm1.addClick(Sender: TObject);
var
x, y: Integer;
begin
add_point_str(point_x.Text, point_y.text);
update_list;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
cnt := 0;
update_list;
end;
procedure TForm1.genClick(Sender: TObject);
var
i: Integer;
begin
Randomize;
if not is_digit(n_gen.Text)
then
begin
ShowMessage('Неподходящие координаты');
Exit;
end;
for i := 1 to StrToInt(n_gen.Text) do
add_point_int(Random(img1.Width), Random(img1.Height));
update_list;
end;
function distance(p1, p2: tmypoint): Double;
begin
Result := (Sqrt(Sqr(p2.x - p1.x) + Sqr(p2.y - p1.y)));
end;
function is_bar(p1, p2, p3, p4: tmypoint): Boolean;
var d1, d2, d3, d4: double;
begin
d1 := distance(p1, p2);
d2 := distance(p2, p3);
d3 := distance(p3, p4);
d4 := distance(p4, p1);
Result := (d1 = d2) and (d2 = d3) and (d3 = d4) and (d4 = d1) and (d1 <> 0);
end;
procedure drawbar(p1, p2, p3, p4: tmypoint);
begin
Form1.img1.Canvas.MoveTo(p1.x, Form1.img1.Height - p1.y);
Form1.img1.Canvas.LineTo(p2.x, Form1.img1.Height - p2.y);
Form1.img1.Canvas.LineTo(p3.x, Form1.img1.Height - p3.y);
Form1.img1.Canvas.LineTo(p4.x, Form1.img1.Height - p4.y);
Form1.img1.Canvas.LineTo(p1.x, Form1.img1.Height - p1.y);
end;
procedure gen_bars();
var
i1, i2, i3, i4, acnt: Integer;
begin
acnt := 0;
for i1 := 0 to cnt-1 do
for i2 := i1+1 to cnt-1 do
for i3 := i2+1 to cnt-1 do
for i4 := i3+1 to cnt-1 do
if is_bar(points[i1], points[i2], points[i3], points[i4])
then
begin
drawbar(points[i1], points[i2], points[i3], points[i4]);
inc(acnt);
end;
ShowMessage(IntToStr(acnt)+' квадратов найдено');
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
gen_bars();
end;
end.
Размещено на Allbest.ru
...Подобные документы
Рассмотрение теории и технологии работы со средой программирования Delphi. Описание Описание интерфейса программы, структуры данных, генерации точек. Разработка задания по выявлению всех квадратов, которые могут быть образованы точками на плоскости.
реферат [21,0 K], добавлен 13.01.2015Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.
контрольная работа [3,6 M], добавлен 18.10.2012Разработка программных продуктов на языке программирования Borland Delphi. Применяемые таблицы и связи между ними. Пользовательский интерфейс работы с базой данных. Алгоритм работы программы "Футбольные команды и игроки". Защита от ввода неверных данных.
курсовая работа [788,1 K], добавлен 22.06.2011Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.
курсовая работа [738,1 K], добавлен 17.05.2010Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.
курсовая работа [521,0 K], добавлен 06.03.2016Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.
отчет по практике [961,6 K], добавлен 21.04.2012Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.
курсовая работа [1,3 M], добавлен 25.11.2014История программных продуктов "Borland Software Corporation". Языки программирования Turbo-Pascal, Delphi, CaliberRM, Turbo C++ и основные их принципы работы. Развитие их совместимости с Windows. Создание корпоративных систем на основе Веб-технологий.
реферат [20,9 K], добавлен 02.04.2010Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.
курсовая работа [1,6 M], добавлен 29.05.2013Анализ исходных данных. Определение структуры модуля для работы файлом. Разработка объектно-ориентированного приложения, использующего массив объектов, в среде Delphi. Модульная структура программного комплекса. Процедура сортировки методом вставки.
курсовая работа [2,2 M], добавлен 20.09.2014Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.
курсовая работа [261,1 K], добавлен 25.03.2015История развития, характеристика, предназначение и особенности языка программирования Delphi. Разработка проекта создания кроссворда на объектно-ориентированном языке Delphi, который состоит из 19 вопросов по горизонтали и 16 вопросов по вертикали.
курсовая работа [970,5 K], добавлен 15.05.2014Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.
курсовая работа [40,8 K], добавлен 15.07.2009Методы грамматического разбора. Разработка структуры учебного транслятора на базовом языке программирования Object Pascal в среде объектно-ориентированного визуального программирования Borland DELPHI 6.0 с использованием операционной системы Windows XP.
курсовая работа [493,8 K], добавлен 12.05.2013Разработка программы генератора звука в среде Borland Delphi с использованием стандартных классов TMemoryStream (для хранения звука в виде бинарных данных) и TStrings (для хранения характеристик конкретной частоты). Запись звука в файл (форматы).
курсовая работа [160,5 K], добавлен 22.11.2014Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.
курсовая работа [880,1 K], добавлен 21.04.2015Стадии обработки документов в туристическом агентстве, проектирование базы данных. Реализация программного продукта с помощью объектно-ориентированного языка программирования Borland Delphi 7.0. и системы управления базами данных Microsoft Access 2003.
дипломная работа [6,5 M], добавлен 22.01.2012Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016Эффективные средства разработки программного обеспечения. Технология визуального проектирования и событийного программирования. Конструирование диалоговых окон и функций обработки событий. Словесный алгоритм и процедуры программы Borland Delphi 7 Studio.
дипломная работа [660,2 K], добавлен 21.05.2012