Эффективность работы программиста определяется его квалификацией и опытом работы. В профессиональной деятельности программиста его опыт материализуется в программном окружении. Программное окружение программиста – библиотека программных продуктов (процедур, функций, объектов, компонент программных сред и т.п.), используемых программистом как дополнительные средства языка. В эту библиотеку могут входить как программные продукты, разработанные самим программистом, так и средства общего назначения (библиотеки процедур и функций общего назначения, редакторы, трансляторы, кросс-трансляторы, редакторы связей и тому подобное), называемые инструментальными средствами (или утилитами).
Для создания и поддержки программного окружения в языках программирования разработаны свои средства. В языке ТР это модули.
В стандарте Паскаля нет модулей. Текст программы на Паскале хранится в едином файле. Транслятор снабжает программу встроенными и библиотечными функциями и процедурами на этапе редактирования связей. Для использования ранее написанной подпрограммы ее текст необходимо вставить в секцию описаний. В стандарте нет другого механизма использования ранее написанной подпрограммы.
В ТР используется метод «погружения» текста программы в область действия описаний, находящихся в других файлах. Такие файлы являются отдельными программными единицами (то есть могут транслироваться независимо) и называются модулями.
Погружение программы в область описаний модуля осуществляется в предложении uses. Это предложение записывается сразу после заголовка программы и имеет следующий формат:
uses <список модулей через запятую>
Область действия описаний каждого модуля начинается с имени этого модуля в предложении uses и заканчивается концом программы.
Структура модуля:
Unit <имя модуля>;
interface
[uses ...]
<описания глобальных типов данных, переменных, констант, процедур и функций>
implementation
[uses ...]
<реализация>
begin
<инициализация>
end.
Имя файла, содержащего исходный текст модуля (.pas) или объектный код (tpu), должно совпадать с именем модуля. Если имя модуля длиннее восьми символов, то оно должно совпадать с именем файла по первым восьми символам.
В списке uses имен модулей не должно быть «рекурсий» и «циклов»
При работе с модулями следует помнить, что в среде ТР имеется возможность управлять размещением кодов в файловой системе и режимами трансляции:
Options/Directories/EXE&TPU - сюда будут помещены загрузочные и объектные коды
Options/Directories/Unit Directories - здесь будет осуществляться поиск объектных (TPU) кодов модулей
Compile/Compile – компиляция только программы
Compile/Make – компиляция программы и модулей, текст которых был изменен
Compile/Build– компилируется и программа, и все модули
Печать данного перечислимого типа. Вот простой пример модуля (пусть имя файла с представленным ниже текстом My_Unit.pas):
Unit My_Unit;
Interface
type Color=(Red,Yellow,Green);
procedure WriteColor(x:Color);
Implementation
var mass:array[Color] of string[6];
procedure WriteColor;
begin writeln(mass[x]:6) end;
begin
mass[Red]:=' Red';
mass[Yellow]:='Yellow';
mass[Green]:='Green'
end.
После трансляции этого модуля средствами интегрированной среды ТР в директории модулей интегрированной среды образуется файл My_Unit.tpu. Теперь можно воспользоваться новым средством
Uses My_Unit;
var Col:Color;
begin
Col:=Red;
WriteColor(Col)
end.
На экране появится Red
Модуль System не нужно указывать в предложении uses, поскольку он доступен каждой программе ТР по умолчанию. В модуле предопределены переменные Input и Output как стандартные текстовые файлы ввода и вывода.