С помощью типов данных программист указывает компилятору, как хранить
информацию в программе. При объявлении переменной необходимо указать ее тип.
Одни типы уже определены в языке, другие программисту приходится задавать
самому. В ранних языках программирования допускалось ограниченное число типов
данных, и Pascal оказался одним из первых языков, допускающих определение в
программе новых типов. Типы данных, определяемые пользователем, обычно
задаются в разделе определения типов программы или модуля (unit), однако это
можно делать и внутри процедур или функции. Объявления типов действуют в
пределах того блока, в котором они размещены. Вне этого блока ссылаться на такие
типы нельзя. Внутри же они заменяют все внешние типы с тем же именем.
Объявленные типы данных можно применять в любом месте области их видимости;
запрещена только ссылка определяемого типа на самого себя (тут, однако, есть
одно исключение, касающееся указателей). Объявления типов в Pascal
являются для компилятора чем-то вроде схем, которые он должен запомнить на
случай, если вдруг встретит в программе ссылки на тот или иной тип. Само по себе
объявление типа не вносит в программу никаких изменений. Что же касается
объявлений var, то они задают компилятору некоторые действия, связанные с ранее
объявленными типами. Тип переменной ограничивает как ее значения, так и
операции, которые можно выполнять с этими значениями. Определения типов
и переменных могут размещаться в нескольких местах компонентов программы.
Выглядят же они следующим образом.
type typel = type definitioni; //Новые типы данных
определяются в разделе "type". Каждому новому
// типу присваивается
имя, затем он определяется через уже
//существующие типы.
type2 = type__definition2; // В одном разделе "type"
можно объявить несколько типов.
//Самое простое
определение типа состоит из имени типа, type3 =
typel; // определенного ранее.
// Новые переменные
объявляются в var // разделе
"var". Каждой новой var1: type definitions; //
переменной сначала присваивается имя, а затем - тип (на основе
// ранее определенных
типов). var2, var3: type definition4; // В одном разделе
"var" можно объявить несколько переменных.
// Нескольким переменным
можно присваивать один и тот же тип. var4 :
typel; // Программу легче читать, если переменным
присвоены //существующие
типы.
Синтаксис Object Pascal позволяет одновременно конструировать
исключительно сложные типы и определение переменных. Однако определение типов в
разделах type тех или иных блоков дает возможность использовать эти типы в
разных частях программы. Новые типы определяются из типов следующих категории.
- Простые типы для хранения информации в форме чисел и других
"упорядоченных" значении.
- Строковые типы для хранения последовательностей символов.
- Структурные типы для одновременного хранения информации разных типов.
- Указательные типы для косвенного обращения к переменным заданных типов.
- Процедурные типы для обращения к процедурам и функциям, рассматриваемым как
переменные.
- Вариантные типы для хранения в одной переменной данных различных типов.
Обычно идентификаторы типов используются только при определении новых
типов или объявлении переменных. Есть, однако, несколько функций, в которых имя
типа может использоваться как часть выполняемого оператора. Например, функция
SizeOf (Т) возвращает количество байтов, занимаемых переменной Т.
Функция SizeOf очень важна для написания эффективных программ. Многие из
определенных в Object Pascal типов имеют очень сложную структуру и могут
занимать в памяти довольно много места. При этом элементы таких типов созданы
скорее для представления значений в некотором логическом порядке, а не для того,
чтобы занимать место в памяти. Функция SizeOf избавляет программиста от
необходимости вычислять объем данных в подобных случаях.
|