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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Содержание

 

Введение

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

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

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

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

Заключение

Литература

Введение

- императивный, структурированный, объектно-ориентированный язык программирования, диалект 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}. SysUtils;

{TODO - user - console Main: Insert code here}E: Exception do(E. ClassName, ': ', E. Message);

end;.

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

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

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

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

{

// code

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

{

// code

}

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

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

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

TMyObject=classgetStr (name: string): string; virtual;getStrByIx (ix: integer): string; virtual;getBy2Indicies (X,Y: integer): string; virtual;Value [name: string]: string read getStr; default;Value [ix: integer]: string read getStrByIx; default;Value [x,y: integer]: string read getBy2Indicies; default; // количество

end;

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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



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

                                                        Блок-схема

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


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

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

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

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

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


unit kurs_gui;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls;// раздел описания типов данных

// описание типа - динамический одномерный массивdArray = array of Real;

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

t2dArray = array of array of Real;

TForm1 = class (TForm)_n: TLabel;_n: TEdit;_n: TButton;

// ввод значений массива_mn: TStringGrid;

// кнопка запуска основной подпрограммы: TButton;_len: TLabel;

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

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

edt_xsr: TEdit;_xsr: TLabel;

lbl_del: TLabel;

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

edt_del: TEdit;_ylen: TLabel;

// вывод размер откорректированного массива Y_ylen: TEdit;_ysr: TLabel;

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

edt_ysr: TEdit;_y: TLabel;

// вывод значений массива_y: TStringGrid;

procedure btn_nClick (Sender: TObject);btnRaschetClick (Sender: TObject);FormCreate (Sender: TObject);

private

{ Private declarations }

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

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

// откорректированный одномерный массив: t1dArray;: Integer; // размер массива X: Integer; // размер массива Y: Real; // среднее арифметическое значение элементов массива X: Real; // среднее арифметическое значение элементов откорректированного массива Y: Integer; // количество строк массива A: Integer; // количество столбцов массива A

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

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

procedure vvod_n (col: Integer);

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

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

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

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

// true - если массив успешно сформирован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 declarations };// раздел объявления переменных: TForm1;

{$R *. dfm}

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

// col - введенное количество столбцовTForm1. vvod_n (col: Integer);,j: Integer; // индексы

if (col<3) then

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

// завершаем подпрограмму;;: =col; // количество столбцов: = 2 * n; // находим количество строк

// количество столбцов n + 1 фиксированная строка_mn. ColCount: =n+1;

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

strgrd_mn. Cells [0,0]: ='m\n';

// строкиi: =1 to m do strgrd_mn. Cells [0, i]: =IntToStr (i);

// столбцыj: =1 to n do strgrd_mn. Cells [j,0]: =IntToStr (j);

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

// строкиi: =1 to m do

// столбцыj: =1 to n do

// очистим ячейку_mn. Cells [j, i]: ='';

end;;;

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

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

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

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

// true - если массив успешно сформированTForm1. vvodmas (Var m2d: t2dArray; row: Integer; col: Integer): Boolean;, j: Integer; // индексы массива: Real;: =False;

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

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

for i: = 0 to row - 1 do(m2d [i], col);i: = 0 to row - 1 doj: = 0 to col - 1 do

try

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

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

except

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

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

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

// присваиваем элементу массива значениеd [i, j]: =r;

end;;: =True;;TForm1. btn_nClick (Sender: TObject);_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;m1d: t1dArray): Integer;, j, k, p: Integer; // индексы массива

len: Integer; // количество элементов массива m1d: Boolean; // переход к следующему элементу: = 0;

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

for i: = 0 to (row div 2) - 1 doj: = 0 to col - 1 do

begin: = False;

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

for k: = (row div 2) to row - 1 dop: = 0 to col - 1 do

begin

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

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

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

begin(m1d, len + 1); // увеличиваем длину массива m1d на 1d [len]: = m2d [i, j]; // сохраним элемент массива m2d в массиве m1d: = len + 1; // увеличим на 1 количество элементов массива m1d: = True; // переходим к следующему элементу

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

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

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

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

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

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

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

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

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

// находим сумму элементов массиваi: = 0 to len - 1 do: = sum + m1d [i];

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

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

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

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

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