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