2.1.2. Типы данных

Тип. Классификация типов

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

Например, значения 1 и 3 относятся к целочисленному типу, и над ними можно выполнять любые арифметические операции. Значения 'отличная' и 'учеба' принадлежат к строковому типу и над ними можно выполнять только одну операцию — склеивания, сцепления, или конкатенации текста (обозначается через +).

Все типы данных, используемые в Turbo Pascal, можно разделить на две большие группы: скалярные (простые) и структурированные (составные) (см.рис. 2.1). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские (перечисляемый и интервальный). Стандартные типы предлагаются программисту разработчиками Turbo Pascal. К ним относятся: целочисленные, вещественные, символьный (литерный), логический (булевский) и указатели. Структурированные типы имеют в своей основе скалярные типы данных. К структурированным относятся: строки, массивы, множества, записи и файлы.

Целочисленные типы, символьный, логический и пользовательские типы данных (перечисляемый и интервальный) образуют группу так называемых порядковых типов, имеющих большое значение.

Тип данных очень важен при выделении памяти под переменные, поскольку каждому типу соответствует строго определенный размер ячейки памяти. В любом случае этот размер ограничен, следовательно, все типы данных имеют ограниченный диапазон значений (см. табл.2.1, 2.2, 2.3). Этот факт не согласуется с нашими математическими представлениями о числовых множествах. Тем не менее, с ним приходится считаться.

Рис. 2.1. Структура типов данных


 меню        вверх


Стандартные типы

Целые и вещественные типы предназначены для представления числовых данных. В математике рассматривается бесконечное множество целых чисел. Целый тип в языке Turbo Pascal — это интервал целых чисел (табл. 2.1). Операции над целыми числами определены лишь тогда, когда исходные данные (операнды) и результат лежат в этом интервале. Иначе возникает ситуация, называемая переполнением. За исключением переполнения все операции над аргументами целого типа выполняются точно.

Таблица 2.1. Целочисленные типы данных

Название целого типаДиапазон возможных значенийПамять, байт
byte (байтовый)0 — 2551
shortint (короткий целый)-128 — 1271
integer (целый)-32 768 - 32 7672
word (слово)0 — 65 5352
longint (длинный целый)-2 147 483 648 - 2 147 483 6474

В математике вещественные числа — это бесконечное непрерывное множество чисел. В вычислительных машинах вещественные числа представляются конечным множеством значений (табл. 2.2).

Например, внутреннее представление типа real может дать 248 = = 281 474 976 710 656 (более чем 1014) возможных комбинаций значащих разрядов в отведенных для него 6 байтах, или 48 битах. Это очень большое число, но все же оно не сопоставимо с множеством вещественных чисел.

Таблица 2.2. Вещественные типы данных

Название вещественного типаДиапазон возможных значенийКоличество значащих цифрпамять, байт
single (с одинарной точностью)1,5е-45 - 3,4е387 - 84
real (вещественный)2,9е-39 - 1,7е3811 - 126
double (с двойной точностью)5,0е-324 - 1,7е30815 - 168
extended (с повышенной точностью)3,4е-4932 - 1,1е493219 - 2010
соmр (сложный)-2е63+1 - 2е63-119 - 208

Логический (булевский) тип имеет всего два значения: true (да — истина, 1) и false (нет — ложь, 0), причем данные значения упорядочены, т. е. в операциях сравнения true > false (табл. 2.3).

Символьный (литерный) и строковый типы представляют данные, являющиеся символами и их последовательностями — строками (см. табл. 2.3). В памяти компьютера символы хранятся в виде их числовых кодов. Числовые коды преобразуются в буквы и другие символы лишь в момент их вывода на экран или принтер. Соответствие между символом и его кодом задается при помощи кодовой таблицы, которая находится в памяти компьютера и используется при выводе символов.

Таблица 2.3. Символьный и логический (булевский) типы данных

ТипДиапазон возможных значенийПамять, байт
char (символьный, литерный)Символы кодовой таблицы1
boolean (булевский)true, false1

Переменные, описываемые любым из типов byte, shortint, integer, word, longint, принимают только целые значения. Типы byte, word — беззнаковые.

Переменные, описываемые любым ИЗ ТИПОВ single, real, double, extended, comp принимают только вещественные значения — положительные и отрицательные.

Наиболее часто в простейших профаммах используются типы integer и real.


 меню        вверх


Формы записи вещественных чисел

Вещественные числа могут записываться двумя способами — в общепринятой и экспоненциальной форме. Общепринятая форма предполагает запись по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой, а не запятой, как в математике. Если точка отсутствует, число считается целым.

Запись вещественного числа в экспоненциальной форме (в форме с мантиссой и порядком) использует степень десяти (например: 25*e-3) и удобна для записи очень больших и очень маленьких чисел. При этом число изображается так: пишется мантисса, знак умножения опускается, вместо основания 10 пишется буква е, а следом указывается порядок (показатель степени). Буква е, предшествующая порядку, читается как "умножить на 10 в степени".

Например, 123,456 или -11,9 — общепринятая форма, а 5.18е+02 (518) или 10е-03 (0,01) — экспоненциальная.

Примеры неправильной записи вещественных чисел:

123 — отсутствует десятичная точка;

1,23 — запятая вместо точки;

0.123-03 — отсутствует обозначение порядка е;

12.34е1.2 — порядок числа должен быть целым.

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

• существуют очень маленькие значения, которые не могут быть представлены. Попытки их использования обычно приводят к возникновению ошибок;

• каждое вещественное число будет иметь приблизительно одинаковое количество значащих цифр в его представлении. Как следствие этого, ошибка для очень больших чисел будет больше по абсолютной величине;

• представители вещественных чисел неравномерно распределены внутри диапазона значений. Их плотность уменьшается с увеличением абсолютного значения числа.

Вещественные числа представлены приближенно, следовательно, арифметические действия над ними также выполняются приближенно.

Из изложенного следует несколько простых правил:

• вещественные числа нежелательно проверять на строгое равенство;

• необходимо проявлять осмотрительность при преобразовании вещественных чисел в целые и избегать вычитания почти равных чисел, т. к. могут возникнуть ошибки из-за потери многих значащих цифр;

• для уменьшения влияния ошибки округления при выполнении арифметических операций с вещественными числами необходимо иметь в виду следующее. Если складывается много чисел, то их нужно разбить на группы чисел, близких по абсолютному значению, произвести суммирование в группах, начиная с меньшего числа, после чего полученные суммы сложить, опять-таки начиная с меньшей. По аналогии с предыдущим получаются оценки для других арифметических операций и соответствующие практические рекомендации.

Вещественные числа в шестнадцатеричнои системе счисления записывать нельзя.


 меню        вверх


Запись строк символов

Последовательность символов, заключенная в апострофы, является строкой и относится к типу string. Причем сами апострофы не входят в состав строки, а лишь указывают на то, что все заключенные в них символы следует рассматривать как единое целое — строковую константу. Если в состав строки потребуется включить сам апостроф, достаточно написать его дважды подряд. В отличие от имен пользователя, строчные и прописные буквы в составе строки различаются. Под длиной строки понимают общее число символов в ней, включая символы пробела. Максимальная длина строки — 255 символов. Символы внутри строки нумеруются от 1 до значения длины строки.

Например, 'Язык программирования Turbo Pascal', '12345', 'А+В1'. Более подробно строки и действия над ними будут рассматриваться далее.


 меню        вверх


Порядковые типы

Следующие типы данных — целые, символьный и логический имеют ограниченное количество значений, идущих по порядку, поэтому эти типы принято называть порядковыми типами. Общим для них является то, что в компьютере они представляются целым числом. Вещественные типы, как уже указывалось выше, тоже принимают конечное число значений. Оно определяется форматом внутреннего представления вещественного числа в ЭВМ. Однако количество возможных значений вещественных типов настолько велико, что в компьютере невозможно сопоставить с каждым из них целое число (его номер). Все вещественные типы данных не являются порядковыми

В Turbo Pascal имеются два дополнительных пользовательских порядковых типа:

• интервальный (ограниченный) тип или диапазон;

• перечисляемый тип.

Они используются для того, чтобы еще больше ограничить количество значений, принимаемых переменными этого типа.

Интервальный тип задается своим минимальным и максимальным значениями и может быть определен на основе любого порядкового типа:

МинимальноеЗначение.. Максимальное значение

Например: 1..12 (номер месяца может принимать значения от 1 до 12) или 'а'..'z' (буквы латинского алфавита — от а до г).

Перечисляемый тип ограничен больше, он задается перечислением своих значений.

Например, в виде строковых констант: color=(red,blue,green,black).

В приведенном примере создается новый (нестандартный) тип данных color. Переменные этого типа могут принимать всего 4 значения: red, blue, green и black. Такая возможность создания новых пользовательских типов данных имеется в языке Turbo Pascal и некоторых других языках (см. разд. 2.2.6).

 предыдущая         меню        вверх         следующая

Hosted by uCoz