Назад Домой! Дальше Глава 3 ТИПЫ ДАННЫХ


Под типом данных понимается множество допустимых значений этих данных, а также
 совокупность операций над ними.

3.1. Классификация типов данных
В Turbo Pascal можно выделить следующие группы типов:
 - простые типы;
 - структурированные типы;
 - указатели;
 - процедурные типы;
 - объекты.
 Среди типов, используемых в языке, есть стандартные (предопределенные) и определяемые 
программистом. К стандартным типам, не требующим предварительного определения, 
относятся целые типы, вещественные типы, логические типы, символьный тип - Char, 
тип-строка - string, ASCIIZ-строка - PChar, текстовый файл - Text, 
тип-указатель - Pointer. Все другие используемые типы данных должны быть определены 
либо в разделе объявления типов, либо в разделе объявления переменных или 
типизированных констант.
 Раздел объявления типов начинается зарезервированным словом type, после которого 
определяются вводимые типы. Определение каждого нового типа начинается с 
идентификатора типа. За ним следует знак равенства, а далее - само определение, 
завершающееся точкой с запятой: 

 type
<имя  типа 1>  =  <определение  типа 1>;
<имя  типа 2>  =  <определение  типа 2> ;
<имя  типа N>  =  <определение  типа N>; 

В качестве примера см. п. 3.2.4.
 В данном разделе будут описаны только простые типы данных, все остальные типы 
будут рассмотрены после описания переменных, констант и выражений.

3.2.  Простые типы данных
Простой тип определяет допустимое множество значений данных этого типа а также
 совокупность операций над ними.
 
В Turbo Pascal имеются следующие группы простых типов:
 - целые типы;   
 - перечисляемый тип;
 - логический тип; 
 - тип-диапазон;
 - символьный тип; 
 - вещественные типы.
 Все простые типы, за исключением вещественных, являются порядковыми типами. 
Для величин порядковых типов определены: следующее значение и предыдущее значение. 
Для величин порядковых типов определены стандартные процедуры и функции: Dec, Inc, 
Ord, Pred, Succ (см. п. 13.1). 

3.2.1. Целые типы
 В отличие от языка Паскаль, где определен единственный целый тип Integer, 
в Turbo Pascal имеется пять стандартных типов целых чисел: Shortint, Integer, 
Longint, Byte, Word. 
Характеристики этих типов приведены в табл. 2.

Таблица 2.        Целые типы данных
Тип	       Диапазон	             Формат   Размер в байтах
Shortint     -128 .. 127            Знаковый  	   1
Integer	    -32768 .. 32767         Знаковый       2
Longint	-2147483648 .. 2147483647   Знаковый       4
Byte	      0.. 255               Беззнаковый	   1
Word	      0.. 65535	            Беззнаковый	   2

3.2.2. Логический тип
 Стандартный логический тип Boolean (размер - 1 байт) представляет собой тип 
данных, любой элемент которого может принимать лишь два значения: True и False. 
При этом справедливы следующие соотношения:
 
 False < True	        Succ (False) = True
 Ord (False) = 0	Pred(True) = False
 Ord(True) = 1

 В Turbo Pascal 7.0 добавлено еще три логических типа ByteBool (размер - 1 байт), 
WordBooL (размер - 2 байта) и LongBool (размер - 4 байта). Они введены для 
унификации с другими языками программирования и со средой Windows. 
Отличие их от стандартного типа Boolean заключается в фактической величине 
параметра этого типа, соответствующей значению True. Для всех логических типов 
значению False соответствует число 0, записанное в соответствующее количество 
байтов. Значению же True для типа Boolean соответствует число 1, записанное 
в его байт, а для других типов значению True соответствует любое число, 
отличное от нуля (хотя функция Ord в этом случае дает значение 1).

3.2.3. Символьный тип
 Стандартный символьный тип Char определяет полный набор ASCII-символов. 
Функция Ord от величины типа Char дает код соответствующего символа. 
Сравниваются величины символьного типа по своим кодам.
 
3.2.4. Перечисляемый тип
 Перечисляемый тип не является стандартным и определяется набором идентификаторов, 
с которыми могут совпадать значения параметра. Список идентификаторов указывается 
в круглых скобках, идентификаторы разделяются запятыми:
 
type
<имя типа> = (<идентификатор 1, идентификатор 2, ... , идентификатор М>);
 
 Важно, в каком порядке перечислены идентификаторы при определении типа, т. к. 
первому идентификатору присваивается порядковый номер 0, второму - 1 и т. д. 
Один и тот же идентификатор можно использовать в определении только одного 
перечисляемого типа. Функция Ord от величины перечисляемого типа дает порядковый 
номер ее значения. 
 
 Пример.  Перечисляемый тип,
type  Operat =   (Plus,   Minus,   Mult,  Divide);

Логический тип является частным случаем перечисляемого типа:
type Boolean = (False, True);

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

type
<имя типа> = <мин. значение> .. <макс. значение>;
 
 Минимальное значение при определении такого типа не должно быть больше 
максимального. 
 
 Пример.  Определение типов-диапазонов.
 
type
Dozen =  1..12;	{числа от   1  до  12}
AddSub = Plus..Minus;	{операции  сложения  и вычитания}

3.2.6. Вещественные типы
 В отличие от стандарта языка Паскаль, где определен только один вещественный 
тип Real, в Turbo Pascal имеется пять стандартных вещественных типов: 
Real, Single, Double, Extended, Comp. 
Характеристики этих типов см. в табл. 3. 
 
 Таблица 3. Вещественные типы данных
Тип	    Диапазон	         Число	         Размер
                             значащих цифр	в байтах
Real	 2.9*10-39..1.7*1038	11-12	           6
Single	 1.5*10-45..3-4*1038	7-8	           4
Double	 5.0*10-324..1.7*10308	15-16              8
Extended 3.4*10-4932..1.1*104932	19-20	 	   10
Comp	-263.. +263-1     	19-20		   8
 Тип Comp фактически является типом целых чисел увеличенного диапазона, однако 
порядковым не считается.
 Типы Single, Double, Extended и Comp можно использовать в программах только при 
наличии арифметического сопроцессора или при включенном эмуляторе сопроцессора 
(см. пп. 17.5.8 и 17.7.1)
Rambler's Top100
Hosted by uCoz