- •1. Этапы подготовки задач для решения на пэвм
- •Программное обеспечение эвм
- •2.1.Алгоритмические языки.
- •5. Файлы и каталоги на дисках
- •5.1. Файловая система fat.
- •5.2. Файловая система ntfs
- •6. Интегрированая среда турбо паскаля 7.0
- •6.1. Информационные окна.
- •7. Разработка программ в интегрированной среде
- •8. Система меню ис тurbo рascal
- •8.1. Меню работы с файлами (file).
- •8.2. Меню редактирования (edit).
- •8.3. Меню поиска информации (search).
- •8.4. Меню выполнения программы (run).
- •8.5. Меню компиляции (compile).
- •8.6. Меню отладки (debug).
- •8.7. Меню инструментальных средств (tools).
- •8.8. Меню параметров среды (options).
- •9. Структура программы
- •10. Алфавит языка
- •11. Типы данных
- •Целые типы.
- •11.2.Логический тип boolean.
- •11.3. Символьный тип char.
- •11.4. Перечисляемый тип.
- •Вещественные типы.
- •12. Переменные
- •13. Константы
- •14. Стандартные функции
- •14.1. Арифметические функции.
- •14.2. Функции преобразование типа.
- •14.3. Функции для величин порядкового типа.
- •15. Арифметические операции
- •Логические операции
- •Операции отношения
- •18. Операторы языка
- •18.1. Оператор присваивания.
- •18.2. Оператор безусловного перехода goto.
- •18.3. Пустой оператор.
- •18.4. Составной оператор.
- •18.5. Условный оператор if.
- •18.6. Оператор варианта case.
- •Операторы цикла
- •19.1. Оператор цикла с постусловием repeat.
- •19.2.Оператор цикла с предусловием while.
- •19.3. Оператор цикла с параметром for.
- •19.4. Использование стандартных процедур Break и Continue в операторах циклов.
- •Сложные типы языка паскаль
- •20.1. Массивы.
- •20.2. Символьные массивы.
- •20.3. Строка типа string.
- •20.4. Записи.
- •20.5. Множества.
- •20.6. Файлы.
- •20.6.1. Доступ к файлам.
- •20.6.2. Логические устройства.
- •20.6.3. Процедура открытия файлов.
- •20.6.4. Процедуры и функции для работы с файлами.
- •20.6.5. Типизированные файлы.
- •20.6.6. Процедуры и функции для работы с файлами.
- •20.6.7. Нетипизированные файлы.
- •20.6.8. Текстовые файлы.
- •21. Процедуры и функции
- •21.1. Процедуры.
- •21.2. Функции.
- •21.3. Параметры формальные и фактические.
- •21.4. Параметры-значения.
- •21.5. Параметры-переменные.
- •21.6. Параметры-константы.
- •21.7. Параметры-процедуры и параметры-функции.
- •21.8. Параметры без типа.
- •Модули пользователя
- •22.1. Структура модуля пользователя
- •22.1.1. Заголовок модуля
- •22.1.2. Интерфейс модуля
- •22.1.3. Исполнительная часть модуля
- •22.1.4. Cекция инициализации
- •22.2. Использование модулей
- •23. Оверлей
22.2. Использование модулей
Program Complex;
uses Cmp;
var
c1,c2,c3:Complex;
begin
InitC(1,2,c1);
InitC(3,4,c2);
MultC(c1,c2,c3);
DiveC(c1,c2,c3);
WriteC(c3);
write(c3);
end.
Модуль компилируется как обычный файл.Поскольку он не является непосредственно выполняемой единицей, то в результате его компиляции образуется дисковый файл с расширением .tpu(Turbo Pascal unit). При этом имя файла берется из имени файла с исходным текстом модуля.
Для того чтобы получить доступ к интерфейсным объектам модуля, необходимо указать в программе имя нужного tpu-файла.
Конструкция имеет следующий общий вид:
Uses v1, v2, v3; (v1, v2, v3-имена используемых модулей)
Если некоторый модуль использует объекты другого модуля, то такие спецификаторы должны следовать сразу же после слова interface
23. Оверлей
При решении реальных задач в среде Турбо Паскаль возможен случай нехватки основной памяти. Для преодоления этой трудности имеется механизм, который называется оверлейным. Его применение позволяет разрабатывать Паскаль-программы, размер которых больше размера основной памяти. Основным принципом оверлейного механизма является представление программы в виде отдельных блоков, которые по переменно могут занимать одну и ту же область основной памяти. При этом необходимый блок загружается в основную память, вытесняя оттуда ранее выполнявшийся блок.
Оверлейный механизм достаточно широко распространен и применяется не только в Турбо Паскале. Оверлейная программа выполняется медленней, чем аналогичная неоверлейная, поскольку требуется время на загрузку и выгрузку отдельных блоков.
Средства построения оверлейных программ в Турбо Паскале базируется на следующих основных принципах:
-
Оверлейная программа должна быть реализована следующим образом:
во-первых, должна быть управляющая (резидентная) часть, которая постоянно находится в основной памяти, во вторых может быть несколько блоков, которые попеременно загружаются в специальный оверлейный буфер основной памяти. Размер оверлейного буфера, который выделяется по умолчанию может быть увеличен во время выполнения программы.
-
Оверлейные блоки должны быть оформлены в виде модулей, снабженных специальной директивой {$0+}.
-
Все средства управления оверлеями сосредоточены в стандартном модуле OVERLAY. Поэтому никаких специальных языковых конструкций оверлейный механизм не предусматривает.
-
При трансляции оверлейной программы компилятор Турбо Паскаля работает следующим образом: управляющая часть программы (неоверлейная) оформляется в виде еxe-файла, все оверлейные блоки, оформляются в виде одного файла с расширением OVR. Таким образом при компиляции все файлы собираются в один файл с расширением OVR.
-
Все обращения к оверлейным процедурам и функциям должны осуществляться по средствам дальнего типа вызова. Для этого подпрограммы или оверлейный модуль вцелом снабжаются специальной директивой F с которой они должны компилироваться {$F+}. Турбо Паскаль при отсутствии специальной директивы автоматически выбирает адресацию к подпрограмме. Если подпрограмма находится в одном файле с основной программой, то она компилируется с ближним адресом входа и возврата (near). Этот адрес состоит только из смещения в текущем сегменте.
Если подпрограмма находится в модуле (unit), то она компилируется с дальним адресом (far), который состоит из адреса сегмента и смещения. Если требуется нестандартная компиляция, то есть размещение подпрограммы, которая находится в одном файле с основной программой то используется директива F+.
-
Основная часть (управляющая ) оверлейной программы должна содержать предложение USES, в котором перечисляются используемые оверлейные модули. В этом же предложении могут быть указаны так же и не оверлейные модули. Но первым в этом предложении обязательно должен быть указан модуль OVERLAY. Вслед за предложением USES должны размещаться директивы компилятора, которые указывают, какие модули в предложении USES являются оверлейными. Каждая такая директива имеет вид
{$0 имя модуля} имя модуля должно совпадать с именем дискового файла, в котором находится оверлейный модуль.
-
В теле управляющей программы перед первым обращением к какой-либо оверлейной подпрограмме должен быть вызов стандартной процедуры OVRInit из модуля OVERLAY. Эта процедура инициализирует систему управления оверлеями. У этой процедуры всего один параметр, который является строкой с именем того файла, в котором собраны коды оверлейных модулей.
Например:
Составить программу с оверлейной структурой, состоящей из управляющей части с именем PrimOVR и двух оверлейных модулей ModOVR1, ModOVR2 каждый из которых содержит по одной процедуре вывода текстовой информации.
{$F+,0+};
Program PrimOVR;
Uses Overlay,printer,ModOVR1, ModOvr2$
{$0 ModOVR1};
{$0 ModOVR2};
BEGIN
OVRInit (‘PrimOVR.OVR’);
Vivod 1;
Vivod 2;
END.
Далее запишем модули Unit каждый из которых содержит по одной процедуре.
{$0+,F+};
Unit ModOVR1;
interface
procedure vivod 1;
inplementation
procedure vivod 1;
BEGIN
Writeln(‘ Модуль 1’);
END;
END;
{$0+,F+};
Unit ModOVR 2;
interface
procedure vivod 2;
inplementation
procedure vivod 2;
BEGIN
Writeln(‘Модуль 2 ’);
END;
END.