Тип определяет множество значений, которые могут принимать объекты профаммы (константы и переменные), а также совокупность операций, допустимых над этими значениями.
Например, значения 1 и 3 относятся к целочисленному типу, и над ними можно выполнять любые арифметические операции. Значения 'отличная' и 'учеба' принадлежат к строковому типу и над ними можно выполнять только одну операцию — склеивания, сцепления, или конкатенации текста (обозначается через +).
Все типы данных, используемые в Turbo Pascal, можно разделить на две большие группы: скалярные (простые) и структурированные (составные) (см.рис. 2.1). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские (перечисляемый и интервальный). Стандартные типы предлагаются программисту разработчиками Turbo Pascal. К ним относятся: целочисленные, вещественные, символьный (литерный), логический (булевский) и указатели. Структурированные типы имеют в своей основе скалярные типы данных. К структурированным относятся: строки, массивы, множества, записи и файлы.
Целочисленные типы, символьный, логический и пользовательские типы данных (перечисляемый и интервальный) образуют группу так называемых порядковых типов, имеющих большое значение.
Тип данных очень важен при выделении памяти под переменные, поскольку каждому типу соответствует строго определенный размер ячейки памяти. В любом случае этот размер ограничен, следовательно, все типы данных имеют ограниченный диапазон значений (см. табл.2.1, 2.2, 2.3). Этот факт не согласуется с нашими математическими представлениями о числовых множествах. Тем не менее, с ним приходится считаться.
Рис. 2.1. Структура типов данных
 меню        вверх
Целые и вещественные типы предназначены для представления числовых данных. В математике рассматривается бесконечное множество целых чисел. Целый тип в языке Turbo Pascal — это интервал целых чисел (табл. 2.1). Операции над целыми числами определены лишь тогда, когда исходные данные (операнды) и результат лежат в этом интервале. Иначе возникает ситуация, называемая переполнением. За исключением переполнения все операции над аргументами целого типа выполняются точно.
Таблица 2.1. Целочисленные типы данных
Название целого типа | Диапазон возможных значений | Память, байт |
byte (байтовый) | 0 — 255 | 1 |
shortint (короткий целый) | -128 — 127 | 1 |
integer (целый) | -32 768 - 32 767 | 2 |
word (слово) | 0 — 65 535 | 2 |
longint (длинный целый) | -2 147 483 648 - 2 147 483 647 | 4 |
В математике вещественные числа — это бесконечное непрерывное множество чисел. В вычислительных машинах вещественные числа представляются конечным множеством значений (табл. 2.2).
Например, внутреннее представление типа real может дать 248 = = 281 474 976 710 656 (более чем 1014) возможных комбинаций значащих разрядов в отведенных для него 6 байтах, или 48 битах. Это очень большое число, но все же оно не сопоставимо с множеством вещественных чисел.
Таблица 2.2. Вещественные типы данных
Название вещественного типа | Диапазон возможных значений | Количество значащих цифр | память, байт |
single (с одинарной точностью) | 1,5е-45 - 3,4е38 | 7 - 8 | 4 |
real (вещественный) | 2,9е-39 - 1,7е38 | 11 - 12 | 6 |
double (с двойной точностью) | 5,0е-324 - 1,7е308 | 15 - 16 | 8 |
extended (с повышенной точностью) | 3,4е-4932 - 1,1е4932 | 19 - 20 | 10 |
соmр (сложный) | -2е63+1 - 2е63-1 | 19 - 20 | 8 |
Логический (булевский) тип имеет всего два значения: true (да — истина, 1) и false (нет — ложь, 0), причем данные значения упорядочены, т. е. в операциях сравнения true > false (табл. 2.3).
Символьный (литерный) и строковый типы представляют данные, являющиеся символами и их последовательностями — строками (см. табл. 2.3). В памяти компьютера символы хранятся в виде их числовых кодов. Числовые коды преобразуются в буквы и другие символы лишь в момент их вывода на экран или принтер. Соответствие между символом и его кодом задается при помощи кодовой таблицы, которая находится в памяти компьютера и используется при выводе символов.
Таблица 2.3. Символьный и логический (булевский) типы данных
Тип | Диапазон возможных значений | Память, байт |
char (символьный, литерный) | Символы кодовой таблицы | 1 |
boolean (булевский) | true, false | 1 |
Переменные, описываемые любым из типов 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).
 предыдущая         меню        вверх         следующая