Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прога.docx
Скачиваний:
1
Добавлен:
28.10.2018
Размер:
96.22 Кб
Скачать

27. Модули

Для размещения в памяти большой программы может не хватить одного сегмента памяти (его размер - до 64 кбайт). включили в язык механизм так наз модулей, ко­тор размещ в разных сегментах. Модули позволяют соз­д библиотеки проц и функц, кот можн подкл к разн прог.Модуль - это автономно компилир прог еди­ница, включ в себя спец образом оформлен библиотеку описаний (типы, конст, перемен, проц и фун).Модуль мож быть запущен только из прог или из другого модуля. Он компилир независимо от использ их прог. Результ компиляц явл файл с тем же именем и расширением .TPU, кот заносится на диск.Общий объем модульн прог может быть много более 64 кбайта, но каждый .TPU-файл не может превышать этот предел.Структура модуля.Модуль можно разделить на несколько разделов: заголо­вок; интерфейсная часть; исполняемая часть; инициализационная часть.UNIT <имя> {заголовок модуля} interface {интерфейсная часть} uses <список> {используемые при объявлении модули} label {блок объявлений библиотечных меток} const {блок объявлений библиотечных констант}type {блок объявлений библиотечных типов} var {блок объявлений библиотечных переменных}заголовки доступных процедур и функций с указанием парамет-ров> implementation {секция реализации} uses {используемые при реализации модули} label {блок объявлений внутренних меток} const {блок объявлений внутренних констант}type {блок объявлений внутренних типов} var {блок объявлений внутренних переменных}заголовки без параметров и тела процедур и функции>Begin {секция инициализации} <операторы>EndВсе блоки, составляющие разделы интерфейса, реализации и инициализации необязательны и могут отсутствовать.Заголовок модуля состоит из зарезерв слова unit и имени модуля. Это имя должно сов­пад с именем дискового файла, в кот помещается исх текст модуля. В интерфейсной части содержатся объявления всех гло­бальных объектов модуля (типов, констант, переменных и под­программ), кот должны стать доступн любой прог. При объявлен библиотеч подпро­г в интерфейс части указ только их заголовок.В разделе реализац можно исп все объекты, описан в разделе interface. Он, содерж описан подпрог, объявлен в интерфейсн части. Описанию подпрогр, объявлен в интерфейсной части модуля, в исполняем части должен предшествовать заголовок, в кот можно опускать список формальных перемен. В разделе реализации могут объявл локальн для модуля объекты - типы, конст, перемен. Они будут гло­бальн по отношению к подпрогр этого раздела и ини­циирующей части. В проге, подкл модуль, объяв­ленные при реал данн и типы недоступны. Завершает модуль инициирующая часть. Она может отсут­ств вместе с начинающим ее словом Begin. Тогда сразу по­сле раздела реализац следует признак конца модуля End. В инициир часта размешают исполняем операт, котор вып до передачи управлен ос­новн проге и обычно исп для подготовки ее ра­боты. Обычно в ней вып присваивание нач значе­н библиотечн переменным, открытие файлов и т.п

28. Распределение памяти при выполнении программ

Адресное пространство компьютера при запуске програм­мы (ЕХЕ-файла) Турбо Паскаля составляет 1 Мбайт и состоит из сегментов по 64 Кбайт. Первые 256 байт памяти отводятся под префикс структуры программы, который содержит служебную информацию о программе. После префикса начинаются сегменты кода и модулей, которые содержат рабочий код основного блока программы, рабочий код системного модуля, рабочие коды под­ключаемых модулей. После них располагается сегмент данных, где хранятся статические глобальные переменные основного бло­ка и все типизированные константы, включая локальные. За сег­ментом данных следует область стека. В ней располагаются ло­кальные переменные и параметры-значения процедур и функций во время их работы по вызову. Выше стека отводится память под буфер для работы оверлеев - перекрывающихся частей программ. Еще выше располагается динамически распределяемая область памяти, называемая областью кучи или просто кучей (Heap-областью). Объемом распределяемой динамической памяти мож­но управлять с помощью директивы компилятора $М. В динамической области размещаются объекты, память для которых отводится и освобождается непосредственно по ходу выполнения программы. Такие данные, размер которых задается во время выполнения программы, называются динамическими. Для объявления динамических данных в Паскале используется ссылочный тип, называемый еще типом-указателем. Значением переменных ссылочного типа является адрес ячейки памяти. Ад­рес занимает четыре байта и хранится в виде двух слов, одно из которых определяет сегмент, второе - смещение. В Паскале име­ется стандартный тип — указатель и ссылочные типы, определяе­мые программистом.