Типы в Турбо Паскале
Тип определяет множество допустимых операций, которые применяются к объекту этого типа, диапазон возможных значений, а также формат внутреннего представления данных в памяти компьютера. В Турбо Паскале можно выделить следующие типы данных:
Группа |
Подгруппа |
Название |
Идентификатор |
Простой |
Порядковый |
Короткий целый |
ShortInt |
Байтовый |
Byte | ||
Слово |
Word | ||
Целый |
Integer | ||
Длинный целый |
LongInt | ||
Символьный |
Char | ||
Булев |
Boolean | ||
Вещественный |
Вещественный |
Real | |
С одинарной точностью |
Single | ||
С двойной точностью |
Double | ||
С повышенной точностью |
Extended | ||
Сложный |
Comp | ||
Строковый |
|
|
String |
Структурный |
|
Массив |
Array |
Множество |
Set | ||
Файл |
File | ||
Запись |
Record | ||
Ссылочный |
|
|
Pointer |
Процедурный |
|
Процедура |
Procedure |
Функция |
Function | ||
Объектный |
|
|
Object |
Простые типы данных
К простым типам относятся порядковые и вещественные типы.
Порядковые типы отличатся тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить и поставить каждому из них в соответствие некоторое число – порядковый номер значения. Порядковые типы подразделяются на:
Целые типы.
Логический тип.
Символьный тип.
Перечисляемый тип.
Тип-диапазон.
Возможны 5 различных целых типов, отличающихся диапазоном возможных значений и длиной (числом байтов, требуемым для размещения величины этого типа в памяти компьютера). Их характеристики приведены в табл.1.
Таблица 1
-
Длина, байт
Название типа
Диапазон значений
1
Byte
0 ... 255
1
ShortInt
-128 ... 127
2
Word
0 ... 65535
2
Integer
-32768 ... 32767
4
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 | ||
0 |
|
1 |
|
|
|
1 |
|
0 |
|
|
|
0 |
0 |
|
0 |
0 |
0 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
|
0 |
1 |
1 |
1 |
1 |
|
1 |
1 |
0 |
Вместе с тем результат операции 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
Длина, байт |
Название типа |
Мантисса, значащие десятичныецифры |
Диапазон десятичного порядка |
4 |
single |
7 ... 8 |
-45 ... +38 |
6 |
real |
11 ... 12 |
-39 ... +38 |
8 |
double |
15 ... 16 |
-324 ... +308 |
10 |
extended |
19 ... 20 |
-4951 ... +4932 |
8 |
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.