Тип определяет множество допустимых операций, которые применяются к объекту этого типа, диапазон возможных значений, а также формат внутреннего представления данных в памяти компьютера. В Турбо Паскале можно выделить следующие типы данных:
Группа
Подгруппа
Название
Идентификатор
Простой
Порядковый
Короткий целый
ShortInt
Байтовый
Byte
Слово
Word
Целый
Integer
Длинный целый
LongInt
Символьный
Char
Булев
Boolean
Вещественный
Вещественный
Real
С одинарной точностью
Single
С двойной точностью
Double
С повышенной точностью
Extended
Сложный
Comp
Строковый
String
Структурный
Массив
Array
Множество
Set
Файл
File
Запись
Record
Ссылочный
Pointer
Процедурный
Процедура
Procedure
Функция
Function
Объектный
Object
К простым типам относятся порядковые и вещественные типы.
Порядковые типы отличатся тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить и поставить каждому из них в соответствие некоторое число – порядковый номер значения. Порядковые типы подразделяются на:
· Целые типы.
· Логический тип.
· Символьный тип.
· Перечисляемый тип.
· Тип-диапазон.
Возможны 5 различных целых типов, отличающихся диапазоном возможных значений и длиной (числом байтов, требуемым для размещения величины этого типа в памяти компьютера). Их характеристики приведены в табл.1.
Таблица 1
Длина, байт
Название типа
Диапазон значений
Byte
0 ... 255
ShortInt
-128 ... 127
Word
0 ... 65535
Integer
-32768 ... 32767
LongInt
-2 147 483 648 ...
2 147 483 647
При использовании процедур и функций с целочисленными параметрами следует учитывать “вложенность” типов, т.е. везде, где используется тип WORD, допускается использование типа BYTE, но не наоборот. В тип LONGINT входит тип INTEGER, который в свою очередь включает в себя тип SHORTINT. При действиях с целыми числами, тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам, то типу того операнда, который имеет максимальный диапазон значений.
Над целыми числами могут выполняться операции:
Арифметические:
· Сложение (+);
· Вычитание (-);
· Умножение (*);
· Целочисленное деление (DIV);
· Остаток от целочисленного деления (MOD);
· Левый сдвиг (SHL);
· Правый сдвиг (SHR).
Логические:
· НЕ (NOT).
· И (AND).
· ИЛИ (OR).
· Исключающее ИЛИ (XOR).
Результатом целочисленного деления будет также целое число, полученное после отбрасывания дробной части результата: 11 DIV 3 = 3.
Результатом функции MOD будет целое число, представляющее собой остаток от деления двух операндов: 11 MOD 3 = 2.
Левый сдвиг беззнакового целого числа А на N эквивалентен умножению числа А на 2N. Правый сдвиг беззнакового целого числа А на N эквивалентен делению числа А на 2N. При рассмотрении операций сдвига следует учитывать длину разрядной сетки для данного типа данных. Операции сдвига смещают все разряды влево или вправо. При этом лишние биты отбрасываются, а освобождающиеся места заполняются нулями.
1110 SHR 2 = 210 , так как 000010112 SHR 2 = 000000102
1110 SHL 2 = 4410 , так как 000010112 SHL 2 = 001011002 .
Логические операции выполняются над отдельными двоичными разрядами чисел:
Операнд A
Операнд B
Логическая функция
NOT A
A AND B
A OR B
A XOR B
Вместе с тем результат операции NOT зависит от типа целого операнда (длины разрядной сетки). Если целая переменная A имеет тип BYTE и равняется 11, то функция NOT A даст результат 244, если эта переменная была описана типом WORD, то NOT A = 65524, а для переменной A, описанной типом INTEGER получим NOT A = -12.
Для примера рассмотрим работу программы INT_TYPE.PAS.
Символьный тип CHAR используется для описания символьных переменных. Всего возможно 256 различных символов в соответствии с таблицей ASCII – кодов. Задать значение символьной переменной можно несколькими способами:
· Указать сам символ, заключив его в верхние апострофы: A1 : = ‘X’, где A1 – переменная типа CHAR.
· Указать его код, например А1 : = # 88.
· Использовать функцию CHR(X), например А1 : = CHR(88).
Противоположной по отношению к функции CHR является функция ORD(X), которая для переменной X типа CHAR выдает ее ASCII–код.
Существует функция UPCASE, которая преобразует строчные буквы латинского алфавита в прописные, но не изменяет другие символы, например:
UPCASE(‘r’) = ‘R’
UPCASE(‘5’) = ‘5’
UPCASE(‘ш’) = ‘ш’
Два символа можно сравнивать посредством операций отношений:
· Меньше <.
· Больше >.
· Равно =.
· Меньше или равно <=.
· Больше или равно >=.
· Не равно <>.
При сравнении символьных значений сравниваются их коды. Например, справедливы соотношения:
‘A’ < ‘B’ < ‘C’
Для примера рассмотрим работу программы CHAR_TYP.PAS.
Логический (булев) тип BOOLEAN имеет два возможных значения – “истина” (TRUE) и “ложь” (FALSE). Эти значения считаются упорядоченными, т.е. FALSE < TRUE. Под булево значение отводится один байт памяти. Над булевыми переменными используются операции NOT, AND, OR, XOR.
Для примера рассмотрим работу программы BOOL_TYP.PAS.
Вещественные типы используются для представления дробных чисел и представляются в виде мантиссы и порядка:
16.75 = 0.1675E2
Используются следующие вещественные типы, характеристики которых приведены в табл.2.:
Таблица 2
Длина, байт
Название типа
Мантисса,
значащие десятичныецифры
Диапазон
десятичного порядка
single
7 ... 8
-45 ... +38
real
11 ... 12
-39 ... +38
double
15 ... 16
-324 ... +308
extended
19 ... 20
-4951 ... +4932
comp
19 ... 20
-263 +1 … +263-1
Тип REAL оптимизирован для работы без сопроцессора. Арифметический сопроцессор всегда обрабатывает вещественные числа в формате EXTENDED, а вещественные типы SINGLE и DOUBLE получаются простым усечением результатов до нужных размеров и применяются в основном для экономии памяти. При наличии сопроцессора использование типа REAL приведет к дополнительным затратам времени на преобразование типов. Поэтому в программах, для которых критично время вычисления, лучше вместо типа REAL использовать SINGLE или DOUBLE.
Особое положение занимает тип COMP, который также относят к вещественным. Число типа COMP трактуется как вещественное, хотя оно не имеет дробной части, занимает в памяти 8 байт и имеет диапазон от -263 +1 до +263-1. Наиболее подходящей областью применения типа COMP являются бухгалтерские расчеты, в которых часто проводятся операции с большими целыми числами.
Для работы с данными всех вещественных типов, кроме REAL, следует в меню OPTION→COMPILE→NUMERIC PROCESSING установить режим трансляции 8087/80287.
Над вещественными переменными возможны арифметические операции:
· Сложение (+).
· Вычитание (-).
· Умножение (*).
· Деление (/).
Для примера рассмотрим работу программы REAL_TYP.PAS.