Компиляция и компоновка модулей
Локализация (видимость) имен
Программный элемент, имя которого определено в интерфейсной части модуля, будет доступен по этому имени и в программе, к которой модуль присоединен. Если в программе определен объект с таким же именем, то по этому имени в программе будет доступен объект, определенный в программе, а в модуле – объект, определенный в модуле. В таком случае, из программы можно получить доступ к объекту, определенному под этим именем в модуле, если перед именем объекта указать имя модуля с точкой (как при обращении к полю записи). Так же можно получить доступ к объекту, описанному в одном из двух модулей, содержащих объекты с одинаковыми именами.
Перед подключением к главной программе модули компилируются и сохраняются на диске в виде файлов с тем же именем, но с расширением ".tpu" в каталоге, объявленном в меню Options-Compiler-Directories-EXE&TPU Directories. Файл tpu является частично компилированным. В нем исходный текст заменен машинными кодами, но сохранены в закодированном виде все объявленные имена констант, переменных, процедур и функций, описанных в интерфейсной части. При подключении модуля к программе, из модуля выбираются только те компоненты, которые используются в программе. Поэтому объем программы не обязательно должен увеличиваться на величину объема модуля.
|
|
Если программа состоит из нескольких модулей, необходимо учитывать следующее. При выполнении команды Compile происходит компиляция только модуля, открытого для редактирования, и главной программы (если она указана в опции Primary file). При этом изменения, внесенные при редактировании других модулей после их последней компиляции, не будут отражены в коде скомпонованной программы. Для перекомпиляции всех измененных модулей нужно использовать команду Make, а для перекомпиляции всех модулей, входящих в программу, нужно использовать команду Build.
Эта программа находит корни квадратных уравнений, коэффициенты которых вводятся с дисплея, и выводит найденные вещественные корни, либо сообщение о том, что они отсутствуют, на дисплей. После решения очередного уравнения, программа предлагает решить еще одно, или закончить счет. Программа использует процедуру, которая в самой программе не описана. Процедура реализована в подключаемом модуле. Также программа использует переменные a, b, c типа Real и переменную x типа Rdim, не описанные в программе, но описанные в модуле. Тип Rdim также сконструирован в модуле.
Текст программы.
Program SqEqSolve;
Uses Roots; {подключение модуля}
Var W:char;