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

Вид материалаМетодическое пособие

Содержание


XII.5.Что такое модуль?
XII.6.Структура модуля
XII.6.1.Интерфейсная секция
"Компиляция" (Compile) - клавиши Alt-F9
"Создание" (Make) - клавиша F9
Секция реализации тогда будет иметь вид
XII.6.2.Секция инициализации
Подобный материал:
1   ...   17   18   19   20   21   22   23   24   25

XII.5.Что такое модуль?


Турбо-Паскаль обеспечивает вам доступ к большому числу встроенных констант, типов данных, переменных, процедур и функций. Некоторые из них специфичны для Турбо-Паскаля, дру­гие специфичны для персонального компьютера IBM PC (и сов­местимых с ним компьютеров) или для операционной системы. Их количество велико, однако в своей программе вы редко используете их все сразу. Поэтому они разделены на свя­занные группы, называемые модулями. В этом случае можно ис­пользовать только те модули, которые необходимы в программе.

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

Все описания внутри модуля связаны друг с другом. Нап­ример, модуль Crt содержит все описания, необходимые для подпрограмм работы с экраном на вашей персональном компьюте­ра.

XII.6.Структура модуля


Модуль обеспечивает набор средств благодаря процедурам и функциям при поддержке констант, типов данных и перемен­ных, однако действительная реализация этих средств скрыта в силу того, что модуль разделен на две секции: интерфейса и реализации. Если программа использует модуль, то все описа­ния модуля становятся доступными этой программе, как если бы они были определены в ней самой.

Структура модуля аналогична структуре программы, однако есть несколько существенных различий. Например, рассмотрим модуль:

unit -<идентификатор>;

interface

uses <список модулей>; { Необязательный }

{ открытые описания }

implementation

{ закрытые описания }

{ процедуры и функции }

begin { код инициализации } end.


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

Программный модуль может использовать другие модули, для этого они определяются в предложении uses. Предложение uses, если имеет место, то следует сразу после ключевого слова interface. Отметим, что здесь выполняется общее прави­ло использования предложения uses; если модуль, имя которого показано в предложении uses, использует другие модули, то имена этих модулей также должны быть указаны в предложении uses, причем до того, как они будут использованы.

XII.6.1.Интерфейсная секция


Интерфейсный раздел - "общедоступная" часть в модуле начинается зарезервированным словом interface, следует сразу после заголовка модуля и заканчивается перед зарезервирован­ным словом implementation. Интерфейс определяет, что являет­ся "видимым" для любой программы (или модуля), использующей данный модуль. Любая программа, использующая этот модуль, имеет доступ к этим "видимым" элементам.

В интерфейсе модуля можно определять константы, типы данных, переменные, процедуры и функции. Как и в программе, они могут быть расположены в любом порядке, и секции могут встречаться повторно (например, type ... var ... <процедуры> ... const ... type

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

"Компиляция" (Compile) - клавиши Alt-F9


Этот элемент меню является командой. Выполняется компи­ляция последнего файла, загруженного в редактор. При этом выводится окно с информацией о компиляции; имя основного файла, имя компилируемого файла, количество откомпилирован­ных строк, объем доступной памяти и успешно или нет выполне­на компиляция программы. Если компиляция прошла успешно, нажмите любу» клавишу. При этом данное информационное окно исчезнет. В случае ошибки вы автоматически переходите в ре­дактор на ошибочную строку.

"Создание" (Make) - клавиша F9


При выборе этого элемента меню вызывается последова­тельность Make Турбо-Паскаля. Если основному файлу присвоено имя, то компилируется этот файл. В противном случае компили­руется последний файл, загруженный в редактор. Турбо-Паскаль проверяет все файлы, от которых зависит компилируемый файл. Если в исходный файл некоторого модуля были внесены измене­ния со времени создания файла с расширением .TPU (объектный код), то этот модуль компилируется заново. Если была измене­на интерфейсная секция некоторого модуля, то заново трансли­руются все модули, зависящие от указанного модуля. Если мо­дуль компонуется с объектным Файлом .OBJ (внешние подпрог­раммы) и этот объектный файл является более новым, чем файл с расширением .TPU данного модуля, то этот модуль транслиру­ется заново. Если модуль содержит включаемый Файл (файл типа include) и этот файл является более новым, чем файл с расши­рением .TPU данного модуля, то этот модуль транслируется за­ново.

Если исходный код модуля (файл .TPU) найти не удается, то этот модуль не компилируется, а используется, в неизменном виде.

следующие описания:

procedure Iswap (var VI,V: integer);

function IMax(Vl,V2: integer): integer;

Секция реализации тогда будет иметь вид:

procedure ISwap; var

Temp:= integer; begin

Temp:= VI; VI:= V2; V2:= Temp end; { конец процедуры Swap }

function IMax(V1,V2: integer) : integer; begin

if VI > V2

then IMax:= VI

else IMax:= V2 end; { конец функции Мах }

Подпрограммы, локальные для секции реализации (то есть не описанные в секции реализации), должны иметь полный, не­сокращенный заголовок procedure/function.

XII.6.2.Секция инициализации


Обычно вся секция реализации модуля заключена между за­резервированными словами implementation и end. Однако, если перед end поместить зарезервированное слово begin, а между ними - операторы, то получившийся составной оператор, очень похожий на основное тело программы, становится секцией ини­циализации модуля.

Секция инициализации представляет собой место, где ини­циализируются структуры данных (переменных), которые исполь­зует программный модуль или которые он делает доступными программе, использующей данный модуль. Вы можете использо­вать эту секцию для открытия файлов, которые программа ис­пользует позже. Например, стандартный модуль Printer исполь­зует секцию инициализации для выполнения запросов на откры­тие (для вывода) текстового файла Lst, который затем можно использовать в операторах Write и Writeln в вашей программе.

Если программа использует более одного модуля, то секции инициализации всех модулей вызываются (в порядке, указанном в операторе uses в програм­ме) перед тем, как выполнить основное тело программы.