- •Лекция 1. Основы языков программирования.
- •Лекция 2. Способы записи алгоритмов.
- •Лекция 3. Знакомство с языком Паскаль.
- •Лекция 4. Структура программы на языке Паскаль.
- •Лекция 5. Стандартные типы данных.
- •5.1 Целые типы
- •5.2 Вещественные типы
- •5.3 Символьный тип.
- •5.4 Ограничительные типы.
- •5.5 Перечислимые типы.
- •Л.6. Операторы языка Паскаль Ввод исходных данных.
- •Расчет.
- •Стандартные функции Турбо Паскаля
- •Стандартные процедуры
- •Константы
- •Вывод результатов
- •Лекция 7. Операторы условий if, case
- •7.1 Оператор безусловного перехода
- •7.2 Условный оператор
- •7.3 Оператор варианта
- •Лекция 8. Операторы цикла for, while, repeat
- •8.1 Оператор цикла с предусловием.
- •8.2 Оператор цикла с постусловием.
- •8.3 Оператор цикла с параметром.
- •Лекция 9. Одномерные и двумерные массивы.
- •Работа с массивами
- •Инициализация элементов массива
- •Лекция 10. Процедуры и функции в Паскаль.
- •Лекция 11. Параметры в процедурах.
- •11.1 Механизм параметров.
- •11.2. Параметры - значения.
- •11.3. Параметры - переменные.
- •11.4. Безтиповые параметры.
- •Лекция 12. Типы данных, определяемые пользователем. Записи.
- •Лекция 13. Работа с файлами. Обработка ошибок в Паскаль.
- •13.1 Файловые типы
- •13.2 Операции ввода-вывода Write, Read
- •13.3. Перемещение по файлу.
- •13.4 Обработка ошибок ввода - вывода
- •13.5 Текстовые файлы
- •13.6 Файлы без типа.
- •Лекция 14. Модули и внешние файлы в Паскаль.
- •15.1. Компиляция и использование модулей
- •15.2. Компиляция и поиск модулей.
- •15.3. Стандартные модули
- •Лекция 15. Динамические структуры данных.
- •15.1 Ссылочные типы и указатели.
- •15.2 Статические переменные.
- •15.3. Создание и удаление динамических переменных.
- •15.4. Установка размеров динамической памяти.
- •Лекция.16. Графические возможности языка Паскаль.
- •Лекция17. Практическое применение языка Паскаль в решении технологических и экологических задач
15.1. Компиляция и использование модулей
Модуль компилируется точно таким же образом, как и обычные подпрограммы. Но так как модуль не является непосредственно выполняемой единицей, то в результате его компиляции образуется дисковый файл с расширением .TPU (Turbo Pascal Unit), при этом имя файла берется из имени файла с исходным текстом модуля.
Для доступа к ресурсам модуля используется конструкция, называемая спецификацией модуля:
USES
U1, u2, u3;
Эта спецификация должна следовать непосредственно за заголовком программы; если модуль использует объекты другого модуля, то такая спецификация должна следовать после служебного слова interface. Необходимо особо отметить следующие важные моменты, связанные с использованием модулей:
В случае перекрытия идентификаторов интерфейсной части используемого модуля с идентификаторами программы, следует учитывать следующее правило: интерфейсные идентификаторы модуля, указанного первым в uses = списке, образуют самый внешний блок программы, и все остальные на него накладываются, закрывая одноименные идентификаторы. Однако можно обойти и этот нюанс: в модуле объявлена переменная x;
Program p;
Uses A;
Var x: integer;
Begin
….
End.
Для того, чтобы в программе P иметь доступ к интерфейсной переменной x необходимо задать составное имя
A.x :=Round(x);
Возможны случаи косвенного использования
Например:
unit A; unit B;
interface interface
....... uses A;
end. .......
end.
Если некоторая программа использует модуль В, то в соответствующей спецификации использования необходимо указать только модули, непосредственно используемые в программе.
Например:
program P;
uses
B;
.....
end.
Схема использования модулей может иметь древовидную структуру, но не перекрывающуюся.
Так, например, следующие отношения являются ошибочными:
unit A; unit B;
interface interface
uses B; uses B;
..... .....
end. end.
Если в модуле имеется раздел инициализации, то операторы из этого раздела будут выполнены перед началом выполнения программы, в которой используется данный модуль. Если программа использует несколько модулей, то их разделы инициализации будут выполнены в том же порядке, в котором эти модули перечислены в спецификации использования.
Можно использовать директиву $U для переопределения имени файла. Эта директива имеет параметр, который трактуется как "настоящее" имя файла с данным модулем. Она должна находиться непосредственно перед именем модуля в спецификации использования. Например, конструкция:
uses {$U MY} MyUnit;
приведет к тому, что компилятор будет искать код модуля MyUnit в дисковом файле MY.TPU.
15.2. Компиляция и поиск модулей.
При трансляции программы или модуля, использующего другие модули, компилятор последовательно отыскивает файлы, содержащие коды используемых модулей, с тем чтобы подключить их к компилируемой программе. При этом компилятор работает по следующей схеме:
Компилятор просматривает содержимое системного библиотечного файла модулей TURBO.TPL (TURBO PASCAL LIBRARY).
Если искомый модуль не найден в файле TURBO.TPL, то компилятор осуществляет поиск соответствующего TPU-файла в ТЕКУЩЕМ каталоге.
Если в текущем каталоге нужный файл не найден, то поиск продолжается в каталогах, заданных в альтернативе Options/Directories/Unit Directories для интегрированной среды или в параметре /U вызова TPC-компилятора.
Если на предыдущих шагах файл не найден, то компилятор прекращает работу и выдает диагностическое сообщение об ошибке.
Если компилятор активизирован посредством альтернатив Compile/Make или Compile/Build, то вышеуказанные шаги проводятся в поисках ИСХОДНЫХ ТЕКСТОВ используемых модулей, которые будут оттранслированы перед трансляцией самой программы. При этом подразумевается, что имя файла с текстом модуля совпадает с именем модуля и имеет расширение .PAS.
