Типы данных
С помощью типов данных программист указывает компилятору,
как хранить информацию в программе. При объявлении переменной необходимо
указать ее тип. Одни типы уже определены в языке, другие программисту приходится
задавать самому. В ранних языках программирования допускалось ограниченное
число типов данных, и 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 избавляет
программиста от необходимости вычислять объем данных в подобных случаях.