3.2. Общая структура программ

We use cookies. Read the Privacy and Cookie Policy

Самая короткая программа на Турбо Паскале выглядит следующим образом:

| BEGIN

| END.

Более длинные программы обрастают различными смысловыми блоками: описаниями меток переходов, константами, объявлениями типов и переменных, затем процедурами и функциями. Порядок размещения их в тексте программы для Турбо Паскаля может быть таким же жестким, что и для стандартного Паскаля. Написанная по правилам стандарта языка программа будет иметь в своем полном варианте структуру, показанную на рис. 3.1.

Регистр написания заголовков блоков неважен. Название программы в Турбо Паскале имеет чисто декоративное назначение, как комментарий. Обязательная для многих других версии Паскаля конструкция

PROGRAM Имя ( input, output, ... )

здесь не является необходимой.

- 52 -

| PROGRAM Имя_программы;

| USES

| Список используемых библиотек (модулей);

| LABEL

| Список меток в основном блоке программы;

| CONST

| Определение констант программы;

| TYPE

| Описание типов;

| VAR

| Определене глобальных переменных программы;

| ОПРЕДЕЛЕНИЕ ПРОЦЕДУР (заголовки и, возможно, тела процедур);

| ОПРЕДЕЛЕНИЕ ФУНКЦИЙ (заголовки и, возможно, тела функций);

| BEGIN

| Основной блок программы

| END.

Рис. 3.1

Директива USES — первый в программе действительно работающий оператор. С ее помощью подключаются библиотечные модули, из стандартного набора Турбо Паскаля или написанные пользователем, расширяя тем самым список используемых в программе процедур, функций, переменных и констант. У директивы USES есть свое четкое место. Если она присутствует, то должна стоять перед прочими директивами и разделами. Кроме того, слово USES может появиться в программе только один раз. Список библиотек дается через запятую:

USES

CRT, DOS, Graph;

{ подключены три библиотеки с соответствующими именами }

Если библиотеки не используются, то директива USES не ставится.

Блок описания меток LABEL содержит перечисленные через запятую метки переходов, установленные в основном блоке программы. Блоков LABEL может быть сколько угодно (лишь бы метки не повторялись), и стоять они могут где угодно до начала основного блока. Метки могут обозначаться целым числом в диапазоне 0...9999 или символьными конструкциями длиной не более 63 букв, например:

- 53 -

LABEL

Loop, 1, 123, m1, m2, Stop;

{описываем шесть различных меток }

Если метки не используются, то блоки LABEL отсутствуют.

Блок объявления констант 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 (максимально).