- •Содержание
- •Часть 1. Основные понятия программирования §1.1. Этапы разработки программного обеспечения
- •§1.2. Основные сведения об алгоритмах Понятие алгоритма
- •Свойства алгоритма
- •Формы записи алгоритмов
- •Блок-схемы алгоритмов
- •§1.3. Языки программирования
- •§1.4. Паскаль и Object Pascal, Турбо-Паскаль и Delphi
- •Язык, оболочка и интегрированная среда разработки
- •Контрольные вопросы
- •Часть 2. Общие сведения о языке Паскаль §2.1. Алфавит и служебные слова
- •Описание общих конструкций языка
- •§2.2. Структура программы
- •§2.3. Разделы описаний Описание меток
- •Определение констант
- •Определение типов
- •Описание переменных
- •Контрольные вопросы
- •Часть 3. Простые типы данных Иерархия типов
- •§3.1. Целые типы
- •§3.2. Вещественные типы
- •§3.3. Логический тип
- •§3.4. Литерный тип
- •§3.5. Перечисляемый тип
- •§3.6. Диапазоны (интервальный тип)
- •Дополнительные типы в Delphi
- •Контрольные вопросы
- •Глава 4. Операторы языка Паскаль Выражения
- •§4.1. Оператор присваивания
- •§4.2. Ввод-вывод данных
- •§4.3. Составной оператор
- •§4.4. Пустой оператор
- •§4.5. Безусловный оператор перехода
- •§4.6. Условный оператор
- •§4.7. Оператор цикла с параметром for
- •§4.8. Оператор цикла с предусловием while
- •§4.9. Оператор цикла с постусловием repeat
- •§4.10. Оператор выбора case
- •Контрольные вопросы
- •Глава 5. Процедурное программирование §5.1. Функции
- •Параметры – значения
- •Параметры – переменные
- •Бестиповые параметры
- •§5.2. Процедуры
- •Правила использования подпрограмм
- •Рекурсия
- •Директивы
- •Процедурные типы
- •Пример использования подпрограмм
- •Контрольные вопросы
- •Глава 6. Структурированные типы данных
- •§6.1. Массивы
- •§6.2. Строки
- •§6.3. Записи
- •§6.4. Множества
- •Пример использования множеств
- •§6.5. Файлы
- •Установочные и завершающие операции
- •Операции ввода-вывода
- •Перемещения по файлу
- •Пример работы с файлом
- •Обработка ошибок ввода-вывода
- •Специальные операции
- •Пример объединения двух файлов
- •Текстовые файлы
- •Стандартные текстовые файлы
- •Файлы без типа
- •Контрольные вопросы
- •Глава 7. Динамические структуры данных §7.1. Динамические переменные
- •§7.2. Указатели
- •Работа с динамическими переменными
- •Пример двухсвязанного циклического списка
- •Указатели без типа
- •Контрольные вопросы
- •Глава 8. Низкоуровневые возможности Паскаля §8.1. Язык Ассемблер
- •§8.2. Доступ к аппаратуре Доступ к памяти
- •Доступ к портам ввода-вывода
- •Работа по прерываниям
- •Контрольные вопросы
- •Глава 9. Модули §9.1. Основные понятия
- •§9.2. Использование модулей
- •§9.3. Стандартные модули
- •§9.4. Модуль Crt
- •Работа с экраном в текстовом режиме
- •Работа с клавиатурой
- •Работа со звуком
- •§9.5. Модуль dos
- •§9.6. Графический режим монитора
- •Контрольные вопросы
- •Глава 10. Введение в объектно-ориентированное программирование §10.1. История развития программирования
- •Понятие объекта
- •§10.2. Свойства объектов
- •Раннее и позднее связывание
- •§10.3. Виртуальные методы
- •Конструкторы и деструкторы
- •§10.4. Динамические объекты
- •Скрытые поля и методы
- •Контрольные вопросы
- •Литература
§9.2. Использование модулей
Модуль компилируется так же, как и обычные программы, но так как модуль сам по себе не выполняем, то в результате получается специальный файл с расширением TPU (Turbo Pascal Unit).
Для того чтобы получить доступ к интерфейсным объектам модуля, необходимо указать в программе имя нужного TPU-файла в разделе спецификаций используемых модулей, идущего сразу за заголовком:
USES <список модулей>;
При ее наличии в программе считаются известными все описания из интерфейсной части подключенного модуля, и к ним можно обращаться так же, как если бы они были описаны в самой этой программе:
Program Prim;
Uses Complex;
Var R,X,Y,Z: Complex;
Begin
Read (X.RE,X.IM,Y.RE,Y.IM,Z.RE,Z.IM);
R := CADD(CMUL(X,Y),CADD(CMUL(X,Z),CMUL(Y,Z)));
Writeln(R.RE,’+’,R.IM,’i’)
end.
Правила использования.
1. Иногда некоторые имена используемого модуля могут совпадать с именами использующей его программы. Тогда интерфейсные имена модуля, указанного в списке первым, образуют самый внешний блок программы, имена второго модуля образуют блок, вложенный в первый и т.д.
Например, в программе есть спецификация:
Uses A,B;
то вложенность блоков будет следующей:
То есть имена выполняемой программы «экранируют» одинаковые имена модулей А и В. Получить доступ к одноименным переменным модуля можно, используя составное имя.
Пусть есть модуль:
Unit A;
Interface
Var X:Real;
Procedure Pr(Y:integer);
implementation
... ...
end.
Пусть программа, использующая этот модуль, так же содержит переменную Х:
Program P;
Uses A;
Var X:Integer;
Begin
... ...
X:=8; { определение внутренней целой переменной }
A.X:=2.5; { переменная модуля }
Pr(X); { X - фактический целый параметр-значение }
... ...
end.
2. Разрешены косвенные использования модулей. Причем в спецификации использования указываются только модули, непосредственно используемые в программе. Пример косвенного использования модуля А в программе Р:
Unit A; Unit B; Program P;
Interfase Interfase Uses B;
... ... Uses A; ... ..
end. ... ... end.
end.
3. Схема взаимного использования модулей может иметь структуру любой сложности, но недопустимо явное или косвенное обращение модуля к самому себе.
Unit A; Unit B;
Interfase Interfase
Uses B; Uses A; <- недопустимо
... ... ... ...
4. При наличии раздела инициализации операторы модуля выполняются первыми в порядке описания:
Program P;
Uses A,B;
... ...
Выполняются:
1) операторы модуля А;
2) операторы модуля В;
3) операторы программы Р.
5. Рекомендуется, чтобы имя модуля совпадало с именем файла на внешнем носителе информации, например:
Unit Module1;
... ...
Текст программы необходимо поместить в файл Module1.pas, а оттранслированный модуль будет находиться в файле Module1.tpu. При необходимости хранить код модуля в файле с другим именем используют директиву компилятора $U. Она имеет параметр дискового имени файла с данным модулем и должна находится непосредственно перед именем модуля в спецификации пользователя. Например, запись
Uses {$U MY} MyUnit;
приведет к тому, что компилятор будет искать код модуля MyUnit в файле MY.TPU.
