Разработка программы на языке программирования 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. Блок-схема основной подпрограммы.


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


Рис 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; // находим количество строк

// количество строк m + 1 фиксированный столбец_mn. RowCount: =m+1;

// количество столбцов 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;

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

function TForm1. correct (m1d: t1dArray; len: Integer; sr: Real;m1d1: t1dArray): Integer;: Integer; // индекс массива

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

begin: = 0;i: = 0 to len - 1 do

begin

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

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

// одномерный массивnot ( ( (m1d [i] / sr) > 1.5)) thennot ( (m1d [i] / sr) < 0.5) then begin

SetLength (m1d1, len1 + 1); // увеличиваем длину массива m1d1 на 1d1 [len1]: = m1d [i]; // сохраним элемент массива m1d в массиве m1d1: = len1 + 1; // увеличим на 1 количество элементов массива m1d1;;: = len1; // возвращаем количество элементов массива m1d1;

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

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

// len - длина массива m1dTForm1. vyvodmas (m1d: t1dArray; len: Integer);: Integer; // индекс массива

// зададим количество столбцов_y. ColCount: =len;

// подпишем столбцыi: = 0 to len - 1 do strgrd_y. Cells [i,0]: =IntToStr (i+1);

// заполним таблицу значениями одномерного массиваi: = 0 to len - 1 do strgrd_y. Cells [i,1]: =FloatToStr (m1d [i]);;TForm1. btnRaschetClick (Sender: TObject);

begin

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

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

begin

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

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

// находим среднее арифметическое значене элементов массива X: = srednee (X, xlen);

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

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

// находим среднее арифметическое значене элементов массива Y: = srednee (Y, ylen);

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

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

edt_xlen. Text: =IntToStr (xlen);

// Среднее арифметическое значение элементов массива_xsr. Text: =FloatToStr (xsr);

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

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

// Размер откорректированного массива_ylen. Text: =IntToStr (ylen);

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

edt_ysr. Text: =FloatToStr (ysr);

// Элементы откорректированного массива(Y, ylen);

end;;TForm1. FormCreate (Sender: TObject);_n (3);;.

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

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

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

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

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

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

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

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

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

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


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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ