Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 Типы данных.doc
Скачиваний:
15
Добавлен:
15.04.2015
Размер:
121.34 Кб
Скачать

11

Типы в Турбо Паскале

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

Группа

Подгруппа

Название

Идентификатор

Простой

Порядковый

Короткий целый

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.