
Типы данных в языке object pascal Классификация типов данных, объявление типов
Типы данных в Object Pascal можно разделить на предопределенные в языке (встроенные) типы и типы, определяемые пользователем. К предопределенным относятся типы целые, действительные, символы, строки, указатели, булевы, variant.
Определяемые пользователем типы могут быть использованы или непосредственно в объявлении переменной, или должны быть объявлены с помощью ключевого слова type. Это слово начинает раздел объявления типов. После него может следовать ряд объявлений типов в форме:
<идентификатор типа> = <описание типа>;
Приведем примеры. Объявление
var Mode : (mRead, mEdit, mWrite);
объявляет переменную Mode, задавая для нее вводимый пользователем перечислимый тип. А объявления
type
TMode = (mRead, mEdit, mWrite);
var
Model, Mode2 : TMode;
задают имя нового типа — TMode и определяют две переменные введенного пользователем типа – Model и Mode2.
Объявление типа можно использовать и для создания псевдонима встроенного типа. Например, объявление
type
TMyString = string;
создает тип TMyString, являющийся псевдонимом встроенного типа строк string. Ниже приведена классификация типов Object Pascal, учитывающая некоторые общие свойства различных типов:
Простые
Порядковые
Целые
Символы
Булевы
Перечислимые
Ограниченные
Действительные
Дата/Время
Строки
Структуры
Множества
Массивы
Записи
Файлы
Классы
Ссылки на класс (мета классы)
Интерфейсы
Указатели
Процедурные
Variant
Приведение типов
В выражениях и в операторах присваивания могут фигурировать переменные и константы разных типов. В этом случае осуществляется приведение типов, что означает преобразование одного типа в другой. Приведение типов может бытьнеявным иявным. Неявное приведение совместимых типов автоматически осуществляет компилятор. При этом всегда более младший тип, занимающий меньший объем памяти, приводится к типу, занимающему больший объем. Например, если
I — целая переменная, а А — действительная, то допустимы операторы
А := I;
А := А + I;
но недопустим оператор
I := А + I; // Ошибка Несовместимости типов
который требует приведения действительного значения к целому.
Явное приведение типов осуществляется программистом с помощью следующей конструкции:
<идентификатор типа> (<выражение>)
Если выражение представляет собой просто переменную, то говорят о приведении типа переменной. В противном случае говорят оприведении типа значения.
Явное приведение типа переменной можно проводить для любых типов, имеющих одинаковый размер. При этом не допускается взаимное преобразование целых и действительных чисел. Для преобразования действительных чисел в целые надо использовать функции Int и Trunc. А целые переменные преобразуются в действительные неявно.
Явное приведение типа переменной может использоваться и в правой, и в левой частях оператора присваивания. Например, могут быть записаны такие операторы
var
Ch : char;
I : integer;
….
Ch := Char(I) ;
Shortint(Ch):= I;
Эти два оператора дают один и тот же результат. Например, если I = 122 (код
ASCII символа “z” ) , то значение переменной Ch в результате выполнения любого
из этих операторов станет равно символу “z”.
Явное приведение типа значения некоторого выражения осуществляется после его вычисления. Например, в операторе
Ch := Char ( I - l ) ;
сначала вычисляется выражение в скобках, а потом производится приведение результата к типу Char.