Стандартные типы данных
Память ЭВМ представлена последовательностью ячеек – машинных слов. Каждое слово имеет свой адрес в памяти ЭВМ и, в свою очередь, состоит из одного или нескольких байт. Для увеличения удобства обращения с данными в языках высокого уровня предусмотрен стандартный набор типов данных. Тип данных – характеристика множества значений, которые могут принимать переменные этого типа.
Традиционно, типы данных подразделяются на несколько подвидов:
а) логический – (boolean). Выражение логического типа может принимать всего два значения, соответствующие логической истине и логической лжи. В различных языках принят разный синтаксис обозначения логических констант. Так, логическая истина
обозначается «1», «.T.», «true», «истина», «да». В свою очередь, ложь
может быть обозначена «0», «.F.», «false», «ложь», «нет». В языке Pascal в качестве логических констант приняты «false» и «true».
Понятия «истина» и «ложь» используются как взаимоисключающие и взаимодополняющие философские категории, облегчающие процесс понимания преобразований логических выражений, а так же построения алгоритмов, использующих эти выражения.
Значения логического типа возникают, в частности, в результате операций сравнения.
б) целочисленный – (integer). Переменные и выражения целочисленных типов предназначены для хранения числовой информации, если не требуются вычисления с использованием дробной части. Например, целочисленные переменные могут быть использованы для вычисления порядкового номера, количества счётных единиц и т.п. Следует помнить, что выражения, использующие только целочисленные расчёты, на многих процессорах выполняются значительно быстрее, чем расчёты, в которых присутствуют значения с дробной частью. В некоторых языках целочисленный тип делится на две разновидности – знаковый и беззнаковый. Значения первой разновидности типа позволяют представлять как положительные, так и отрицательные числа. Значения второй – только неотрицательные числа, но большие по абсолютной величине в два раза. Целочисленные типы данных в языке Pascal различаются и по размеру занимаемой памяти. Целочисленные переменные могут занимать 1, 2, 4 или 8 байт оперативной памяти.
В арифметических выражениях целочисленные значения различных разновидностей могут использоваться совместно. Единственное ограничение – результаты расчётов не должны вызывать выхода за пределы предусмотренного для заданной разновидности диапазона значений, называемого арифметическим переполнением.
В таблице 1 приведён краткий перечень целочисленных типов данных языка Pascal и диапазоны значений, соответствующие этим типам.
Таблица 1. Целочисленные типы данных языка Pascal
Название |
Размер (байт) |
Минимальное значение |
Максимальное значение |
byte |
1 |
0 |
255 (28-1) |
shortint |
1 |
-128 (-27) |
127 (27-1) |
word |
2 |
0 |
65535 (216-1) |
integer |
2 |
-32768 (-215) |
32767 (215-1) |
longint |
4 |
-2147483648 (-231) |
2147483647 (231-1) |
comp |
8 |
-263 |
263-1 |
Как видно из таблицы, увеличение размера переменной на один байт позволяет расширить диапазон значений в 256 раз.
Константы целочисленных типов представляют собой последовательности цифр без разделителей (!), перед которыми может быть установлен знак «—» - минус (например, 12, -40, 200000).
В некоторых случаях применяются константы шестнадцатеричной системы счисления. Перед такими константами должен быть установлен знак «$» (например, $0B0F5, $20, $7C).
в) вещественный – (real). Данный тип применяется, если вычисления не могут быть выполнены без использования дробных значений. Значения вещественного типа возвращаются многими стандартными математическими функциями и операцией деления.
Вещественные значения разделяются на разновидности согласно их точности и диапазону принимаемых значений. В памяти ЭВМ такие значения представлены в форме с плавающей точкой. Общий вид вещественного числа с плавающей точкой:
.
Здесь константа M
называется мантиссой
числа, а P – порядком. Обе константы могут принимать как отрицательные, так нулевые и положительные значения.
Основная проблема вычислений с использованием плавающей арифметики заключается в возможном переполнении и антипереполнении
переменной. Это происходит из- за того, что обе константы ограничены количеством разрядов. Если представить, что порядок содержит 3 десятичных разряда, то возможный диапазон значений положительных чисел примерно от 10-999
до 10999. Если умножить второе число на 10 – произойдёт переполнение, если разделить первое на 10 – антипереполнение, так как в обоих случаях не будет хватать разрядной сетки порядка для представления числа. Второе следствие переполнения – поглощение значений. Допустим, требуется сложить 10100 и 1070. Вопреки законам арифметики, сумма будет равна 10100, так как разрядности мантиссы не хватит для покрытия разницы в 30 порядков между этими слагаемыми.
На рис. 3 изображена числовая прямая, на которой отмечены интервалы возможных значений, принимаемых вещественными переменными.
Рис. 3. Числовая прямая вещественных значений
В таблице 2 приведён краткий перечень вещественных типов данных языка Pascal и положительные диапазоны значений, соответствующие этим типам. Отрицательные диапазоны симметричны положительным относительно нуля.
Таблица 2. Вещественные типы данных языка Pascal
Название |
Размер (байт) |
Минимальное значение |
Максимальное значение |
single |
4 |
1.5×10-45 |
3.4×1038 |
real |
6 |
2.9×10-39 |
1.7×1038 |
double |
8 |
5.0×10-324 |
1.7×10308 |
extended |
10 |
3.4×10-4932 |
1.1×104932 |
Константы вещественного типа в тексте программы могут быть представлены в формах с фиксированной и плавающей точкой. В первом случае имеет место традиционная запись десятичной дроби с разделителем – точкой (например, 23, 145.7, -206.322, 10.0001). Во втором – запись, включающая мантиссу и порядок, разделённые буквой «E» (например, 0.23E8, 1.56E-6, -3E10).
г) символьный – (char, string). Переменные строковых типов используются для хранения и обработки текстовой информации. Переменная типа char содержит одиночный символ, типа string – последовательность символов. Константы символьного типа бывают двух разновидностей, первая из которых подразумевает использование символа, вторая – кода символа. В первом случае символ должен быть заключён одинарные кавычки (апострофы) (например, ‘A‘, ‘e‘, ‘%‘), во втором – перед кодом символа должен быть указан знак «#» (например, #32, #65, #255). В строковых константах допускается комбинирование этих способов (например, ‘System‘#32‘error‘). Если сам символ апострофа входит в строковую константу, его следует продублировать или заменить на #39 (например, ‘7 o‘‘clock‘,‘7 o‘#39‘clock‘).