Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Модули.

Читайте также:
  1. Внешние подпрограммы и модули. Создание и использование модулей.

 

4.12.4. Объявление указателей.

 

Как объявить указатели простых типов было показано выше. Для сложных типов указатели можно объявлять по разному. Обычно используют известный способ - в разделе типов объявляют идентификатор типа, который используют в разделе переменных.

Пример. Type Sm = Array[1..100] Of Integer;

Var Myk: ^ Sm;

(можно и так Var PT: Array [1..20] Of ^Real;).

 

4.12.5. Операции с указателями.

 

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

К самим указателям можно применять:

n операцию присваивания. В этом случае указатель получает значение адреса. Правило: указатели связанные операцией присваивания должны быть одного типа.

n операции сравнения = и <>.

Замечание - обращение к элементам массива Ms[k,n]^, то есть символ ^ записывается после квадратных скобок.

Создание массива указателей For j: = 1 To N Do

New(Mp[j]);.

Параметром процедуры New() может быть только типизированный указатель. Для работы с нетипизированными указателями предназначены процедуры:

- GetMem(Z, Size) – для резервирования памяти;

- FreeMem(Z, Size) - для освобождения памяти.

Здесь Z – нетипизированный указатель; Size – размер (в байтах) резервируемой или освобождаемой динамической памяти.

Лекция № 19

Модули.

 

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

Расположение модуля и ссылка на него.

Модуль транслируется отдельно от программы и размещается в отдельном сегменте памяти. Для того чтобы можно было использовать в программе тот или иной модуль, необходимо указать его имя в разделе модулей, который располагается сразу после заголовка программы и обозначается ключевым словом Uses.

Например, запись вида

Program Pm1;

Uses Mtx, Mfa;

означает, что в программе Pm1 используется два модуля: Mtx и Mfa.

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

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

Unit < имя >; - заголовок модуля

interface

........... интерфейсная часть

implementation

............ исполняемая часть

initialization

...... инициирующая часть (необязательна)

finalization

.......... завершающая часть

END.

Здесь Unit (единица) – зарезервированное слово; < имя > - имя модуля (формируется пр общим правилам); interface (интерфейс), implementation (выполнение), initialization (инициализация), finalization (завершение) – зарезервированные слова, открывающие соответствующие разделы модуля. Как видно из структуры модуль состоит из заголовка и четырех разделов любой из которых может быть пустым.

 

4.13.1. Составные части модуля.

Заголовок модуля состоит из ключевого слова UNIT и имени модуля. Имя формируется по общим правилам. Для правильной работы среды ТР имя модуля должно совпадать с именем дискового файла в котором располагается исходный текст модуля. Например, если заголовок модуля имеет вид

Unit Global;

то текст модуля должен быть помещен в файл

Global. pas.

Модуль может использовать другие модули. Как и в случае главной программы, используемые модули объявляются с помощью ключевого слова Uses. Объявление используемых модулей может располагаться после зарезервированных слов interface и implementation.

Пример.

Unit MyMod;

interface

Uses ModA, ModB;

...........

implementation

Uses ModC, ModD;

.............

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

Эта секция предназначена для связи модуля с программой, которая использует этот модуль. В ней можно указывать:

n модули, используемые данным модулем;

n константы, типы данных, переменные;

n заголовки процедур и функций.

Все эти описания делаются по правилам языка ТР. Все, что указано в интерфейсной секции является видимым для программы, поэтому данные указанные в этой секции являются глобальными.

При описании процедур и функций в интерфейсной секции записываются только заголовки процедур и функций.

 

4.13.3. Секция реализации (implementation).

В этой секции размещаются тексты процедур и функций, объявленных в интерфейсной секции, а также здесь можно объявлять локальные для модуля объекты – вспомогательные типы, константы, переменные и подпрограммы

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

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

Завершающая секция предназначена для указания операторов, которые выполняются после завершения работы основной программы (освобождение ресурсов, закрытие файлов). Если эти две секции пустые, то зарезервированные слова initialization и finalization не указываются.

Пример. Запишем модуль в котором:

n определяется константа МУ = 900;

n реализуется процедура (имя PV) перестановки двух переменных Р1 и Р2;

n реализуется функция (имя Мах) определения максимального значения из двух переменных Р3 и Р4.

n

Unit Prs;

Interface

Const My = 900;

Procedure Pv(Var P1, P2: Integer);

Function Max (P3, P4: Extended): Extended;

Implementation

Procedure Pv(Var P1, P2: Integer);

Var S: Integer;

Begin

S:= P1; P1: = P2; P2: = S

End; {конец процедуры PV}

Function Max (P3, P4: Extended): Extended;

Begin

If P3 >P4 Then Max: = P3

Else Max: = P4

End; {конец функции Max}

END.

В процедуре Pv используется внутренняя переменная для запоминания значения переменной P1.

Пример программы использующей модуль PRS. Пусть в программе РХ надо поменять местами переменные К и М целого типа и вычислить переменную У как сумму переменной Z и максимального значения из переменных А и В. Фрагмент такой программы можно записать так

 

Program MOD;

Uses PRS;

.......

Var Y, A, B, Z: Real;

K, M: Integer;

.......

Begin

......

PV (K, M);

Y: = Z + MAX (A, B);

.....

Вопрос? Что будет если в модуле и программе определяются переменные с одинаковыми именами?

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

имя модуля. имя переменной

Пример.

Program USMOD;

Uses PRS;

Const My = 200;

Var Tk, Mz: Integer;

Begin

.......

Tk: = My + 25; {Tk = 225}

Mz: = Prs. My + 25; { Mz = 115 }

 




Дата добавления: 2014-12-18; просмотров: 44 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Указатели и динамическая память| Формы записи чисел в ячейки памяти.

lektsii.net - Лекции.Нет - 2014-2025 год. (0.65 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав