Язык объектно-ориентированного программирования Borland Delphi

Теория, технология работы со средой программирования Delphi. Сравнительный анализ языков программирования, преимущества, недостатки языка Delphi. Варианты заданий из прикладных областей для учащихся старших классов изучающих Delphi на уроках информатики.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.10.2017
Размер файла 102,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

[Введите текст]

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Рыбинский государственный авиационный технический университет

имени П.А. Соловьева»

Кафедра вычислительных систем

Курсовая работа по дисциплине

«Программирование»

Выполнил Колобов А.Э.

Группа ЗВП-13

Преподаватель Паламарь И.Н.

Рыбинск, 2014

Содержание

  • Формулировка задания

Введение

  • 1. Описание интерфейса
  • 2. Порядок работы с программой
  • 3. Структура данных
  • 4. Генерация точек
  • 5. Ручное добавление точек
  • 6. Поиск квадратов
  • 7. Рисование квадратов

Заключение

  • Список используемой литературы

Приложение

Формулировка задания

Имеется множество точек на плоскости. Выявить все квадраты, которые могут быть образованы этими точками.

  • Введение

Целью курсовой работы является изучение языка объектно-ориентированного программирования 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. Описание интерфейса

Внешний вид программы приведен на рисунке 1.

Размещено на http://www.allbest.ru/

[Введите текст]

  • Окно содержит следующие визуальные компоненты:
  • - поле для вывода результата (Timage);
  • - поле, содержащее список точек (TListBox);
  • - поля для ввода координат точки (TEdit);
  • - кнопка для ручного добавления точки (TButon);
  • - поле для ввода количества точек для случайной генерации точек (TEdit);
  • - кнопки для генерации точек и кнопка для запуска процесса расчета (TButon).
  • 2. Порядок работы с программой

Процесс работы с программой заключается в выполнении следующих шагов:

  • 1. пользователь вводит количество точек (N), которое необходимо сгенерировать и нажимает кнопку «Сгенерировать» или вручную добавляет необходимые точки;
  • 2. пользователь нажимает на кнопку «Рассчитать»;
  • 3. программа находит все возможные квадраты, рисует их на поле для вывода результата и выводит их количество.
  • 3. Структура данных

Для хранения данных о точках введем тип данных tmypoint:

  • 1. type
  • 2. tmypoint = record
  • 3. x: Integer;
  • 4. y: Integer;
  • 5. end;

Тип tmypoint представляет собой запись, которая имеет 2 поля: x и y, для хранения соответствующих координат точек.

Также нам понадобится массив points с элементами типа tmypoint, а также переменная cnt, которая хранит количество точек:

  • 1. var
  • 2. points: array [0..100000] of tmypoint;
  • 3. cnt: Integer;
  • 4. Генерация точек

Ниже приведен обработчик нажатия на кнопку «Сгенерировать».

  • 1. procedure TForm1.genClick(Sender: TObject);
  • 2. var
  • 3. i: Integer;
  • 4. begin
  • 5. Randomize;
  • 6. if not 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. add_point_int(Random(img1.Width), Random(img1.Height));
  • 14. update_list;
  • 15. end;

В строке 5 происходит инициализация генератора случайных чисел процедурой Randomize. Если пользователь ввел некорректное числовое значение, то программа сообщает об ошибке и выходит из процедуры (строки 6-11). В случае если пользователь ввел корректное числовое значение N, программа генерирует 2*N случайных числа, с условием, что они могут быть корректными координатами точек. Сгенерированные координаты добавляются в список процедурой add_point_int (строки 12-13), после чего происходит обновление списка процедурой update_list.

Листинг процедуры add_point_int приведен ниже.

1. procedure add_point_int(x, y: integer);

2. begin

3. points[cnt].x := x;

4. points[cnt].y := y;

5. Inc(cnt);

6. end;

Эта процедура добавляет в список точек точку с координатами (x, y), после чего увеличивает на 1 счетчик точек.

Листинг процедуры update_list приведен ниже.

1. procedure 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 рисуются и добавляются в список точек сами точки.

5. Ручное добавление точек

Обработчик нажатия на кнопку «Добавить» приведен ниже.

1. procedure TForm1.addClick(Sender: TObject);

2. var

3. x, y: Integer;

4. begin

5. add_point_str(point_x.Text, point_y.text);

6. update_list;

7. end;

Здесь происходит вызов процедуры добавления точки в список (add_point_str) и обновление списка точек.

Листинг процедуры add_point_str приведен ниже.

1. procedure 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.

6. Поиск квадратов

Для поиска всех квадратов введем функцию, определяющую, возможность построения квадрата с вершинами в точках p1, p2, p3, p4.

1. function 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 distance(p1, p2: tmypoint): Double;

2. begin

3. Result := (Sqrt(Sqr(p2.x - p1.x) + Sqr(p2.y - p1.y)));

4. end;

Процедура, осуществляющая поиск квадратов, выглядит следующим образом.

1. procedure 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. gen_bars;

4. end;

7. Рисование квадратов

Процедура рисования квадратов выглядит следующим образом.

1. procedure 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 и от привычной декартовой системы координат приходится «инвертировать» значения ординат точек.

Заключение

Система Delphi позволяет решать множество задач, в частности:

*Создавать законченные приложения для Windows самой различной направленности: от чисто вычислительных и логических, до графических и мультимедиа.

*Быстро создавать (даже начинающим программистам) профессионально выглядящий оконный интерфейс для любых приложений.

*Создавать мощные системы работы с локальными и удаленными базами данных

*Создавать справочные системы (файлы . hlp) для своих приложений и мн. др.

Delphi - это комбинация нескольких важнейших технологий:

*Высокопроизводительный компилятор в машинный код

*Объектно-ориентированная модель компонент

*Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов delphi программирование информатика язык

*Масштабируемые средства для построения баз данных.

В процессе выполнения курсового проекта я усвоил некоторые возможности Delphi. Но даже этот небольшой объем материала позволил мне убедиться в колоссальности данной среды.

Целью курсовой работы было изучение языка программирования DELPHI и разработка практических заданий.

При выполнении курсовой работы:

· была изучена теория и технология работы с средой программирования Borland Delphi7;

· была изучена и проанализирована соответствующая литература;

· был проведён сравнительный анализ языков этого класса и показаны преимущества и недостатки языка Delphi;

· были приведены элементы методической работы в виде разработки вариантов заданий (из прикладных областей) для учащихся старших классов школ изучающих Delphi на уроках информатики.

Список используемой литературы

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.2015

  • Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.

    курсовая работа [1,3 M], добавлен 25.11.2014

  • Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.

    курсовая работа [738,1 K], добавлен 17.05.2010

  • Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.

    курсовая работа [40,8 K], добавлен 15.07.2009

  • Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.

    курсовая работа [521,0 K], добавлен 06.03.2016

  • Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.

    курсовая работа [1,2 M], добавлен 04.08.2014

  • Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.

    контрольная работа [3,6 M], добавлен 18.10.2012

  • Средства языка программирования Delphi. Структурные типы данных. Строковые переменные, массивы, множества, файлы. Механизм классов в C++. Интерфейсный и описательный обзоры классов в Delphi. Работа с текстовыми и бинарными файлами прямого доступа.

    курсовая работа [990,4 K], добавлен 07.08.2012

  • Эффективные средства разработки программного обеспечения. Технология визуального проектирования и событийного программирования. Конструирование диалоговых окон и функций обработки событий. Словесный алгоритм и процедуры программы Borland Delphi 7 Studio.

    дипломная работа [660,2 K], добавлен 21.05.2012

  • История развития, характеристика, предназначение и особенности языка программирования Delphi. Разработка проекта создания кроссворда на объектно-ориентированном языке Delphi, который состоит из 19 вопросов по горизонтали и 16 вопросов по вертикали.

    курсовая работа [970,5 K], добавлен 15.05.2014

  • Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.

    курсовая работа [261,1 K], добавлен 25.03.2015

  • Delphi как среда разработки программ, ориентированных на работу в Windows. Назначение и преимущество использования электронных учебников. Описание возможностей среды Delphi 5 для разработки электронного учебника. Варианты применения служб Internet.

    дипломная работа [3,6 M], добавлен 13.07.2011

  • Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.

    курсовая работа [1,6 M], добавлен 29.05.2013

  • Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.

    контрольная работа [1,3 M], добавлен 19.06.2012

  • Анализ исходных данных. Определение структуры модуля для работы файлом. Разработка объектно-ориентированного приложения, использующего массив объектов, в среде Delphi. Модульная структура программного комплекса. Процедура сортировки методом вставки.

    курсовая работа [2,2 M], добавлен 20.09.2014

  • Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.

    дипломная работа [1,8 M], добавлен 14.09.2011

  • Изучение организации диалоговой программы и закрепления основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder). Описание представления информации в программах на языках высокого уровня. Сравнительная характеристика Delphi и C++.

    курсовая работа [3,1 M], добавлен 27.02.2015

  • Основные этапы развития языков программирования. Характеристика машинно-ориентированной, проблемно-ориентированной и процедурно-ориентированной систем программирования. Ознакомление с системами программирования Delphi, Visual Basic и Visual C++.

    курсовая работа [102,4 K], добавлен 21.07.2012

  • Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.

    курсовая работа [880,1 K], добавлен 21.04.2015

  • Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".

    практическая работа [26,0 K], добавлен 04.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.