Помощь в написании студенческих работ
Антистрессовый сервис

Разработка программы на языке программирования Delphi

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Как Delphi, так и C# допускает использование индексируемых свойств: в этом случае синтаксис доступа к такому свойству аналогичен доступу к элементу массива. Однако, если в Delphi число индексируемых свойств, равно как и число индексаторов, может быть произвольным, в C# индексатор применим лишь к специальному свойству по умолчанию. Кроме того, в Delphi свойство по умолчанию не только может быть… Читать ещё >

Разработка программы на языке программирования Delphi (реферат, курсовая, диплом, контрольная)

  • Введение
  • 1.Математическая постановка задачи
  • 2. Решение примера заданным методом
  • 3. Листинг программы
  • 4. Описание программы
  • Заключение
  • Литература

Delphi — императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы.net) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован вариант для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft.net, которая, в свою очередь, была прекращена с выходом Delphi 2007.

На сегодняшний день, наряду с поддержкой разработки 32 и 64-разрядных программ для Windows, реализована возможность создавать приложения для Apple Mac OS X (начиная с Embarcadero Delphi XE2), IOS (включая симулятор, начиная с XE4 посредством собственного компилятора), а также, в Delphi XE5, приложения для Google Android (непосредственно исполняемые на ARM процессоре).

Независимая, сторонняя реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC.

язык программирование delphi программа В Delphi формальное начало любой программы четко отличается от других участков кода, и расположено в определенном, единственном в рамках проекта, исходном файле с расширением dpr (тогда как другие файлы исходных текстов программы расположены в файлах с расширением pas).

Program Project32;

{$APPTYPE CONSOLE}

{$R *. res}

uses

System. SysUtils;

Begin

Try

{TODO — user — console Main: Insert code here}

Except

on E: Exception do

Writeln (E. ClassName, ': ', E. Message);

end;

end.

В Delphi, в исходных файла pas (которые, как правило, и содержат основное тело программы), на уровне языковых средств введено строгое разделение на интерфейсный раздел, и раздел реализации. В интерфейсной части содержатся лишь объявления типов и методов, тогда как код реализации в интерфейсной части не допускается на уровне компиляции. Подобное разделение свойственно также языкам C/C++, где условно, в рамках культуры и парадигмы программирования вводится разделение на заголовочные и собственно, файлы реализации, но подобное разделение не обеспечивается на уровне этого языка или компилятора.

В Delphi метод или функция четко определяются зарезервированными для этого ключевыми словами procedure или function, тогда как C-подобных языках обозначается лишь скобками:

/Delphi

Procedure Do Something (aParam: integer); // не возвращает значения

Function Calculate (aParam1, aParam2: integer): integer; // возвращает целочисленный результат

// C#

void DoSomething (int aParam); // не возвращает значения

{

// code

}

int Calculate (int aParam1, aParam2); // возвращает целочисленный результат

{

// code

}

В Delphi начало, и конец программного блока выделяются ключевыми словами begin и end, тогда как в C-подобных языках программирования для этих целей используются фигурные скобки: {}. Таким образом, в Delphi достигается лучшая читаемость кода, особенно для лиц с ослабленным зрением.

Метод доступа в C# всегда относится к одному, и только к одному свойству, тогда как для Delphi это утверждение, вообще говоря, неверно. Более того, один и тот же метод может быть использован для реализации доступа к существенно различным свойствам.

Как Delphi, так и C# допускает использование индексируемых свойств: в этом случае синтаксис доступа к такому свойству аналогичен доступу к элементу массива. Однако, если в Delphi число индексируемых свойств, равно как и число индексаторов, может быть произвольным, в C# индексатор применим лишь к специальному свойству по умолчанию. Кроме того, в Delphi свойство по умолчанию не только может быть индексируемым, также оно может быть перегружено по типу индексатора.

TMyObject=class

Protected

Function getStr (name: string): string; virtual;

Function getStrByIx (ix: integer): string; virtual;

Function getBy2Indicies (X, Y: integer): string; virtual;

Public

Property Value [name: string]: string read getStr; default;

Property Value [ix: integer]: string read getStrByIx; default;

Property Value [x, y: integer]: string read getBy2Indicies; default; // количество

end;

Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.

Delphi оказал огромное влияние на создание концепции языка C# для платформы.net. [источник не указан 749 дней] Многие его элементы и концептуальные решения вошли в состав. С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.

Версия 8 способна генерировать байт-код исключительно для платформы.net. Это первая среда, ориентированная на разработку мульти язычных приложений (лишь для платформы.net);

Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы.net.

Delphi for.net — среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для.net.

Первая версия полноценной среды разработки Delphi для.net — Delphi 8. Она позволяла писать приложения только для.net. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Object) версии 3.0.

В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки Builder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.

Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland.

В августе 2006 года Borland выпустил облегченную версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и.net), Turbo C#, Turbo C++.

В марте 2008 года было объявлено о прекращении развития этой линейки продуктов.

В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

1. Математическая постановка задачи

Условие:

Результаты эксперимента хранятся в двумерном массиве m x n (n>=3, m=2*n). Найти пересечение двух множеств и сформировать одномерный массив (заштрихованная часть).

Найти среднее арифметическое значение элементов одномерного массива.

В одномерном массиве подсчитать, сколько элементов отличаются от ср. арифм. значения на 50%. Вспомогательные массивы не создавать.

Входные данные:

1. Количество столбцов двумерного массива n;

2. Результаты эксперимента, которые хранятся в двумерном массиве

Выходные данные:

1. Размер полученного одномерного массива

2. Среднее арифметическое значение элементов одномерного массива

3. Количество элементов массива, которые отличаются от ср. арифм. значения на 50%.

Требования к программе:

Программа написана на языке Delphi (консольный режим)

Оформить в подпрограммы:

1. Ввод данных эксперимента.

2. Формирование одномерного массива

3. Подсчет количества элементов массива, которые отличаются от ср. арифм. значения на 50%.

2. Решение примера заданным методом

Находим ср. арифм. и, сравнивая, сколько элементов массива, отличаются от ср. арифм. На 50%.

Блок-схема

Рис 1. Блок-схема основной подпрограммы.

Рис 2. Блок-схема подпрограммы формирования двумерного массива и ввода данных эксперимента vvodmas.

Рис 3. Блок-схема подпрограммы нахождения пересечения двух множеств и формирования одномерного массива peresech.

Рис 4. Блок-схема подпрограммы расчета среднего арифметического значения элементов одномерного массива srednee.

Рис 5. Блок-схема подпрограммы формирования откорректированного одномерного массива correct.

Рис 6. Блок-схема подпрограммы вывода одномерного массива vyvodmas.

3. Листинг программы

unit kurs_gui;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type // раздел описания типов данных

// описание типа — динамический одномерный массив

t1dArray = array of Real;

// описание типа — динамический двумерный массив

t2dArray = array of array of Real;

TForm1 = class (TForm)

lbl_n: TLabel;

edt_n: TEdit;

btn_n: TButton;

// ввод значений массива

strgrd_mn: TStringGrid;

// кнопка запуска основной подпрограммы

btnRaschet: TButton;

lblx_len: TLabel;

// вывод размера полученного одномерного массива

edt_xlen: TEdit;

// вывод среднего арифметическое значение элементов массива X

edt_xsr: TEdit;

lbl_xsr: TLabel;

lbl_del: TLabel;

// вывод количества удаленных элементов массива X

edt_del: TEdit;

lbl_ylen: TLabel;

// вывод размер откорректированного массива Y

edt_ylen: TEdit;

lbl_ysr: TLabel;

// вывод cреднее арифметическое значение элементов откорректированного массива Y

edt_ysr: TEdit;

lbl_y: TLabel;

// вывод значений массива

strgrd_y: TStringGrid;

procedure btn_nClick (Sender: TObject);

procedure btnRaschetClick (Sender: TObject);

procedure FormCreate (Sender: TObject);

private

{ Private declarations }

// массив с результатами эксперимента

A: t2dArray;

// одномерный массив полученный в результате пересечения двух множеств

X: t1dArray;

// откорректированный одномерный массив

Y: t1dArray;

xlen: Integer; // размер массива X

ylen: Integer; // размер массива Y

xsr: Real; // среднее арифметическое значение элементов массива X

ysr: Real; // среднее арифметическое значение элементов откорректированного массива Y

m: Integer; // количество строк массива A

n: Integer; // количество столбцов массива A

// инициализация strgrd_mn

// col — введенное количество столбцов

procedure vvod_n (col: Integer);

// подпрограмма формирования двумерного массива и ввода данных эксперимента

// row — количество строк массива m2d

// col — количество столбцов массива m2d

// возвращает введенный массив m2d [0. row-1] [0. col-1]

// true — если массив успешно сформирован

function vvodmas (Var m2d: t2dArray; row: Integer; col: Integer): Boolean;

// функция нахождения пересечения двух множеств и формирования одномерного массива

// m2d — двумерный массив с результатами эксперимента [0. row-1] [0. col-1]

// row — количество строк массива m2d

// col — количество столбцов массива m2d

// возвращает полученный одномерный массив m1d и его длину

function peresech (m2d: t2dArray; row: Integer; col: Integer;

var m1d: t1dArray): Integer;

// функция расчета среднего арифметического значения элементов одномерного массива

// m1d — одномерный массив [0. len-1]

// len — длина массива m1d

// возвращает среднее арифметическое значение элементов массива m1d

function srednee (m1d: t1dArray; len: Integer): Real;

// функция формирования откорректированного одномерного массива

// m1d — одномерный массив [0. len-1]

// len — длина массива m1d

// sr — среднее арифметическое значение элементов массива m1d;

// возвращает откорректированный одномерный массив m1d1 и его длину

function correct (m1d: t1dArray; len: Integer; sr: Real;

var m1d1: t1dArray): Integer;

// процедура вывода одномерного массива

// m1d — одномерный массив [0. len-1]

// len — длина массива m1d

procedure vyvodmas (m1d: t1dArray; len: Integer);

public

{ Public declarations }

end;

var // раздел объявления переменных

Form1: TForm1;

implementation

{$R *. dfm}

// инициализация strgrd_mn

// col — введенное количество столбцов

procedure TForm1. vvod_n (col: Integer);

var

i, j: Integer; // индексы

begin

if (col<3) then

begin

// выводим сообщение

ShowMessage ('Значение n должно быть не менее 3');

// завершаем подпрограмму

Exit;

end;

n: =col; // количество столбцов

m: = 2 * n; // находим количество строк

// количество строк m + 1 фиксированный столбец

strgrd_mn. RowCount: =m+1;

// количество столбцов n + 1 фиксированная строка

strgrd_mn. ColCount: =n+1;

// подпишем строки и столбцы

strgrd_mn. Cells [0,0]: ='mn';

// строки

for i: =1 to m do strgrd_mn. Cells [0, i]: =IntToStr (i);

// столбцы

for j: =1 to n do strgrd_mn. Cells [j, 0]: =IntToStr (j);

// очистим ячейки

// строки

for i: =1 to m do

begin

// столбцы

for j: =1 to n do

begin

// очистим ячейку

strgrd_mn. Cells [j, i]: ='';

end;

end;

end;

// подпрограмма формирования двумерного массива и ввода данных эксперимента

// row — количество строк массива m2d

// col — количество столбцов массива m2d

// возвращает введенный массив m2d [0. row-1] [0. col-1]

// true — если массив успешно сформирован

function TForm1. vvodmas (Var m2d: t2dArray; row: Integer; col: Integer): Boolean;

var

i, j: Integer; // индексы массива

r: Real;

begin

result: =False;

SetLength (m2d, row); // задаем количествл строк массива

// задаем количество столбцов для каждой строки

for i: = 0 to row — 1 do

SetLength (m2d [i], col);

for i: = 0 to row — 1 do

begin

for j: = 0 to col — 1 do

begin

try

// преобразуем строку в вещественное значение

r: =StrToFloat (strgrd_mn. Cells [j+1, i+1]);

except

// если значение строки нельзя преобразовать в вещественное значение

on E: Exception do

begin

ShowMessage ('Ошибка в ячейке m='+IntToStr (i+1) +', n='+IntToStr (j+1) +#$ 0d+#$ 0a+E. Message);

// завершаем работу подпрограммы

Exit;

end;

end;

// присваиваем элементу массива значение

m2d [i, j]: =r;

end;

end;

result: =True;

end;

procedure TForm1. btn_nClick (Sender: TObject);

begin

vvod_n (StrToInt (edt_n. Text));

end;

// функция нахождения пересечения двух множеств и формирования одномерного массива

// m2d — двумерный массив с результатами эксперимента [0. row-1] [0. col-1]

// row — количество строк массива m2d

// col — количество столбцов массива m2d

// возвращает полученный одномерный массив m1d и его длину

function TForm1. peresech (m2d: t2dArray; row: Integer; col: Integer;

var m1d: t1dArray): Integer;

var

i, j, k, p: Integer; // индексы массива

len: Integer; // количество элементов массива m1d

next: Boolean; // переход к следующему элементу

begin

len: = 0;

// первая половина строк матрицы — первое множество

for i: = 0 to (row div 2) — 1 do

begin

for j: = 0 to col — 1 do

begin

next: = False;

// вторая половина строк матрицы — второе множество

for k: = (row div 2) to row — 1 do

begin

for p: = 0 to col — 1 do

begin

// каждый элемент первого множества проверяем на равенство

// с каждым из элементов второго множества

if m2d [i, j] = m2d [k, p] then

begin

SetLength (m1d, len + 1); // увеличиваем длину массива m1d на 1

m1d [len]: = m2d [i, j]; // сохраним элемент массива m2d в массиве m1d

len: = len + 1; // увеличим на 1 количество элементов массива m1d

next: = True; // переходим к следующему элементу

Break; // выходим из цикла for p: =0 to col-1 do

end;

end;

if next then

Break; // выходим из цикла for k: = (row div 2) to row-1 do

end;

end;

end;

result: = len; // возвращаем длину полученного одномерного массива

end;

// функция расчета среднего арифметического значения элементов одномерного массива

// m1d — одномерный массив [0. len-1]

// len — длина массива m1d

// возвращает среднее арифметическое значение элементов массива m1d

function TForm1. srednee (m1d: t1dArray; len: Integer): Real;

var

sum: Real; // сумма элементов массива

i: Integer; // индекс массива

begin

sum: = 0;

// находим сумму элементов массива

for i: = 0 to len — 1 do

sum: = sum + m1d [i];

// находим и возвращаем среднее арифметическое значене элементов массива m1d

result: = sum / len;

end;

// функция формирования откорректированного одномерного массива

// m1d — одномерный массив [0. len-1]

// len — длина массива m1d

// sr — среднее арифметическое значение элементов массива m1d;

// возвращает откорректированный одномерный массив m1d1 и его длину

function TForm1. correct (m1d: t1dArray; len: Integer; sr: Real;

var m1d1: t1dArray): Integer;

var

i: Integer; // индекс массива

len1: Integer; // количество элементов откорректированного массива

begin

len1: = 0;

for i: = 0 to len — 1 do

begin

// если элемент отличается от среднего арифметического значения

// более чем на 50%, то не включаем его в откорректированный

// одномерный массив

if not (((m1d [i] / sr) > 1.5)) then

if not ((m1d [i] / sr) < 0.5) then begin

SetLength (m1d1, len1 + 1); // увеличиваем длину массива m1d1 на 1

m1d1 [len1]: = m1d [i]; // сохраним элемент массива m1d в массиве m1d1

len1: = len1 + 1; // увеличим на 1 количество элементов массива m1d1

end;

end;

result: = len1; // возвращаем количество элементов массива m1d1

end;

// процедура вывода одномерного массива

// m1d — одномерный массив [0. len-1]

// len — длина массива m1d

procedure TForm1. vyvodmas (m1d: t1dArray; len: Integer);

var

i: Integer; // индекс массива

begin

// зададим количество столбцов

strgrd_y. ColCount: =len;

// подпишем столбцы

for i: = 0 to len — 1 do strgrd_y. Cells [i, 0]: =IntToStr (i+1);

// заполним таблицу значениями одномерного массива

for i: = 0 to len — 1 do strgrd_y. Cells [i, 1]: =FloatToStr (m1d [i]);

end;

procedure TForm1. btnRaschetClick (Sender: TObject);

begin

// формируем двумерный массив c данными эксперимента

if (vvodmas (A, m, n)) then

begin

// нахождения пересечения двух множеств и формирования одномерного массива

xlen: = peresech (A, m, n, X);

// находим среднее арифметическое значене элементов массива X

xsr: = srednee (X, xlen);

// формируем откорректированный одномерный массив

ylen: = correct (X, xlen, xsr, Y);

// находим среднее арифметическое значене элементов массива Y

ysr: = srednee (Y, ylen);

// вывод результатов

// Размер полученного одномерного массива

edt_xlen. Text: =IntToStr (xlen);

// Среднее арифметическое значение элементов массива

edt_xsr. Text: =FloatToStr (xsr);

// Количество удаленных элементов массива

edt_del. Text: =IntToStr (xlen-ylen);

// Размер откорректированного массива

edt_ylen. Text: =IntToStr (ylen);

// Среднее арифметическое значение элементов откорректированного массива

edt_ysr. Text: =FloatToStr (ysr);

// Элементы откорректированного массива

vyvodmas (Y, ylen);

end;

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

vvod_n (3);

end;

end.

4. Описание программы

Запускаем программу. В открывшемся окне (Рисунок 1.1) вводим нужный размер массива, с которым будем работать. Нажимаем «Изменить». Записываем нужные нам цифры (Рисунок 1.2). Нажимаем «Рассчитать». В edt_xlen заносится размер полученного одномерного массива. После чего мы находим среднее арифметическое значение элементов массива и записываем это число в edt_xsr. Следующим действием мы узнаю количество удаленных элементов массива, и полученный результат заносим в edt_del. Из выполнимых действий мы формируем новый откорректированный массив и заносим полученные числа в стрингрид, и находим среднее арифметическое значение элементов этого массива.

Рисунок 1.1

Рисунок 1.2

Рисунок 1.3

Заключение

Целью данной курсовой работы является написание работоспособной программы по заданным условиям. Ознакомился и чётко усвоил основы алгоритмизации и особенности написания объектно-ориентированных программ по сравнению с консольными приложениями.

Полученные знания станут существенным подспорьем в дальнейшей работе.

1. Архангельский, А. Я. Программирование в Delphi: учебник по классическим версиям Delphi / А. Я. Архангельский. — Москва: Бином, 2008. — 1154 с.

2. Бобровский, С.И. Delphi 7: учебный курс / С. И. Бобровский. — Санкт-Петербург: Питер, 2008. — 736 с.

3. Графические средства Delphi: методические указания для самостоятельной работы студентов механических специальностей дневной и заочной форм обучения по дисциплинам: «Информатика», «Вычислительная техника, программирование и расчеты на ЭВМ» / УО «ВГТУ»; сост.В. П. Терентьев, Т. П. Стасеня. — Витебск, 2007. — 61 с.

4. Климов, Ю. С. Программирование в среде Turbo Pascal 6.0: справ. пособие / Ю. С. Климов, А. И. Касаткин, С. М. Мороз. — Минск: Вышэйшая школа, 1992. — 158 с.

5. Методические указания к курсовому проектированию для студентов механических специальностей по предметам цикла «Информатика» / УО «ВГТУ»; сост.В. П. Терентьев, А. С. Дягилев, Т. П. Стасеня. — Витебск: УО «ВГТУ», 2004. — 81 с.

6. Программирование на персональных ЭВМ: практикум / под ред. Д. В. Офицерова. — Минск: Вышэйшая школа, 1993. — 256 с.

7. Сурков, Д. А. Программирование в среде Borland Pascal для Windows: справочное пособие / Д. А. Сурков, К. А. Сурков, А. Н. Вальвачев. — Минск: Вышэйшая школа, 1996. — 432 с.

8. Фаронов, В.В. Delphi: учебник / В. В. Фаронов. — Санкт-Петербург: Питер, 2010. — 640 с.

9. Фаронов, В.В. Delphi. Программирование на языке высокого уровня: учебник для студентов вузов, обучающихся по направлению подготовки дипломированных специалистов «Информатика и вычислительная техника» / В. В. Фаронов. — Санкт-Петербург: Питер, 2010, 2007. — 640 с.

10. Фаронов, В. В. Основы Турбо Паскаля: учеб. пособие / В. В. Фаронов. — Москва: Учебно-инженерный центр «МВТУ-ФЕСТО ДИДАКТИК», 1992. — 304 с.

11. Язык программирования Object Pascal (Delphi): курс лекций по дисциплине «Вычислительная техника, программирование и расчеты на ЭВМ» для студентов механических спец. / УО «ВГТУ»; сост.В. П. Терентьев. — Витебск: УО «ВГТУ», 2005. — 75 с.

Показать весь текст
Заполнить форму текущей работой