
6.4. Раздел типов
Язык Delphi позволяет программистам наряду со стандартными типами значений вводить в употребление свои типы данных.
Каждый вводимый тип необходимо описать и присвоить ему имя. Это выполняется в разделе типов.
Раздел начинается служебным словом Type и имеет вид, который представляет рисунок 6.9.
Рисунок 6.9 – Синтаксическая диаграмма раздела типов
За словом Type следуют описания типов, разделенные точкой с запятой (;). Описание типа задает имя типа и присваиваемый ему тип. Тип определяется в соответствии с диаграммой, которую иллюстрирует рисунок 6.10.
Рисунок 6.10 – Синтаксическая диаграмма описания типа
Таким образом, в описании типа может быть использовано имя описанного ранее или стандартного типа (верхнее ребро синтаксической диаграммы, см. рисунок 6.10) или задан нестандартный тип данных (нижнее ребро диаграммы).
В языке Delphi рекомендуется идентификаторы пользовательских типов начинать заглавной буквой T (первая буква слова type). Но данная рекомендация не является обязательной к выполнению.
Пример 6.4.
Пример описания типов.
Type
ТL = Boolean;
ТInt = Integer;
ТNed = (Pn, Vt, Sr, Ch, Pt, Sb, Vs);
В данном примере введено три новых типа. Первое и второе описания используют стандартные типы Boolean и Integer (для описания типа используется <Имя_типа>, см. рисунок 6.10). Третье описание задает нестандартный тип данных – перечислимый тип (для описания типа используется <Задание_типа>, см. рисунок 6.10). Ему присвоено имя ТNed (Неделя). При вычислениях переменные типа ТNed смогут принимать одно из перечисленных в скобках значений. Введенные в разделе Type типы могут использоваться в дальнейшем при описании переменных.
6.5. Раздел переменных
Каждая переменная, используемая в программе, обязательно должна быть объявлена (описана). Это значит, что переменной должно быть присвоено имя и указан тип значений, которые может принимать данная переменная.
Описание переменных содержатся в разделе переменных. Раздел начинается служебным словом Var и имеет вид, который представляет рисунок 6.11.
Рисунок 6.11 – Синтаксическая диаграмма раздела переменных
С учетом синтаксической диаграммы (см. рисунок 6.10) тип переменной можно задать двумя способами.
1-ый способ. Тип описан в разделе типов или является стандартным. В этом случае в разделе переменных указывается <Имя_типа>.
Пример 6.5.
Использование имени типа при объявлении переменных (применительно к примеру 6.4).
Var
X: ТL;
I: ТInt;
Day: ТNеd;
A, B, C: Real;
Здесь ТL, ТInt, ТNed – описанные в разделе Type типы, Real – стандартный тип.
2-ой способ. В описании переменной используется явное задание типа.
При таком способе описывается переменная и одновременно задается новый тип без имени.
Пример 6.6.
Использование задания типа при объявлении переменных.
Var
Day: (Pn, Vt, Sr, Ch, Pt, Sb, Vs);
Предпочтение следует отдавать первому способу описания переменных.
Каждая переменная должна быть описана обязательно и ровно один раз.
В разделе переменных могут быть также описаны инициализированные переменные.
Инициализированные переменные – это переменные, которым при компиляции присваиваются начальные значения. Они не могут объявляться в подпрограммах (процедурах и функциях).
Например,
Var
Day: (Pn, Vt, Sr, Ch, Pt, Sb, Vs) = Sb;
C: Real = 0.5;
Если переменная не инициализируется при объявлении, то по умолчанию она заполняется нулем (но данной возможностью лучше не пользоваться, так как это приводит к снижению надежности программы). (в подпрограммах переменные инициализируются неопределенным значением из стека, которое может быть абсолютно любым)
Самостоятельно. Нарисовать синтаксическую диаграмму раздела переменных с учетом возможности объявления в нем инициализированных переменных.
Раздел переменных используется для описания автоматических переменных.
Автоматические переменные – это переменные, память для которых выделяется автоматически при входе в блок, где они локализованы (объявлены).
Глобальные автоматические переменные создаются при компиляции программы и сохраняются в течение всего времени ее выполнения. Локальные автоматические переменные создаются при вызове подпрограммы и уничтожаются при ее завершении.