Глава 4. Введение в систему типов языка

Турбо Паскаль является языком с сильной системой типизации. Это означает, что все данные, обрабатываемые программой, должны принадлежать к какому-либо заранее известному типу. В языке предопределено достаточное количество типов данных (например, целые и вещественные числа, символы, строки и т.п.) и имеются большие возможности для объявления новых типов, более подходящих для конкретных практических приложений.

Объявление новых типов в программе на Паскале происходит в блоке описания типов TYPE. Алгоритм объявления нового типа прост: ставится ключевое слово TYPE, и за ним следует перечисление новых имен типов, которые будут введены, и конструкций из уже известных или ранее введенных типов, непосредственно определяющих новый тип. Схематично это выглядит так:

TYPE

НовыйТип1 = Массив целых чисел;

НовыйТип2 = Множество символов;

...

НовыйТип101 = Целое число;

НовыйТип102 = Перечисленные здесь значения;

В реальной программе, конечно, слева должны стоять имена — названия новых типов (идентификаторы введенных типов), а справа — определяющие тип зарезервированные слова и имена образующих типов. Между именем и его определением обязателен знак равенства «=» (не путать со знаком присваивания «:=»). Также обязательна точка с запятой «;» после завершения определения каждого нового типа. Концом блока описания типов считается начало любого другого блока (например, VAR, CONST, BEGIN) или описание заголовков процедур и (или) функций.

Какие же возможные типы данных и способы их развития предоставляет Турбо Паскаль? Система типов Турбо Паскаля значительно шире, чем в стандартном Паскале. В первую очередь, это обусловливается большим количеством базовых (простых) типов языка. Так, одних только целочисленных типов вводится пять (с математическим сопроцессором — все шесть)!

Основной (стандартный) набор простых, т.е. определяющих тип только одного отдельного значения, типов таков:

- 61 -

1. Числовые типы:

короткое целое без знака — Byte (0..255);

короткое целое со знаком — ShortInt (-128..127);

целое без знака — Word (0..65535);

целое со знаком — Integer (-32768..32767);

длинное целое со знаком — LongInt (-2147483648..2147483647);

вещественное — Real (точность 11-12 знаков после запятой).

2. Логический тип — Boolean.

3. Символьный тип — Char.

4. Строковый тип — String, String[n].

5. Адресный тип (указатель) — Pointer.

6. Перечислимый тип.

7. Ограниченный тип (диапазон).

Все эти типы могут участвовать в определении сложных типов. Обращаем внимание на отсутствие типа ALPHA, встречающегося во многих реализациях Паскаля. Здесь его заменяет более универсальный и гибкий тип String. Список числовых типов может быть расширен за счет использования математического сопроцессора. Подробно они будут рассмотрены в гл. 9 «Математические возможности Турбо Паскаля».

Набор сложных типов, определяющих структуры из простых типов весьма широк:

1) массив — Array ... of ...;

2) множество — Set of ...;

3) файлы (3 вида) — Text, File, File of ... ;

4) запись — RECORD;

5) объект — OBJECT;

6) ссылка — ^БазовыйТип.

Кроме того, Турбо Паскаль вводит особый тип, называемый процедурным. Он не имеет отношения к данным и используется для организации работы процедур и функций. Файлы в системе типов Турбо Паскаля могут быть трех различных типов: текстовые (Text), обобщенные или бестиповые (File), и компонентные или типизированные (File of ...). Из них только последний является действительно сложным, т.е. составным из прочих типов. Типы Text и File предопределены в языке и включены в этот список больше для наглядности. Некоторой натяжкой является включение ссылок в список сложных типов. Вводится принципиально новый тип — объекты. С их включением язык Турбо Паскаль обрел возможности, присущие до этого только объектно-ориентированным языкам (C++, Smalltalk).

- 62 -

Сложные типы достаточно сложны, чтобы их можно было кратко рассмотреть по ходу введения в систему типов. Подробно мы их обсудим в разд. 4.2 и гл. 7, 11, 12, 13.