Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по Информатике 2011.doc
Скачиваний:
6
Добавлен:
04.11.2018
Размер:
557.06 Кб
Скачать
    1. Модульная структура приложения.

3.1.1. Файл проекта приложения.

Файл проекта *.dpr представляет из себя собственно программу, которая в этом файле обязана (или может) быть представлена следующими разделами:

Program <имя приложения>; {обязательный раздел}

Uses имя1, имя2,…, имя n; {Необязательный раздел. Список имен подключаемых библиотечных модулей,

каждый из которых представлен отдельным файлом *.pas, а возможно еще и

файлом формы *.dfm}

Label имя1, имя2,…,имя n; { Необязательный раздел. Описание меток.}

Type …; { Необязательный раздел. Описание пользовательских типов данных}

Const …; { Необязательный раздел. Описание констант.}

Var …; { Необязательный раздел. Описание переменных.}

Procedure имя1; { Необязательный раздел. Описание процедур.}

Function имя2; { Необязательный раздел. Описание функций.}

Begin { Обязательный раздел. }

Операторы { Необязательный раздел. }

End. { Обязательный раздел. }

Типичный минимальный вид основной Windows-программы представлен ниже:

program Project1;

uses Forms, Unit1 in 'UNIT1.PAS' {Form1};

{$R *.RES}

begin

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

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

В этом примере декларируется приложение (программа) с именем Project1 (ей будет соответствовать файл с исходным текстом project1.dpr, а также по окончании компилляции исполняемый файл project1.exe). Это приложение использует данные, процедуры и функции из стандартного модуля Forms, а также из созданного автоматически средствами Delphi пользовательского файла формы Unit1, представленного файлом unit1.pas. Затем подключается файл с ресурсами project1.res. В секции инициализации для данного приложения (обозначенного стандартным словом Application) создается объект - форма Form1 согласно директивам, изложенным в типе TForm1 (это содержится как раз в файле модуля формы form1.pas). После этого приложение запускается на исполнение (метод Run).

3.1.2. Библиотечный модуль пользователя.

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

Каждый модуль представлен как минимум одним файлом, носящим имя модуля, – файлом *.pas, в котором хранится создаваемый программистом исходный код. Если модуль является еще и описателем какой-либо формы (модуль формы), то для него автоматически создается еще и файл *.dfm, в котором записаны значения параметров самой формы и компонентов на ней расположенных (кнопки, окна, списки и др.). После компилляции модуля образуется еще один файл - *.dcu, который содержит необходимый для выполнения программы код и именно такой файл требуется для подключения к основной программе, однако такой файл уже непригоден для чтения и редактирования программистом. Так основные стандартные модули со стандартными процедурами и функциями Delphi представлены именно в виде таких файлов. Например, описания компонентов кнопок хранятся в стандартном файле модуля buttons.dcu, который размещен в папке LIB.

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

Для создания нового модуля (без формы) следует выбрать опцию меню File\New и в открывшемся окне выбрать вариант Unit.

Для сохранения кода модуля в виде файла следует выбрать опцию меню File\Save и в открывшемся окне задать имя файла модуля, которое лучше сделать таким же, как и имя самого модуля.

Для подключения модуля к любой другой программной единице (в том числе и другому модулю) следует в разделе uses указать имя требуемого модуля.

Рассмотрим принцип построения модуля.

Заголовок модуля содержит ключевое слово Unit и имя модуля, совпадающее с именем файла модуля. Каждый модуль может состоять из трех секций: секции Интерфейса (Interface), секции Реализации (Implementation) и необязательной секции Инициализации.

Секция Интерфейса (Interface) предназначена для объявления глобальных данных (типов, констант, переменных), а также процедур и функций, которые будут доступны (видимы) для тех модулей, из которых происходит вызов нашего модуля. Процедуры и функции в этой секции только объявляются (со всеми своими параметрами), но не раскрывается их содержимое (это будет в следующей секции).

Секция Реализации (Implementation) позволяет подключить другие требующиеся для выполнения процедур и функций модули. В этой секции описываются данные (типы, константы и переменные), предназначенные для использования только в рамках данного модуля и недоступные (невидимые) для вызывающих модулей (локальные данные), а также приводится текст процедур и функций, объявленных в секции Интерфейса.

Секция Инициализации не имеет своего ключевого слова и начинается со слова Begin, а завершается словом End. Код, записанный между этими программными скобками, предназначен для исполнения при первом же вызове (из какого-либо модуля). Если необходимости в этом нет, то данная секция может отсутствовать.

Приведем пример структуры библиотечного модуля пользователя:

Unit <имя модуля>;

Interface {Секция Интерфейса}

Procedure Integral1(a,b : real; var c : real);

Procedure Summa(d,e : real; var f : real);

Function Integral2(ff,dd : real) : real;

Implementation {Секция Реализации}

Uses <имена подключаемых модулей>

Procedure Integral1(a,b : real; var c : real);

Begin

Текст процедуры

End;

Procedure Summa(d,e : real; var f : real);

Begin

Текст процедуры

End;

Function Integral2(ff,dd : real) : real;

Begin

Текст функции

End;

Begin {Секция Инициализации}

Текст секции Инициализации

End.