
6.2. Раздел меток
Метка – это идентификатор или целочисленная константа в диапазоне 0 ÷ 232 - 1, стоящая перед оператором и отделенная от него двоеточием. Метка служит для выделения оператора и играет роль имени данного оператора. Оператор с меткой называется помеченным.
Метки используются, чтобы перейти к выполнению определенного оператора, нарушая естественный последовательный порядок выполнения операторов.
Все метки операторов должны быть различными.
Передача управления оператору, помеченному меткой, осуществляется с помощью управляющего оператора Goto.
Пример 6.1.
Пример фрагмента программы:
M1: X := X + Y;
...
5: Z := sin(X);
...
Goto M1;
...
Goto 5;
...
Все метки, используемые в разделе операторов модуля, должны быть обязательно предварительно описаны в разделе меток.
Данный раздел начинается служебным словом Label и имеет вид, который представляет рисунок 6.5.
Рисунок 6.5 – Синтаксическая диаграмма раздела меток
Например, для примера 6.1:
Label M1, 5;
Раздел закрывается точкой с запятой (;).
Раздел может быть пустым (может отсутствовать), только если в модуле нет меток.
Метки в разделе меток могут быть перечислены в произвольном порядке.
Например, для примера 6.1:
Label 5, M1;
6.3. Раздел констант
Если в программе некоторые константы используются многократно, то удобно присвоить им имя.
Например,
e := 2.71;
Такое присвоение удобно сделать один раз и далее в программе обращаться к константе уже по имени.
Присвоение константе имени выполняется в разделе описания констант. Раздел начинается служебным словом Const и имеет формат, который иллюстрирует рисунок 6.6.
Рисунок 6.6 – Синтаксическая диаграмма раздела констант
Таким образом, в разделе констант могут быть объявлены обычные (нетипизованные, нетипизированные) константы и типизованные (типизированные) константы.
Формат описания нетипизованной константы представляет рисунок 6.7.
Описание константы вводит идентификатор (<Ид.> на синтаксической диаграмме), под которым подразумевается некоторое константное выражение. Тип константы определяется типом данного выражения.
Рисунок 6.7 – Синтаксическая диаграмма описания нетипизованной константы
Константное выражение – это выражение, вычисляемое на этапе компиляции. Константное выражение не может содержать имен переменных и типизированных констант, оператора получения адреса @ или включать обращение к определенным пользователем функциям. В константных выражениях допустимо обращение к следующим стандартным функциям: Abs, Chr, Hi, Lo, Length, Odd, Ord, Pred, Ptr, Round, Sizeof, Succ, Swap, Trunc.
В константных выражениях могут быть использованы только имена нетипизованных констант.
Если некоторая константа используется в программе один раз, то ей можно не присваивать имя в разделе констант. В этом случае значение константы будет записываться непосредственно в выражениях раздела операторов.
Таким образом, раздел констант может быть пустым (отсутствовать).
Пример 6.2.
Объявление нетипизованных констант.
Const
E = 2.7115;
I = 10000;
Eps1 = 0.0001;
Eps2 = Eps1 / 100.0;
Pi1 = -2 * Pi;
Основное назначение типизованных констант – присвоение константных значений данным структурных типов. В отличие от Паскаля значения типизованных констант при выполнении программы изменяться не могут.
Различают скалярные и структурные типизованные константы.
Синтаксис объявления типизованных констант представляет рисунок 6.8.
На данном рисунке <Ид.> - идентификатор типизованной константы. <Константа> представляет собой скалярную типизованную константу. Остальные виды констант – это структурные типизованные константы. Структурные типизованные константы будут детально представлены в подразделах, описывающих соответствующие типы данных.
Рисунок 6.8 – Синтаксическая диаграмма описания типизованных констант
Типизованные константы инициализируются каждый раз перед выполнением подпрограммы. При каждом новом входе в подпрограмму типизованные константы заново инициализируются.
Типизованные константы из всех подпрограмм располагаются в сегменте данных. Поэтому их общий объем ограничен 64К байтами.
Пример 6.3.
Объявление скалярных типизованных констант.
Const
MaxI: Integer = 10000;
MinI: Integer = 0;
Eps: Real = 0.0001;
Pi2: Real = 4 * Pi;
Типизованные константы не могут использоваться в объявлении других констант или типов.