
- •Предисловие
- •1. Общая схема решения задачи на персональном компьютере
- •2. Введение в язык Паскаль. Общая структура программы. Идентификаторы, комментарии, пробелы. Раздел описаний и раздел операторов
- •3. Арифметические типы данных. Числовые константы и переменные. Оператор присваивания. Выражения
- •Арифметические типы данных
- •4. Операторы ввода-вывода
- •5. Арифметические операции. Стандартные математические функции
- •Правила преобразования типов
- •6. Символьный тип данных
- •7. Логический тип данных. Операции сравнения. Логические операции. Битовые операции
- •Правила выполнения бинарных операций
- •8. Условный оператор. Блок. Оператор выбора
- •9. Операторы цикла
- •10. Метки. Оператор goto. Процедура Halt
- •11. Интервальные типы данных. Оператор type. Массивы
- •12. Ошибки при выполнении программы. Опции компилятора
- •13. Процедуры и функции. Сфера действия описаний
- •14. Множества
- •15. Тип string
- •16. Графические средства языка Паскаль
- •18. Записи
- •19. Тип "перечисление"
- •20. Модуль crt. Общие принципы организации интерфейса
- •21. Модули. Создание и использование модулей
- •Interface
- •Implementation
- •22. Файлы
- •23. Модуль dos и другие средства
- •24. Указатели и динамическая память
- •25. Динамические структуры: списки, деревья
- •26. Использование командной строки
- •27. Обработка программных прерываний
- •28. Параметры процедурных типов
- •29. Описатель absolute. Нетипизированные параметры. Открытые массивы
- •30. Вызов внешних пpогpамм
- •31. Некоторые вычислительные алгоритмы
- •Приближенное решение алгебраических уравнений
- •Решение систем линейных алгебраических уравнений
- •Аппроксимация таблично заданной функции методом наименьших квадратов
- •Численное интегрирование
- •Численное решение задачи Коши
- •32. Объекты
- •Содержание
21. Модули. Создание и использование модулей
Наряду со стандартными модулями Turbo Pascal'я вы можете создавать и использовать в программах свои собственные модули. Модуль имеет следующую структуру:
UNIT имя модуля;
Interface
интефейсная часть
Implementation
внутренняя часть
BEGIN
исполняемая часть
END.
Имя модуля - идентификатор длиной не более 8 символов, причем файл, содержащий модуль, должен иметь такое же имя. После ключевого слова INTERFACE располагаются описания типов, констант, переменных, функций и процедур, которые будут доступны пользователю этого модуля. Ключевое слово IMPLEMENTATION открывает внутреннюю часть модуля. В ней должны быть записаны все процедуры и функции, заголовки которых есть в интерфейсной части. Кроме того, во внутренней части можно описывать и другие переменные, константы, типы, функции и процедуры, но они уже будут недоступны другим программам. Исполняемая часть модуля может содержать обычные операторы, которые выполняются до начала выполнения программы, использующей этот модуль. Но как правило исполняемая часть пустая (а можно вообще не записывать слово BEGIN). Любой модуль может использовать другие модули как в интерфейсной, так и во внутренней частях, но следует избегать перекрестных ссылок, когда модуль А использует модуль Б, а Б использует А. Запишем небольшой модуль : пусть нам предстоит решать какие-нибудь задачи линейной алгебры, и мы хотим некоторые часто используемые алгоритмы объединить в модуль.
UNIT Algebra;
INTERFACE
CONST Nmax=10;
{полагаем,что наибольший размер матриц и векторов - 8}
TYPE Vector = ARRAY[1..Nmax] OF Real; {тип для векторов}
TYPE Matrix = ARRAY[1..Nmax] OF Vector; {тип для матриц}
FUNCTION Scalar(n:Byte; a,b:Vector):Real; {скалярное произведение векторов длиной n}
PROCEDURE SumMatrix(n,m:Byte; A,B:Matrix; VAR C:Matrix);{сумма матриц размера nxm}
PROCEDURE MultMatrix(nA,mA,nB,mB:Byte; A,B:Matrix; VAR C:Matrix);
{произведение матриц размера nA x mA и nB x mB}
IMPLEMENTATION
USES Crt;
VAR i,j,k : Byte;
{это ВНУТРЕННЯЯ процедура}
PROCEDURE SumVector(n:Byte; a,b:Vector; VAR c:Vector);
BEGIN FOR i:=1 TO n DO c[i]:=a[i]+b[i]; END;
{это ВНУТРЕННЯЯ процедура}
PROCEDURE Peeek; BEGIN Sound(400); Delay(100); NoSound; END;
FUNCTION Scalar;
VAR S : Real;
BEGIN S:=0; FOR i:=1 TO n DO S:=S+a[i]*b[i]; Scalar:=S; END;
PROCEDURE SumMatrix;
BEGIN FOR i:=1 TO n DO SumVector(m,A[i],B[i],C[i]); END;
PROCEDURE MultMatrix;
BEGIN IF mA<>nB THEN BEGIN Peeek; Exit; END;
FOR i:=1 TO nA DO FOR j:=1 TO mB DO BEGIN
C[i,j]:=0; FOR k:=1 TO mA DO C[i,j]:=C[i,j]+A[i,k]*B[k,j];
END;
END;
BEGIN {пустая исполняемая часть} END.
Если откомпилировать этот модуль, то будет создан файл с именем ALGEBRA.TPU, который впоследствии и будут использовать наши программы (расширение TPU означает Turbo Pascal Unit). Например:
USES Algebra;
VAR W,Q,Z : Matrix;
BEGIN MultMatrix(3,4,4,6,W,Q,Z); END.
Можно компилировать одновременно и программу, и все используемые в ней модули командой F9 ("Make" в подменю "Compile"). При этом будут созданы и все TPU-файлы и EXE-файл. Не забудьте, что имя файла, в котором мы храним текст модуля Algebra, должно быть обязательно "ALGEBRA.PAS" !