Создание подгружаемых модулей для Delphi-программ и их использование
История создания языка программирования Delphi, его компоненты для создания форм. Возможности интегрированной среды разработки. Виды (системные и визуальные) и структура подгружаемых модулей. Разработка модуля и создание программы с его использованием.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.04.2014 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Брянский государственный университет имени академика И.Г. Петровского»
Физико-математический факультет
Кафедра информатики и прикладной математики
Курсовая работа
Создание подгружаемых модулей для Delphi-программ и их использование
Выполнил:
студент 2 курса 3 группы
Черномазов Н.М.
Брянск - 2013
Содержание
- Введение
- Глава 1. Возможности среды Delphi
- 1.1 Определение
- 1.2 Целевая платформа
- 1.3 История языка
- 1.4 Компоненты языка Delphi
- 1.5 Подгружаемые модули
- 1.5.1 Виды модулей
- 1.5.2 Структура модуля
- Глава 2. Разработка приложения
- 2.1 Постановка задач
- 2.2 Проектирование форм
- 2.3 Разработка модуля
- 2.4 Использование написанного модуля
- Заключение
- Список используемой литературы
- Приложение
- Введение
- Курсовая работа посвящена разработке подгружаемого модуля и его использованию. Создание модуля - Delphi позволяет программисту поместить свои функции и процедуры, константы, переменные в отдельный модуль, а затем использовать процедуры, функции, типы, константы, переменные модуля в своих программах, указав имя модуля в списке модулей, необходимых программе (инструкция uses).
- Цель работы: Создать подгружаемый модуль для Delphi-программ и его использовать.
- Задачи работы:
- 1. Изучить базовые компоненты Delphi для создания формы;
- 2. Изучить структуру подгружаемого модуля;
- 3. Написать модуль;
- 4. Написать программу с использованием написанного модуля;
Глава 1. Возможности среды Delphi
1.1 Определение
Delphi (Демлфи, произносится) -- язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi 7.0 , в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
1.2 Целевая платформа
Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован вариант для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft .NET.
Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.
Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC.
1.3 История языка
Object Pascal -- результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal -- динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией -- данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.
Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу -- там и буду лежать». Соответственно организуется и «многокучность».
Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.
Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании 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 Objects) версии 3.0.
В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, 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.
В июне 2007 года CodeGear представила свои планы на будущее, то есть опубликовала так называемый roadmap.
25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. Версия привнесла множество нововведений в язык, как то:
· По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).
· Обобщённые типы, они же generics.
· Анонимные методы.
· Новая директива компилятора $POINTERMATH [ON|OFF].
· Функция Exit теперь может принимать параметры в соответствии с типом функции.
Вышедшая в 2011 году версия Delphi XE2 добавила компилятор Win64 и кросс-компиляцию для операционных систем фирмы Apple.
1.4 Компоненты языка Delphi
Библиотека визуальных компонентов (Visual Component Library -- VCL) Delphi содержит множество предопределенных типов компонентов, из которых пользователь может строить свою прикладную программу. Палитра компонентов расположенна справа в полосе инструментальных панелей интегрированной среды разработки Delphi.
Компонент Delphi Label
Компонент Delphi Label предназначен для показа текста на форме программы, которые не будут меняться в течении работы программы. Текст надписи компонента Label можно изменить, но делается это только программно. Текст, отображаемые в компоненте, определяются значением свойства Caption. Он прописывается в процессе проектирования или задается программно во время выполнения программы.
Например: Label1.Caption:= 'текст'
Таблица 1
Название свойства |
Описание |
|
Color |
Определяет фон компонента |
|
Font |
Определяет свойство текста |
|
Visible |
yes(показать), false(скрыть) компонент |
|
Caption |
Надпись отображаемого текста |
|
Transparent |
При значение True, фон вывода текста прозрачный |
Компонент Delphi Edit
Компонент Delphi Edit предназначен для ввода пользовательских данных и представляет собой однострочное поле. Перенос строк в этом компоненте по сравнению с Label невозможен. Текст, не поместившийся по длине в компонент, просто сдвигается влево и пользователь может курсором перемещаться по этому тексту.
Таблица 2
Название свойства |
Описание |
|
Font |
Свойство позволяющее устанавливать шрифт текста, размер и его цвет |
|
Text |
Содержит отображаемую компонентом строку |
|
BorderStyle |
Вид рамки, поля ввода |
Компонент Delphi Button
Компонент Delphi Button это стандартная кнопка Delphi, кнопка имеет на поверхности надпись (описывающая её назначение при нажатии). Основное событие для кнопки является OnClick, выполняемое при нажатии, при этом кнопка меняет внешний вид, подтверждая этим происходящее действие визуально. Сразу после отпускания кнопки, выполняется действия в обработчике OnClick. Кнопку можно нажать не только щелчком мыши, но и комбинацией клавиш, что бы задать комбинацию необходимо перед символом используемый в комбинации поставить символ амперсанта «&». После чего пользователь вместо щелчка мыши может использовать сочетание клавиш Alt и клавишей выделенного символа.
Таблица 3
Название свойства |
Описание |
|
Caption |
задает название кнопки |
Компонент Delphi MainMenu
Компонент Delphi MainMenu предназначен для добавления к программе главного меню, элемента, без которого не обходится ни одно из приложений для Windows.
Компонент Delphi StringGrid
Компонент StringGrid предназначен для отображения и хранения текстовой информации в виде таблицы. Расположен он на вкладке Additional палитры компонентов.
Размер таблицы определяется свойствами ColCount и RowCount. Они задают количество столбцов и строк соответственно. При необходимости эти свойства можно менять и программно. Размеры же ячеек в пикселях задают свойства DefaultColWidth и DefaultRowHeight. Если же надо задать размер некоторого столбца или некоторой строки отдельно, то надо воспользоваться свойствами ColWidths или RowHeights соответственно.
Пример: StringGrid1.ColWidths[0]:=40;
Компонент Delphi RadioButton
Компонент Delphi RadioButton - это "радиокнопка", и как следует из названия, служит для "переключения каналов", как и в настоящем радиоприёмнике. Это значит, если выбран один из компонентов Delphi RadioButton, то с остальных компонентов выбор автоматически снимается. Получается, что в данный момент может быть выбран только один из группы компонентов Delphi RadioButton.
Основное же свойство компонента Delphi RadioButton - Checked (т.е. "выбрано") типа Boolean, доступное как для чтения, так и для записи. У выбранного компонента свойство Checked равно True.
1.5 Подгружаемые модули
1.5.1 Виды модулей
В состав среды Delphi входит великолепный набор модулей, возможности которых удовлетворят даже самого привередливого программиста. Все модули можно разбить на две группы: системные модули и модули визуальных компонентов.
К системным модулям относятся System, SysUtils, ShareMem, Math. В них содержатся наиболее часто используемые в программах типы данных, константы, переменные, процедуры и функции. Модуль System - это сердце среды Delphi; содержащиеся в нем подпрограммы обеспечивают работу всех остальных модулей системы. Модуль System подсоединяется автоматически к каждой программе и его не надо указывать в операторе uses.
Модули визуальных компонентов (VCL - Visual Component Library) используются для визуальной разработки полнофункциональных GUI-приложений - приложений с графическим пользовательским интерфейсом (Graphical User Interface). Эти модули в совокупности представляют собой высокоуровневую объектно-ориентированную библиотеку со всевозможными элементами пользовательского интерфейса: кнопками, надписями, меню, панелями и т.д. Кроме того, модули этой библиотеки содержат простые и эффективные средства доступа к базам данных. Данные модули подключаются автоматически при помещении компонентов на форму, поэтому вам об этом заботиться не надо. Их список слишком велик, поэтому мы его не приводим.
Все основные модули среды Delphi, включая модули визуальных компонентов, поставляются вместе с их исходными текстами на языке Delphi. В них можно найти ответы на многие вопросы о внутреннем устройстве среды Delphi, они послужат образцовым примером профессионального подхода в решении широкого круга задач. И, что не менее важно, это поможет научиться красиво и правильно (в рамках устоявшегося стиля) оформлять тексты собственных программ так, чтобы их с легкостью читали и понимали другие программисты.
Исходные тексты стандартных модулей среды Delphi находятся в каталоге Delphi/Source.
1.5.2 Структура модуля
Unit <Имя модуля>;
// Раздел интерфейса
Interface
Uses <Список модулей>;
Const <Список констант>;
Туре <Описание типов>;
Var <Объявление переменных>;
<Заголовки процедур>;
<Заголовки функций>;
// Раздел реализации
Implementation
Uses <Список модулей>;
Const <Список констант>;
Туре <Описание типов>;
Var <Объявление переменных>;
<Описание процедур>;
<Описание функций>;
// Раздел инициализации
Initialization
<Инструкции>
// Раздел деинициализации
Finalization
<Инструкции>
end.
Глава 2. Разработка приложения
2.1 Постановка задач
1. Написать модуль;
2. Написать программу с использованием написанного модуля;
2.2 Проектирование форм
Создайте новый проект Delphi. Измените заголовок формы (свойство Caption) на Матрица. Разместите компоненты как показано на рисунке 1.
Рисунок 1
2.3 Разработка модуля
Чтобы приступить к созданию модуля, нужно сначала закрыть окно формы и окно модуля формы (в ответ на вопрос о необходимости сохранения модуля следует выбрать No, т. е. модуль, соответствующий закрытой форме, сохранять не надо). Затем из меню File нужно выбрать команду New | Unit. В результате открывается окно редактора кода, в котором находится сформированный Delphi шаблон модуля. Его текст приведен в листинге 1.
Листинг 1. Шаблон модуля
1.unit Unitl;
2.interface
3.implementation
4.end.
В разделе интерфейса размещаются описания идентификаторов, которые должны быть доступны всем модулям и программам, использующим этот модуль и содержащим его имя в списке uses. В разделе интерфейса объявляются типы, константы, переменные и подпрограммы. При этом для подпрограмм указываются только их заголовки. Другие используемые модули указываются в списке uses. Раздел интерфейса начинается ключевым словом Interface.
В разделе реализации располагается код подпрограмм, заголовки которых были приведены в разделе интерфейса. Порядок следования подпрограмм может не совпадать с порядком расположения их заголовков, приводимых в разделе интерфейса. Кроме того, допускается оставлять в заголовке только имя подпрограммы, т. к. список параметров и тип результата функции уже были предварительно указаны. В разделе реализации можно также описывать типы, объявлять константы и переменные и описывать подпрограммы, которые используются только в этом модуле и за его пределами не видны. Раздел интерфейса начинается словом Implementation.
Сохраняется модуль обычным образом, т. е. выбором из меню File команды Save, Вместе с тем, для модулей повторно используемых процедур и функций лучше создать отдельную папку, нажав ее, например, Units.
2.4 Использование написанного модуля
Для того чтобы в программе могли применяться функции и процедуры модуля, программист должен добавить этот модуль к проекту и указать имя модуля в списке используемых модулей (обычно имя модуля программиста помещают в конец сформированного Delphi списка используемых модулей).
После добавления имени модуля в список модулей, используемых приложением, сам модуль нужно добавить в проект. Для этого из меню Project надо выбрать команду Add to Project и в открывшемся диалоговом окне -- имя файла модуля. В результате добавления модуля к; проекту в окне редактора появится вкладка с текстом добавленного к проекту модуля.
Увидеть структуру проекта можно в окне Project Manager, которое появляется в результате выбора соответствующей команды из меню View. В качестве примера на рис 2.
Рисунок 2
После добавления модуля к проекту и включения его имени в список используемых модулей (инструкция uses) можно выполнить компиляцию программы.
Рисунок 3 Запущенная программа
Рисунок 4 Программа в работе
Рисунок 5 Дополнительные окна
Заключение
В ходе выполнения курсовой работы были изучены основные возможности интегрированной среды разработки Delphi для написания программы. Также выполнены следующие задачи:
1. Изучение базовых компонентов Delphi для создания форм;
2. Изучение подгружаемые модули;
3. Разработан модуль;
4. Написана программа с разработанным модулем;
язык delphi программа модуль
Список используемой литературы
1. Архангельский А.Я. Программирование в Delphi для Windows. Версии 2006, 2007, Turbo Delphi. - М.: ООО «Бином-Пресс», 2007. - 1248с.
2. Баженова И.Ю. Delphi 7. Самоучитель программиста. - М.: Кудиц-образ, 2003. - 448 с.
3. Бобровский С. И. Delphi 7. Учебный курс. - СПб.: Питер, 2004. - 736 с.
4. Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ-Петербург, 2003. - 288 с.
5. Культин Н.Б. Основы программирования в Delphi 7. - СПб.: - БХВ-Петербург, 2007. - 608 с.
6. Пестриков В.М., Маслобоев А.Н. Delphi на примерах. - СПб.: БХВ-Петербург, 2005. - 496 с.
7. Понамарев В. Базы данных в Delphi 7. Самоучитель. - Спб.: Издательский дом «Питер», 2003. - 224с.
8. Фленов М.Е. Библия Delphi. - 3-е изд., перераб. и доп. - СПб.: БХВ-Петербург, 2011. - 688 с.
Приложение 1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Menus, jpeg, ExtCtrls, mmmod;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
MainMenu1: TMainMenu;
N12321231: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
Image1: TImage;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
N3: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Button10Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A,B,C : Massiv2;
m1x,m1y,m2x,m2y,m3x,m3y: integer;
implementation
uses Unit2, Unit3;
{$R *.dfm}
//------------------------------------------------------------------------------
//Ввод матриц
//------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var i,j: Integer;
begin
m1x:=StrtoInt(Edit1.Text);
m1y:=StrtoInt(Edit2.Text);
m2x:=StrtoInt(Edit3.Text);
m2y:=StrtoInt(Edit4.Text);
if (m1x>10) or (m1y>10) or (m2x>10) or (m2y>10)
or (m1x<=0) or (m1y<=0) or (m2x<=0) or (m2y<=0)
then
ShowMessage
('Размерность матриц не должна быть больше чем 10X10 и не Меньше чем 1X1')
else
begin
SetLength(A,m1x,m1y);
SetLength(B,m2x,m2y);
StringGrid1.RowCount:=m1x;
StringGrid1.ColCount:=m1y;
StringGrid2.RowCount:=m2x;
StringGrid2.ColCount:=m2y;
k(A);
k(B);
StringGrid3.RowCount:=10;
StringGrid3.ColCount:=10;
SetLength(C,10,10);
k2(C);
for i:=0 to m1x-1 do
begin
for j:=0 to m1y-1 do
begin
StringGrid1.Cells[j,i]:=FloatToStr(A[i,j]);
end;
end;
for i:=0 to m2x-1 do
begin
for j:=0 to m2y-1 do
begin
StringGrid2.Cells[j,i]:=floattoStr(B[i,j]);
end;
end;
for i:=0 to 10-1 do
begin
for j:=0 to 10-1 do
begin
StringGrid3.Cells[j,i]:=floattoStr(C[i,j]);
end;
end;
end;
end;
//------------------------------------------------------------------------------
//обработка кнопок
//------------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if m1y=m2x then begin
StringGrid3.RowCount:=m1x;
StringGrid3.ColCount:=m2y;
PRM(A,B,C)
end
else
ShowMessage('Матрицы разной размерности');end;
for i:=0 to m1x-1 do
begin
for j:=0 to m2y-1 do
begin
StringGrid3.Cells[j,i]:=floattoStr(C[i,j]);
end;
end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if form1.RadioButton1.Checked=true then
begin
label3.caption:='Сумма эл-ов= '+floattoStr(SEM(A));
end;
if form1.RadioButton2.Checked=true then
begin
label3.caption:='Сумма эл-ов= '+floattoStr(SEM(B));
end;
if form1.RadioButton3.Checked=true then
begin
label3.caption:='Сумма эл-ов= '+floattoStr(SEM(C));
end;
end; end;
//------------------------------------------------------------------------------
procedure TForm1.Button4Click(Sender: TObject);
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if form1.RadioButton1.Checked=true then
begin
label3.caption:='Кол-во эл. не равных 0= '+floattoStr(ENN(A));
end;
if form1.RadioButton2.Checked=true then
begin
label3.caption:='Кол-во эл. не равных 0= '+floattoStr(ENN(B));
end;
if form1.RadioButton3.Checked=true then
begin
label3.caption:='Кол-во эл. не равных 0= '+floattoStr(ENN(C));
end; end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button5Click(Sender: TObject);
var i,j: integer;
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if form1.RadioButton1.Checked=true then
begin
StringGrid3.RowCount:=m1y;
StringGrid3.ColCount:=m1x;
TR(A,C);
for i:=0 to length(C)-1 do
begin
for j:=0 to length(C[0])-1 do
begin
StringGrid3.Cells[j, i]:=floattoStr(C[i,j]);
end;
end;
end;
if form1.RadioButton2.Checked=true then
begin
StringGrid3.RowCount:=m2y;
StringGrid3.ColCount:=m2x;
TR(B,C);
for i:=0 to length(C)-1 do
begin
for j:=0 to length(C[0])-1 do
begin
StringGrid3.Cells[j, i]:=floattoStr(C[i,j]);
end;
end;
end;
if form1.RadioButton3.Checked=true then
ShowMessage('Нельзя транспонировать матрицу 3 так как она результирующая');end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button6Click(Sender: TObject);
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if form1.RadioButton1.Checked=true then
begin
label3.caption:='Кол-во эл. равных 0= '+floattoStr(EN(A));
end;
if form1.RadioButton2.Checked=true then
begin
label3.caption:='Кол-во эл. равных 0= '+floattoStr(EN(B));
end;
if form1.RadioButton3.Checked=true then
begin
label3.caption:='Кол-во эл. равных 0= '+floattoStr(EN(C));
end; end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button7Click(Sender: TObject);
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if form1.RadioButton1.Checked=true then
begin
label3.caption:='Сумма коэффициентов = '+floattoStr(MAXE(A));
end;
if form1.RadioButton2.Checked=true then
begin
label3.caption:='Сумма коэффициентов = '+floattoStr(MAXE(B));
end;
if form1.RadioButton3.Checked=true then
begin
label3.caption:='Сумма коэффициентов = '+floattoStr(MAXE(C));
end;end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button8Click(Sender: TObject);
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if form1.RadioButton1.Checked=true then
begin
label3.caption:='Сумма коэффициентов = '+floattoStr(MINE(A));
end;
if form1.RadioButton2.Checked=true then
begin
label3.caption:='Сумма коэффициентов = '+floattoStr(MINE(B));
end;
if form1.RadioButton3.Checked=true then
begin
label3.caption:='Сумма коэффициентов = '+floattoStr(MINE(C));
end;end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button9Click(Sender: TObject);
var i,j:integer;
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if (m1x=m2x) and (m1y=m2y) then
begin
StringGrid3.RowCount:=m1y;
StringGrid3.ColCount:=m1x;
SM(A,B,C);
for i:=0 to length(C)-1 do
begin
for j:=0 to length(C[0])-1 do
begin
StringGrid3.Cells[j,i]:=floattoStr(C[i,j]);
end;
end;
end else ShowMessage('Матрицы разной размерности');end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button10Click(Sender: TObject);
var i,j:integer;
begin
if (StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') or
(StringGrid3.Cells[0,0]='') then
ShowMessage('Заполните матрицу') else begin
if form1.RadioButton1.Checked=true then
begin
sort(A);
for i:=0 to length(A)-1 do
for j:=0 to length(A[0])-1 do
StringGrid1.Cells[j, i]:=IntToStr(A[i,j]);
end;
if form1.RadioButton2.Checked=true then
begin
sort(B);
for i:=0 to length(B)-1 do
for j:=0 to length(B[0])-1 do
StringGrid2.Cells[j, i]:=IntToStr(B[i,j]); end ;
if form1.RadioButton3.Checked=true then
begin
sort(C);
for i:=0 to length(C)-1 do
for j:=0 to length(C[0])-1 do
StringGrid3.Cells[j, i]:=IntToStr(C[i,j]);
end;end;
end;
//------------------------------------------------------------------------------
//Оброботка ввода с клавиатуры
//------------------------------------------------------------------------------
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit2.SetFocus;
end;
//------------------------------------------------------------------------------
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit4.SetFocus;
end;
//------------------------------------------------------------------------------
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Button1.SetFocus;
end;
//------------------------------------------------------------------------------
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit3.SetFocus;
end;
//------------------------------------------------------------------------------
//Обработка меню
//------------------------------------------------------------------------------
procedure TForm1.N1Click(Sender: TObject);
begin
Aboutbox.ShowModal;
end;
//------------------------------------------------------------------------------
procedure TForm1.N2Click(Sender: TObject);
begin
form1.Close;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
form3.ShowModal;
end;
end.
Приложение 2
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;
type
TForm3 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
form3.Close;
end;
end.
Приложение 3
unit Unit2;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
type
TAboutBox = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
OKButton: TButton;
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutBox: TAboutBox;
implementation
{$R *.dfm}
end.
Приложение 4
unit mmmod;
interface
type
Massiv1 = array of Integer;
Massiv2 = array of Massiv1;
procedure k(var V:Massiv2); //Создание матриц
procedure k2(var V:Massiv2); //Создание матриц
function ENN(R:Massiv2):integer; //Кол-во эл-ов не равных нулю
function SEM(V:Massiv2):integer; //Сумма коэффициентов
procedure TR(X:Massiv2;var R:Massiv2); //Транспонирование матрицы
function EN(R:Massiv2):integer; //Кол-во эл-ов равных нулю
function MINE(R:Massiv2):integer; //Минимальный эл-нт матрицы
function MAXE(R:Massiv2):integer; // Максимальный эл. матрицы
procedure PRM(M,N:Massiv2;var R:Massiv2); //Произведение матриц
procedure SM(R,D:Massiv2;var Z:Massiv2); //Сумма Матриц
procedure sort(var R:Massiv2); //Сортировка матриц
implementation
//------------------------------------------------------------------------------
//Создание матриц
//------------------------------------------------------------------------------
procedure k(var V:Massiv2);
var i,j: integer;
begin
Randomize;
for i:=0 to length(V)-1 do
begin
for j:=0 to length(V[0])-1 do
begin
V[i,j]:=random(100);
end;
end;
end;
procedure k2(var V:Massiv2);
var i,j: integer;
begin
Randomize;
for i:=0 to length(V)-1 do
begin
for j:=0 to length(V[0])-1 do
begin
V[i,j]:=0;
end;
end;
end;
//------------------------------------------------------------------------------
//Транспонирование матрицы
//------------------------------------------------------------------------------
procedure TR(X:Massiv2;var R:Massiv2);
var i,j: integer;
begin
SetLength(R,length(X[0]),length(X));
for i:=0 to length(X)-1 do
begin
for j:=0 to length(X[0])-1 do
begin
R[j, i]:=X[i,j];
end;
end;
end;
//------------------------------------------------------------------------------
//Сумма коэффициентов
//------------------------------------------------------------------------------
function SEM(V:Massiv2): integer;
var i,j,sum: integer;
begin
sum:=0;
for i:=0 to length(V)-1 do
begin
for j:=0 to length(V[0])-1 do
begin
sum:=sum+V[i,j];
end;
end;
SEM:=sum;
end;
//------------------------------------------------------------------------------
//Кол-во эл-ов не равных нулю
//------------------------------------------------------------------------------
function ENN(R:Massiv2):integer;
var i,j,sum: integer;
begin
sum:=0;
for i:=0 to length(R)-1 do
begin
for j:=0 to length(R[0])-1 do
begin
if (R[i,j]<>0) then begin sum:=sum+1; end;
end;
end;
ENN:=sum;
end;
//------------------------------------------------------------------------------
//Кол-во эл-ов равных нулю
//------------------------------------------------------------------------------
function EN(R:Massiv2):integer;
var i,j,sum:integer;
begin
sum:=0;
for i:=0 to length(R)-1 do
begin
for j:=0 to length(R[0])-1 do
begin
if (R[i,j]=0) then begin sum:=sum+1; end;
end;
end;
EN:=sum;
end;
//------------------------------------------------------------------------------
//Минимальный эл-нт матрицы
//------------------------------------------------------------------------------
function MINE(R:Massiv2):integer;
var i,j,min: integer;
begin
min:=R[0,0];
for i:=0 to length(R)-1 do
begin
for j:=0 to length(R[0])-1 do
begin
if R[i,j]<min then begin min:=R[i,j]; end;
end;
end;
MINE:=min;
end;
//------------------------------------------------------------------------------
//Максимальный эл-нт матрицы
//------------------------------------------------------------------------------
function MAXE(R:Massiv2):integer;
var i,j,max: integer;
begin
max:=R[0,0];
for i:=0 to length(R)-1 do
begin
for j:=0 to length(R[0])-1 do
begin
if R[i,j]>max then begin max:=R[i,j]; end;
end;
end;
MAXE:=max;
end;
//------------------------------------------------------------------------------
//Произведение матриц
//------------------------------------------------------------------------------
procedure PRM(M,N:Massiv2;var R:Massiv2);
var i,j,p: integer;
begin
SetLength(R,length(M),length(N[0]));
for p:=0 to length(M)-1 do
for j:=0 to length(N[0])-1 do
begin
R[p,j]:=0;
for i:=0 to length(M[0])-1 do
R[p,j]:=R[p,j]+M[p,i]*N[i,j];
end;
end;
//------------------------------------------------------------------------------
//Сумма Матриц
//------------------------------------------------------------------------------
procedure SM(R,D:Massiv2;var Z:Massiv2);
var i,j: integer;
begin
SetLength(Z,length(R),length(R[0]));
for i:=0 to length(R)-1 do
for j:=0 to length(R[0])-1 do
begin
Z[i,j]:=R[i,j]+D[i,j];
end;
end;
//------------------------------------------------------------------------------
//Сортировка матриц
//------------------------------------------------------------------------------
procedure sort(var R:Massiv2);
var i,j,k,x,m,n:integer;
begin
m:=length(R);
n:=length(R[0]);
for k:=1 to n*m do //повторяем сколько элементов в матрице
for i:=0 to m-1 do
for j:=0 to n-1 do
begin
if j<>n-1 then //если элемент в строке не последний
begin
if R[i,j+1]<R[i,j] then
begin //обмен элементов
x:=R[i,j+1];
R[i,j+1]:=R[i,j];
R[i,j]:=x;
end;
end
else if (i<>m-1)and(R[i+1,0]<R[i,j]) //если строка не последняя
//меняем первый элемент в следущей строке с последним элементом в текущей строке
then
begin //обмен элементов
x:=R[i+1,0];
R[i+1,0]:=R[i,j];
R[i,j]:=x;
end;
end;
end;
end.
Размещено на Allbest.ru
...Подобные документы
Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.
курсовая работа [1010,9 K], добавлен 08.10.2015Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.
курсовая работа [521,0 K], добавлен 06.03.2016Создание электронного учебника "Визуальные и не визуальные компоненты Delphi". Основные требования к организации интерфейса. Логическая структура и технические средства. Аппаратно–программный комплекс. Применение программы, тестирование и отладка.
курсовая работа [39,5 K], добавлен 03.12.2012Разработка головоломки на основе гравюры Альбрехта Дюрера "Магический квадрат". Главные составные части среды программирования Delphi, особенности ее стандартных компонентов и процесса сохранения программы. Компоненты и алгоритмы создаваемой программы.
курсовая работа [147,1 K], добавлен 05.02.2015Создание компьютерной игры посредством среды программирования Delphi. Инструменты разработки, компоненты и методы для разработки программы. Логическая и физическая структуры, основные функции и элементы управления программы, ее тестирование и отладка.
курсовая работа [27,9 K], добавлен 26.07.2014Общая характеристика Delphi как интегрированной среды разработки программного обеспечения. СУБД Access, ее возможности. Создание базы данных в Access для комиссионного букинистического магазина. Создание запросов и фильтров. Описание работы программы.
курсовая работа [3,1 M], добавлен 25.05.2015Delphi как среда разработки программ, ориентированных на работу в Windows. Назначение и преимущество использования электронных учебников. Описание возможностей среды Delphi 5 для разработки электронного учебника. Варианты применения служб Internet.
дипломная работа [3,6 M], добавлен 13.07.2011История интегрированной среды разработки, версии Delphi. Организация библиотеки компонентов. Страница Additional, ряд часто используемых компонентов общего назначения. Исполняемый файл программы "Архиватор текстовых файлов", интерфейс приложения.
курсовая работа [1019,0 K], добавлен 16.05.2017Этапы создания обучающей программы "Трюки и Эффекты в Delphi" в интегрированной среде Borland Delphi 7 и СУБД MS Access 2010. Главное меню и организация базы данных MS Access. Основные характеристики и состав основных модулей. Описание программы.
курсовая работа [1,1 M], добавлен 10.01.2016Сущность программирования с использованием среды Delphi 7 и ее основные графические возможности. Структура автономно компилируемого программного модуля и его принципы. Основные приемы работы с графическими процедурами, построение дуги, круга и эллипса.
курсовая работа [138,2 K], добавлен 16.12.2011Особенности среды визуального проектирования Borland Delphi 7.0. Этапы разработки программы и составления блок-схемы алгоритмов. Способы вычисления кусочно-заданной функции одной переменной. Рассмотрение компонентов среды Delphi, ее предназначение.
контрольная работа [703,8 K], добавлен 24.09.2012Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.
отчет по практике [961,6 K], добавлен 21.04.2012Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.
контрольная работа [1,3 M], добавлен 19.06.2012Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.
презентация [184,3 K], добавлен 18.03.2014Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
курсовая работа [974,0 K], добавлен 21.12.2016Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.
курсовая работа [880,1 K], добавлен 21.04.2015Внедрение информационных технологий в систему образования. Понятие, отличительные признаки, виды, структура и предназначение электронного учебника. Принципы его создания и основные этапы разработки в интегрированной среде программирования Delphi.
дипломная работа [2,3 M], добавлен 03.07.2015Жизненный цикл программного продукта. Современные среды разработки приложений. Защита информации в базах данных. Особенности разработки приложения с помощью среды Delphi 7. Проверка программного модуля на предмет соответствия стандартам кодирования.
отчет по практике [589,0 K], добавлен 18.05.2017Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014