Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование лекции.doc
Скачиваний:
49
Добавлен:
12.11.2019
Размер:
5.53 Mб
Скачать

3.3. Иерархия типов данных

Типы данных, встроенные в большинство современных языков программирования, можно представить в виде следующего дерева (Рис. 4 .5):

Все типы делятся на простые и составные. Составные типы являются комбинацией простых. Простые типы, в свою очередь, делятся на базовые и производные. Базовые типы, как правило, встроены в язык программирования и представляются соответствующими операторами.

Рис. 4.5. Иерархия типов данных.

Простейшим типом данных является перечислимый. При его задании программист просто явно указывает (перечисляет) все значения, которые может принимать переменная такого типа. Например, рассмотрим следующие описания:

TYPE Tcolor=(red, green, blue); TDay=(Sun, Mon, Tue, Wed, Thu, Fri, Sat);

Здесь создаются два новых типа данных. Переменная типа Tcolor сможет принимать лишь три значения: red, green, blue, а переменная типа TDay – значения Sun, Mon, Tue, Wed, Thu, Fri, Sat. Слова red, green, blue представляют собой константы, за которыми на самом деле скрываются некоторые числовые значения. Но нам в программе гораздо удобнее работать со словами, чем с числами. Было бы очень неудобно закодировать цвета цифрами и мучительно вспоминать, что "0" – это красный цвет, а "2" – синий.

Значения в перечислимом типе упорядочены по возрастанию. Green больше, чем blue, а Mon меньше, чем Tue. Поэтому их можно сравнивать не только на равенство, но и на отношения "больше - меньше".

Для работы с переменными перечислимого типа предназначены следующие функции и процедуры:

INC(v) – записать в v следующее значение; DEC(v) - записать в v предыдущее значение.

Например:

c:Tday; … c:=Mon; INC(c); { теперь c = Tue}

Обратите внимание, что эти процедуры меняют значение переменных, подаваемых им на вход в качестве аргументов. Если это нежелательно, следует использовать функции:

PRED(v) – предыдущее значение перечислимого типа; SUCC(v) – последующее значение перечислимого типа.

Например,

c1:=PRED(c); { c1= Sun } c2:=SUCC(c); { c2=Mon }

3.4. Стандартные типы данных

Эти типы данных всегда присутствуют в языке и не требуют дополнительного описания. К ним относятся:

INTEGER – целое со знаком; WORD - целое без знака; BYTE – байт, 0..255; REAL – вещественное число; BOOLEAN – логическое (TRUE, FALSE); LONGINT – длинное целое со знаком; EXTENDED – длинное вещественное; CHAR – символ.

Обратите внимание на четкое разделение целых и вещественных чисел. Операции с целыми числами всегда выполняются точно, а с вещественными – с погрешностью. Результат сложения двух целых чисел 2+2 всегда будет точно равен четырем, а результат сложения двух вещественных чисел 2.0+2.0 может оказаться равным и 3.9999999, и 4.000001. Такова особенность машинной арифметики. Это не ошибка языка Паскаль или процессора, а свойство любого компьютера. Четкое разделение целого и вещественного типов потребовало введения двух разных операций деления: деление нацело (обозначается DIV) и вещественного деления (обозначается "/"). Не забывайте, что 10 DIV 3=3, а 10/3=3.33333.