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