Типы данных
Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.
Тип определяет:
- возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
- внутреннюю форму представления данных в ЭВМ;
- операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
В языке Паскаль тип величины задают заранее. Все переменные, используемые в программе, должны быть объявлены в разделе описания с указанием их типа. Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
Иерархия типов в языке Паскаль такая:
- Простые
- Порядковые
- Целые
- Логические
- Символьные
- Перечисляемые
- Интервальные
- Вещественные
- Порядковые
- Структурированные
- Массивы
- Строки
- Множества
- Записи
- Файлы
- Указатели
Простые типы данных
В таблице приведены простые типы данных Паскаля, объем памяти, необходимый для хранения одной переменной указанного типа, множество допустимых значений и применимые операции.
Идентификатор | Длина (байт) | Диапазон значений |
Операции |
---|---|---|---|
Целые типы | |||
integer | 2 | -32768..32767 | +, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
byte | 1 | 0..255 | +, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
word | 2 | 0..65535 | +, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
shortint | 1 | -128..127 | +, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
longint | 4 | -2147483648..2147483647 | +, -, /, *, Div, Mod, >=, <=, =, <>, <, > |
Вещественные типы | |||
real | 6 | 2,9•10-39 — 1,7•1038 | +, -, /, *, >=, <=, =, <>, <, > |
single | 4 | 1,5•10-45 — 3,4•1038 | +, -, /, *, >=, <=, =, <>, <, > |
double | 8 | 5•10-324 — 1,7•10308 | +, -, /, *, >=, <=, =, <>, <, > |
extended | 10 | 3,4•10-4932 — 1,1•104932 | +, -, /, *, >=, <=, =, <>, <, > |
Логический тип | |||
boolean | 1 | true, false | Not, And, Or, Xor, >=, <=, =, <>, <, > |
Символьный тип | |||
char | 1 | все символы кода ASCII | +, >=, <=, =, <>, <, > |
Перечисляемый и интервальный тип относятся к типам, определяемым пользователем и будут рассмотрены позже.
Порядковые типы, выделяемые из группы простых типов, характеризуются следующими свойствами:
- все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
- к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
- к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
- к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.
В языке Паскаль введены понятия эквивалентности и совместимости типов. Два типа Т1
и Т2
являются эквивалентными (идентичными), если выполняется одно из двух условий:
Т1
иТ2
представляют собой одно и то же имя типа;- тип
Т2
описан с использованием типаТ1
с помощью равенства или последовательности равенств. Например:
1234typeT1 = Integer;T2 = T1;T3 = T2;
Менее строгие ограничения накладываются на совместимость типов. Так, типы являются совместимыми, если:
- они эквивалентны;
- являются оба либо целыми, либо действительными;
- один тип — интервальный, другой — его базовый;
- оба интервальные с общим базовым;
- один тип — строковый, другой — символьный.
В языке Паскаль ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. Для этого используется конструкция
1 |
Имя_Типа(переменная или значение); |
Например, Integer('Z')
представляет собой значение кода символа 'Z'
в двухбайтном представлении целого числа, а Byte(534)
даст значение 22
, поскольку целое число 534
имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен.