4.3. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВА-НИЕМ
СТРУКТУИРОВАННЫХ ТИПОВ ДАННЫХ
Выше было отмечено, что любые данные в языке Turbo Pascal характеризуется своими типами данных. Turbo Pascal характеризуется разветвленной структурой членов данных, которая приведена на следующем рисунке:
ТИПЫ |
|
|
|
|
|
|
|
|
|
|
Простые |
|
|
Порядковые |
|
Целый |
|
||
|
|
|
|
|
|
||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вещественные |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
Логический
|
Структуиро- |
|
|
|
|
|
|
|
|
|
ванные |
|
|
Массивы |
|
|
|
Символь- |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
ный |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Записи |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Указатели |
|
|
|
|
|
|
Перечис- |
|
|
|
|
|
|
|
|
|||
|
|
|
|
Множества |
|
|
|
ляемый |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
|
Строки |
|
|
|
|
|
|
|
|
|
|
|
|
Файлы |
|
|
|
|
|
|
Процедурные |
|
|
|
|
|
|
Тип- |
|
|
|
|
|
|
|
диапазон |
|
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Объекты |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4. 2. 9. Структура типов данных.
Кроме того, как было отмечено, в языке Turbo Pascal предусмотрен механизм создания новых типов данных, благодаря чему общее количество типов, используемых в программах (описатель Type) может быть сколь угодно большим.
Следует иметь в виду, что в Turbo Pascal имеются дополнительные членовые типы для целочисленных и вещественных типов. Так для целочисленных типов, помимо типа Integer имеются и ряд других (см. табл. 4. 2.1), где имеется, например, тип Long Int , который допускает значения в диапазоне от –2147483648 до 2147483647.
Для содержания переменной типа LongInt в памяти выделяется 32 бита, в отличие от 16 битов, выделяемых для переменных типа Integer.
Таким образом, в таблице 4.2.1 указан диапазон допустимых значений для каждого из типов. Два целочисленных типа, Byte и ShortInt, используют только по 8 битов для каждого из своих значений (отличаются только диапазоном). Тип данных Word допускает только положительные целочисленные значение, поэтому его наибольшее допустимое значение вдвое превышает такое же значение для типа Integer. Все операции Turbo Pascal, применяемые к данным типа Integer, могут использоваться и с данными типов, перечисляемых в таблице
4.2.1.
Целые типы данных |
Таблица 4.2.1. |
|
|
|
|
Тип |
|
Диапазон значений |
Integer |
|
-32768.. 32767 |
ShotInt |
|
-128.. 127 |
LongInt |
|
-2147483648.. 2147483647 |
Byte |
|
0.. 255 |
Word |
|
0.. 65535 |
Turbo Pascal также предоставляет несколько дополнительных типов данных для вещественных чисел. Эти типы перечислены в таблице 4.2.2, вместе с диапазоном допустимых значений, а также числом значащих разрядов для каждого из типов. Все операторы Turbo Pascal, применяемые к данным типа Real, могут использоваться и с данными, перечисленными в таблице
4.2.2.
Таблица 4.2.2
Вещественные типы данных
Тип |
Диапазон значений |
Число значащих |
||
|
|
|
цифр мантиссы |
|
Real |
2.9Е39.. |
1.7Е38 |
11 |
- 12 |
Single |
1.5Е45.. |
3.4Е38 |
7 |
- 8 |
Double |
5.0Е324.. |
1.7Е308 |
15 |
- 16 |
Extended |
1.9Е4951..1.1Е4932 |
19 |
- 23 |
|
|
|
|
|
|
Простые типы данных вместе со строковыми были рассмотрены выше. В данном разделе будут рассмотрены
структуированные типы данных и составление программ с их использованием.
Структуированные типы данных
Любой из структуированных типов (в языке Turbo Pascal их четыре: массивы, записи, множества и файлы) характеризуется множественностью образующих этот тип элементов, т. е. переменная …. Структуированного типа всегда имеет несколько компонентов. Каждый компонент, в свою очередь, может принадлежать структуированному типу, что позволяет говорить о возможной вложенности типов. В языке Turbo Pascal допускается произвольная глубина вложенности, однако суммарная длина любого из них во внутреннем представлении не должна превышать 65520 байт.
В целях совместимости со стандартным языком Pascal в Turbo Pascal разрешается перед описанием структуированного типа ставить служебное (зарезервированное) слов PACKED, предписывающее компилятору, по возможности, экономить память, отводимую под объекты структуированного типа; но компилятор фактически игнорирует его указание: «упаковка» данных в языке Turbo Pascal осуществляется автоматически везде, где это возможно.
Массивы
Массивы в языке Turbo Pascal во многом схожи с аналогичными видами данных в других языках программирования, отличительная особенность массивов заключается в том, их компоненты суть данные одного типа (возможно структуированного), эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием порядкового номера его индекса, например:
dig tipe = array [1
9] of char; Var
a: dig; Begin 
A[3]
= exp(3+5)/2; end
Следует иметь в виду, что если массив не передаѐтся в процедуру или функцию, то можно просто (в отличие от данного примера):
Var
a: array [1
9] of char;
Выше было приведено множество примеров программ с использованием одномерных и двумерных массивов.
Записи
Запись, как и массив - сложная переменная с несколькими фиксированными компонентами, являющиеся
родственными данными.
Однако, запись в отличие от массива, может содержать элементы, относящиеся к различным типам. Мы можем использовать запись для хранения разнотиповой (разнородной)