Блок объявления констант CONST так же, как блок LABEL может располагаться в любом месте программы. Таких блоков может быть несколько или может не быть вообще. В них размещаются определения констант различных видов.
Необязательный, как и все предыдущие, блок описания типов TYPE содержит определения вводимых программистом новых типов, в том числе для описания типов «объект». В этом блоке могут быть использованы константы из блока CONST. Если это так, то блок TYPE может быть расположен где угодно, но не выше соответствующего блока CONST. Если же описания типов ни с чем не связаны, то они могут быть помещены в любом месте между другими блоками, но выше того места, где будут использованы.
Раздел описания глобальных переменных VAR формально тоже не обязателен и может отсутствовать. Реально же он, конечно, объявляется и содержит список глобальных переменных программы и их типы. Блоков VAR может быть несколько, но переменные в них не должны повторяться.
Если в программе описываются процедуры и (или) функции, то их определение должно предшествовать основному блоку. В любом случае должны быть описаны заголовки процедур и функций. Обычно заголовком сразу следует реализация (тело) процедуры (функции), но они могут быть и разнесены внутри программы. Если процедура или функция объявляется как внешняя, то ее тело вообще будет отсутствовать в тексте на Паскале. Библиотечные процедуры и функции, подсоединяемые директивой USES, не описываются в тексте, а только используются.
Основной блок — это собственно программа, использующая все, что было описано и объявлено. Он обязательно начинается словом BEGIN и заканчивается END с точкой. После основного блока, вернее после завершающей его точки, любой текст игнорируется. Поэтому основной блок всегда замыкает программу.
Язык Турбо Паскаль предоставляет гораздо большую гибкость в организации текста программы, чем стандарт языка: структура программы на рис. 3.2 более читаема и удобна, чем жесткая последовательность блоков на рис. 3.1.
Существуют, однако, ограничения на перемещения блоков в программе. Программа компилируется последовательно, и все что в
- 54 -
| PROGRAM Сложная_программа;
| USES
| Подключаемые библиотеки (модули);
| CONST Константы и переменные для
| VAR выполнения математических расчетов
| Определения процедур и функций
| математических расчетов
| CONST Константы, типы и переменные,
| TYPE нужные для графического представления
| VAR результатов расчетов
| Определения процедур и функций
| построения графиков
| LABEL Метки, константы и переменные,
| CONST используемые только в основном
| VAR блоке программы
| BEGIN
| Основной блок программы
| END.
Рис. 3.2
ней вводится, должно быть объявлено, до того как будет использовано. Так, переменные из самого нижнего блока VAR (см. рис. 3.2) будут недоступны в определяемых выше процедурах. Попытка использовать их в процедурах вызовет ошибку и остановку компиляции. Исправить такую ошибку просто: надо перенести нужные переменные в блок VAR перед процедурами.
Компилятор Турбо Паскаля накладывает некоторые ограничения на текст программ. Так, длина строки не может превысить 126 символов, а объем файла программы (текста) — 64K (максимально).
3.3. Комментарии и ключи компиляции
Кроме конструкций языка, программа может содержать комментарии и ключи компиляции. Комментарии — это произвольный текст в любом месте программы, заключенный в фигурные скобки:
{ текст комментария }
или в круглые скобки со знаком умножения (звездочкой):
(* текст комментария *)
- 55 -
между скобками и звездочкой не должно быть пробелов. Комментарии не могут пересекать друг друга:
{ пример пересечения (* комментариев } — так нельзя *),
но могут быть вложенными. При этом внешний и внутренний комментарии должны быть заключены в разные скобки:
(* внешний охватывает { внутренний } комментарий *)
Длина комментария не ограничивается одной строкой. Можно, например, закомментировать целый кусок текста:
{
много
строк
комментариев
}
Турбо Паскаль позволяет программе (тексту) управлять режимом компиляции: включать или выключать контроль ошибок, использовать или эмулировать математический сопроцессор, изменять распределение памяти и др. Для изменения режима используются ключи компиляции: специальные комментарии, содержащие символ «$» и букву-ключ с последующим знаком «+» (включить режим) или «-» (выключить). Например:
{$R-} отключить проверку диапазонов индексов массивов;
{$N+} использовать сопроцессор 80Х87 и т.д.
Список ключей компиляции приведен в Приложении 2. Можно объединять ключи в один комментарий:
{$N+,R-}