Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Множества. Одним из слабых мест механизма подпрограмм в стандартном Паскале является их встроенность в тело программы и невозможность по этой причине раздельной




Модули

Одним из слабых мест механизма подпрограмм в стандартном Паскале является их встроенность в тело программы и невозможность по этой причине раздельной компиляции и отладки. В известной мере этот недостаток устраняется дополнительными возможностями в Турбо-Паскале по заданию подпрограммы через внешнее описание External, когда подпрограмма разработана вне среды Турбо-Паскаль на другом языке (обычно, на языке ассемблера) и ее необходимо подключить к программе на Паскале. Новые возможности по раздельной разработке больших программ и развитию принципов структурного программирования открылись с введением в язык Турбо-Паскаль понятия модуля.
Модуль представляет собой совокупность различных компонентов раздела описаний (констант, типов, переменных, подпрограмм), предназначенную для использования другими модулями и программами. Сам по себе модуль не является выполняемой программой. Однако, он хранится и компилируется отдельно.
Модуль имеет свой заголовок и два основных раздела: интерфейс и реализация (исполняемая часть). Кроме того, модуль может содержать раздел инициализации, предназначенный для установки начальных значений переменных модуля перед его использованием, который не является обязательным. Общая структура модуля может быть представлена следующим образом:

unit < имя модуля > interface {интерфейс} < описание видимых объектов > implementation {реализация} < описание скрытых объектов > [ begin < операторы инициализации объектов модуля > ] end.

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

unit Typedat; interface {описание глобальных типов} type MasI = array [1..100] of integer; MasR = array [1..100] of real; MatrI = array [1..10, 1..10] of integer; MatrR = array [1..10, 1..10] of real; DayNom = 1..31; YearNom = 1900..2000; implementation end.

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

unit Arifm; {модуль запоминается в файле с именем Arifm.pas} interface procedure Summa (A, B: real; var Z: real); procedure Rasnost(A, B: real; var Z: real); procedure Proizv (A, B: real; var Z: real); implementation procedure Summa(A, B: real; var Z: real); begin Z:= A + B; writeln('Сумма = ', Z); end; procedure Rasnost(A, B: real; var Z: real); begin Z:= A - B; writeln('Разность =', Z); end; procedure Proizv(A, B: real; var Z: real); begin Z:= A * B; writeln('Произведение = ', Z); end; end.

В данном модуле раздел инициализации отсутствует.
Каким же образом можно использовать модули? Прежде всего отметим, что модуль компилируется точно так же, как и подпрограммы. Поскольку модуль не является выполняемой программой, то в результате его компиляции образуется файл с расширением .tpu. Имя файла совпадает с именем модуля.
Определения, присутствующие в модуле, могут быть использованы либо в основной программе, либо в другом модуле. Для этого предназначено специальное предложение:

Uses < список используемых модулей >;

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

- SYSTEM - содержит все процедуры и функции стандартного Паскаля, а также дополнительные подпрограммы общего назначения; модуль SYSTEM подключается к любой программе на Турбо-Паскале.

Все остальные модули становятся доступными после указания соответствующих имен в предложении Uses;

- DOS - содержит средства доступа к операционной системеMS DOS;
- CRT - обеспечивает все возможности доступа к экрану дисплея в текстовом режиме; кроме того, включены средства чтения информации с клавиатуры и управления звуком;
- PRINTER - упрощает вывод текстов на матричный принтер через переменную Lst, связанную с логическим устройством Prn;
- OVERLAY - строит оверлейные программы, обеспечивая эффективную организацию больших программ с перекрытиями;
- GRAPH - управляет графическим режимом работы дисплея;
- TURBO3, GRAPH3 - обеспечивают совместимость системы Турбо-Паскаль с версией 3.0.




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 272; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.