Лекция №11. Организация библиотек. Стандартные библиотечные модули и модули пользователя. Структура Unit icon

Лекция №11. Организация библиотек. Стандартные библиотечные модули и модули пользователя. Структура Unit


Смотрите также:
Экзамен курсовая работа экзамен Список литературы Основная...
Методическая работа по аспектам Business English и Banking Transactions...
Модули программ повышения квалификации...
Описание программы 10 Глава Наиболее часто используемые модули это должен знать каждый...
Лабораторная работа N2 по курсу «Вычислительные сети и телекоммуникации»...
Рабочая программа по дисциплине «Микропроцессорные средства» Составитель: ассистент кафедры иус...
Программа и уроки модули по теме «законы ньютона»...
Технология разноуровнего обучения. Модульное обучение на уроках истории Шельпова Н. Н....
Программа дисциплины методы оптимальных решений для направления 080100...
Норвегия) производит готовые радиочастотные модули для работы на любом частотном канале 315/...
Структура рабочей программы: Титульный лист. Пояснительная записка...
Структура рабочей программы: Титульный лист. Пояснительная записка...



Загрузка...
скачать
Лекция №11. Организация библиотек. Стандартные библиотечные модули и модули пользователя. Структура Unit.


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

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

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

Модуль можно разделить на несколько разделов:

  • Заголовок;

  • Интерфейсная часть;

  • Реализационная часть;

  • Инициализационная часть.

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

Заголовок модуля

UNIT Имя модуля

{$N+} Глобальные директивы компилятора

^ Интерфейсная часть

INTERFACE Начало раздела объявлений

USES Используемые при объявлении модули

Подразделы объявления доступных глобальных соответственно

LABEL меток

CONST констант

TYPE типов и

VAR переменных

Заголовки доступных соответственно

PROCEDURE процедур и

FUNCTION функций

^ Реализационная часть

IMPLEMENTATION Начало раздела реализации

USES Используемые при реализации модули

Подразделы объявления скрытых глобальных соответственно

LABEL меток

CONST констант

TYPE типов

VAR переменных

Тела доступных и скрытых соответственно

PROCEDURE процедур и

FUNCTION функций

^ Инициализационная часть

BEGIN

Основной блок модуля

END.

Заголовок модуля аналогичен заголовку программы: в модуле вместо зарезервированного слова PROGRAM используется слово UNIT.

Здесь могут присутствовать директивы компилятору, дающие общие установки и соглашения для всего модуля.

Например,

{$S+} - директива компилятору: включить (отключить) контроль возможного переполнения стека;

{$N+} - директива компилятору: использовать числовой процессор (реализовать операции с плавающей точкой программно), применяют для переменных типа real;

{$E+} - директива компилятору: включить (отключить) режим программной эмуляции сопроцессора, применяют для переменных типа extended – вещественное число повышенной точности (10 байт).

При написании модуля необходимо придерживаться следующих основных правил:

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

  • Имя модуля должно совпадать с именем файла, в котором он будет храниться. Отсюда, имя модуля не может состоять более чем из 8 символов.

^ В интерфейсной части описываются все константы, типы данных и переменных, процедуры и функции, доступные в этом модуле для использования внешними программами. Интерфейсная часть модуля несёт всю информацию, необходимую для использования процедур и функций, определённых в модуле. Любая другая информация о модуле для обычного его использования не нужна.

Примечание. В рамках приложение Турбо Паскаль 7.0 поставляются стандартные модули System, Strings, Crt, Printer, Dos, WinDos, Graph, Overlay, Graph3 и Turbo3.

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

Следом за оператором USES описываются доступные извне и необходимые для описания процедур и функций определения типов данных, констант и переменных.

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

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

^ Реализационная часть – это часть, в которой определяются процедуры и функции.

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

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

^ Инициализационная часть представляет собой основной блок модуля. Приведённые в ней операторы выполняются первыми, то есть они выполняются перед операторами основного блока главной программы, в которую включён данный модуль.

Чтобы окончательно оформить эту программу как модуль, необходимо сохранить объектный модуль данной программы на диске. Для опции Compile / Destination установить значение Disk и выполнить компиляцию с помощью комбинации клавиш [Ctrl + F9].

ТП 7.0 распознаёт в начале текста модуля оператор модуля UNIT и автоматически создаст файл с расширением *.TPU вместо *.EXE (как для обычных программ). Выдаваемое при этом сообщение “Can not run a unit!” просто информирует Вас о том, что модуль самостоятельно не выполняется.

В опции Options / Directories установить значение параметра Include Directory равным пути, где расположен, подключаемый к основной программе, файл с расширением *.TPU (Turbo Pascal Unit), то есть модуль.

Задача 9.1. Вычислить значение функции F(x) по формуле

.

Нахождение корня n-ой степени осуществить через подпрограмму - функцию, а расчёт значения по формуле – через подпрограмму - процедуру. Подпрограммы поместить в модуль.

^ Листинг модуля Second

Unit second; {Имя модуля}

{second.pas}

interface {Начало раздела объявлений}

Function FunSqrt (x1 : real; k : integer) : real; {Вычисление корня числа}

Procedure ProcY (var y1 : real; x1 : real); {Расчёт значения по формуле}

Implementation {Начало раздела реализации}

Uses Crt;

Function FunSqrt; {Тело функции}

begin

FunSqrt := exp((1/k) * ln(x1));

end;

Procedure ProcY; {Тело процедуры}

Const b = 10.7;

c = 0.4;

var a : real;

begin

a := exp(0.1*x1) + x1;

y1 := ln(FunSqrt(a,2)) / (x1 + FunSqrt(b,3) + arctan(x1)) + c;

end;

end.

Листинг основной программы

program Task;

Uses crt,

second;{Подключение модуля, в котором хранятся функция вычисления корня и процедура вычисления значения по формуле}

Var x, y : real; {Глобальные переменные}

s : char;

begin

ClrScr;

Repeat

TextColor(12); {Розовый цвет текста}

Writeln('Введите значение переменной Х:');

Readln (x);

ProcY (y,x); {Вычисляется значение по формуле}

TextColor(9); {Синий цвет текста}

Writeln('Значение переменной Y равно :', '':2, y:10:6);

TextColor(14); {Жёлтый цвет текста}

Writeln('Продолжить (Y/N) ?');

Readln (s);

Until (s = 'N') or (s = 'n');

end.

Примечание. Так как заголовки функции Funsort и процедуры Procy в модуле были описаны в интерфейсной части, то это позволит пользователю использовать эти подпрограммы в любой другой внешней программе, подключив соответствующий модуль. Учитывая условия задачи, где требовалось во внешней программе вычислить только значение переменной y по указанной формуле, подставляя каждый раз различные значения x, то есть использовать только процедуру, необходимо изменить листинг модуля. Для этого достаточно описание заголовка функции Funsort, вычисляющей корень n-ой степени, из интерфейсной части переместить в раздел реализации.

Вопросы для самопроверки

  1. Дайте определение модуля?

  2. Какова структура модуля?

  3. В чём заключается назначение заголовка модуля?

  4. В чём заключается специфика интерфейсной части модуля?

  5. В чём назначение реализационной части модуля?

  6. Каково назначение инициализационной части модуля?

  7. Как осуществляется компиляция, сохранение модуля на диске и подключение модуля во внешних программах?




Скачать 58,25 Kb.
оставить комментарий
Дата23.01.2012
Размер58,25 Kb.
ТипЛекция, Образовательные материалы
Добавить документ в свой блог или на сайт

Ваша оценка этого документа будет первой.
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

наверх