Скалярные типы данных
Целочисленные типы данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать в памяти от 1 до 4 байт в ТР и от 1 до 8 байт в Delphi. Эта группа типов обозначает множества целых чисел в различных диапазонах. Имеется пять (девять) целых типов, различающихся допустимым диапазоном значений и размером занимаемой оперативной памяти.
Перед числом может находиться знак "+" или "–". Если знак отсутствует, по умолчанию число считается положительным.
Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системах счисления. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак $. Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF:
Например, 546 – целое десятичное число, $1FF – шестнадцатеричное число
Целые типы в ТР обозначаются идентификаторами Integer, Byte, Shortint, Word, Longint. Их характеристики приведем в таблице.
Тип |
диапазон значений |
размер памяти |
Byte |
0 .. 255 |
1 байт |
Shortint |
–127 .. 127 |
1 байт |
Integer |
–32768 .. 32767 |
2 байта |
Word |
0 .. 655553 |
2 байта |
Longint |
–2147483648..2147483647 |
4 байта |
Целые типы в Delphi обозначаются идентификаторами Integer, Byte, Shortint, Word, Longint, SmallInt, Cardinal, Int64, LongWord. Их характеристики приведем в таблице.
Тип |
диапазон значений |
размер памяти |
Byte |
0 .. 255 |
1 байт |
Shortint |
–127 .. 127 |
1 байт |
Word |
0 .. 655553 |
2 байта |
SmallInt |
–32768 .. 32767 |
2 байта |
Cardinal |
0 .. 4294967295 |
4 байта |
LongWord |
0 .. 4294967295 |
4 байта |
Integer |
-2147483648..2147483647 |
4 байта |
Longint |
–2147483648..2147483647 |
4 байта |
Int64 |
-263 .. 263-1 |
8 байт |
Наибольшая производительность центрального процессора и операционной системы достигается при использовании типов Integer и Cardinal. Все остальные типы, кроме Int64, представляют собой подмножества типов Integer и Cardinal.
Пример.
Var
A1,A2 : byte;
y1: word;
Над целыми значениями допустимы следующие операции:
Четыре арифметические операции:
+ сложение;
– вычитание;
* умножение;
/ деление.
2. Две дополнительные операции:
div деление нацело (отбрасывается дробная часть);
mod взятие остатка от целочисленного деления.
При работе с целочисленным типом данных все перечисленные операции (кроме деления) дают целый результат. Операция деления всегда дает вещественный результат.
Вещественные типы.
Вещественные десятичные числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой. Если десятичная точка отсутствует, число считается целым. Перед числом может находиться знак "+" или "–". Если знак отсутствует, по умолчанию число считается положительным.
Пример.
123.456 – положительное вещественное число
–12.345 – отрицательное вещественное число
Вещественные десятичные числа в форме с плавающей точкой представляются в экспоненциальном виде: mE+p, где m – мантисса (целое или дробное число с десятичной точкой), Е – означает "десять в степени", р – порядок (целое число).
Пример.
1.23Е+02 = 1.23 * 10^2 = 123 –10E–03 = –10 * 10^(–3) = –0.01
Поскольку данные в компьютере хранятся в виде двоичных кодов, то действительные числа представляются приближенно, хотя и с большой степенью точности.
Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях и занимают в памяти от 4 до 10 байт. Turbo Pascal и Delphi допускают представление вещественных значений в виде как с плавающей, так и с фиксированной точкой.
Turbo Pascal поддерживает пять различных вещественных типов. Они именуются идентификаторами: Real, Single, Double, Extended и Comp и имеют следующие характеристики:
Тип |
диапазон значений |
число цифр мантиссы |
размер памяти |
Real |
2.9E–39 .. 1.7E38 |
11 – 12 |
6 байт |
Single |
1.5Е–45 .. 3.4Е38 |
7 – 8 |
4 байт |
Double |
5.0Е–324 .. 1.7Е308 |
15 – 16 |
8 байт |
Extended |
3.4Е–4932 .. 1.1Е4932 |
19 – 20 |
10 байт |
Comp |
–2Е+63 .. +2Е+63–1 |
10 – 20 |
8 байт |
Помни:
Хотя тип Comp считается вещественным типом, он содержит только целые числа из весьма значительного диапазона, которые представляются в вычислениях как вещественные (с нулевой мантиссой).
Все вещественные типы, кроме Real, могут использоваться в программе, только если в конфигурации персонального компьютера имеется математический сопроцессор Intel 8087/80287. Для корректной компиляции программы, использующей эти типы, необходимо установить директиву компилятора { $N+ }.
Delphi поддерживает семь различных вещественных типов. Они именуются идентификаторами: Real, Real48, Single, Double, Extended и Comp, Currency и имеют следующие характеристики:
Тип |
диапазон значений |
число цифр мантиссы |
размер памяти |
Real |
5.0Е–324 .. 1.7Е308 |
15 – 16 |
8 байт |
Real48 |
2.9E–39 .. 1.7E38 |
11 – 12 |
6 байт |
Single |
1.5Е–45 .. 3.4Е38 |
7 – 8 |
4 байт |
Double |
5.0Е–324 .. 1.7Е308 |
15 – 16 |
8 байт |
Extended |
3.6Е–4951 .. 1.1Е4932 |
19 – 20 |
10 байт |
Comp |
–2Е+63 .. +2Е+63–1 |
10 – 20 |
8 байт |
Currency |
- 922337203685477.5808 .. ..922337203685477.5808 |
19 – 20 |
8 байт |
Наибольшая производительность центрального процессора достигается при использовании типа Real.
Тип Real48 предназначен для только для совместимости с ранними версиями Delphi. При его использовании производительность процессора минимальна.
Тип Extended позволяет производить расчеты с максимальной точностью. Более того, математический сопроцессор выполняет операции с действительными числами, представленными в формате Extended. Если используются типы Real, Single или Double, то результат вычислений усекается до соответствующей точности.
Типы Comp и Currency используются для бухгалтерских расчетов. В типе Comp дробная часть отсутствует, а в типе Currency она ограничена четырьмя знаками. В оперативной памяти ПК значения этих типов представляются как данные целого типа, занимающие 8 байт. Это позволяет минимизировать ошибки округления в денежных расчетах. С другой стороны, значения типов Comp и Currency совместимы со значениями других вещественных типов, т.е. над ними могут выполняться все вещественные операции и им можно присваивать значения переменных и выражений других вещественных типов. Но при этом будет происходить усечение значений до четырех знаков в дробной части для типа Currency и полное отбрасывание дробной части для типа Comp.
Пример.
Var
Summ1: single;
koren: double;
Над значениями вещественных типов допустимы следующие четыре арифметические операции:
+ сложение;
– вычитание;
* умножение;
/ деление.
Все они дают вещественный результат, если хотя бы один операнд вещественный.
Помни:
Операция возведения в степень в ТР не поддерживается.
Литерный (символьный) тип определяется множеством символов кодовой таблицы ЭВМ.
В ТР используется кодовая таблица – ASCII (American Standard Code For Information Interchange – американский стандартный код для обмена информацией), используемая в операционной системе MS DOS. Это множество состоит из 256 различных символов, упорядоченных определенным образом, и содержит символы заглавных и строчных букв, цифр, и различных других символов, включая специальные управляющие символы. Допускаются некоторые отклонения от стандарта ASCII, в частности, при наличии соответствующей системной поддержки это множество может содержать буквы русского алфавита.
Для переменной литерного типа требуется один байт. Литерный тип обозначаются идентификатором Char.
В Delphi имеется три символьных типа:
-
Тип
Размер в байтах
ANSIChar
1
WideChar
2
Char
1
Тип ANSIChar представляет собой так называемые ANSI-символы. Это символы, которые используются в операционных системах семейства Windows. Каждому символу соответствует число – код ANSI (American National Standard Institute – Американский национальный институт стандартизации. В нем был разработан этот код). В таблице кодов содержится 256 символов, которые кодируются числами от 0 до 255. Символы с номерами о 0 до 31 являются управляющими и не имеют графического изображения.
Тип WideChar предназначен для хранения так называемых Unicode-символов, которые в отличие от ANSI-символов занимают в памяти 2 байта, поэтому кодируются числами от 0 до 65535. эти символы используются для представления различных азиатских алфавитов. Первые 256 символов в стандарте Unicode совпадают с символами ANSI.
Тип Char в Delphi эквивалентен типу ANSIChar и обеспечивает наибольшую производительность.
Консольное приложение в Delphi выполняется под управлением операционной системы MS DOS, которая эмулируется операционными системами семейства Windows. В отличие от Windows в MS DOS используется кодировка символов ASCII. Сравнивая таблицы символов ASCII и ANSI, можно заметить, что первые 128 символов с кодами 0..127 совпадают (цифры и латинские буквы), а остальные различны (буквы русского алфавита). Поскольку консольное приложение создаются в операционной системе Windows, а выполняется как программа MS DOS, то вывод на экран русских символов не возможен из-за различия в кодировках. Но, имея таблицы кодировок, можно написать функцию перекодировки символов.
Если символьное значение имеет графическое представление, то оно изображается соответствующим знаком, заключенным в одинарные кавычки (апострофы), например:
'a' 'A' 'H' ...
Пример.
Var
liter: char;
alfa, znak: char;
Булевский (логический) тип в представлен двумя значениями, представляющими логические истинностные значения: (истина/ложь). Эти значения обозначаются с помощью стандартных идентификаторов: True (истина) и False (ложь).
В ТР имеется один логический тип
-
Тип
диапазон значений
размер памяти
Boolean
True, False
1 байт
В Delphi имеется 4 логических типа:
-
Тип
диапазон значений
размер памяти
Boolean
True, False
1 байт
ByteBool
True, False
1 байт
WordBool
True, False
2 байта
LongBool
True, False
2 байта
Основным логическим типом в Delphi является Boolean. Остальные типы нужны для совместимости с логическими данными, используемыми в ОС Windows и некоторых других системах программирования, например, Visual C. Они используются, как правило, при вызове стандартных подпрограмм, имеющих параметры этого типа.
Над значениями булевского типа допустимы операции сравнения, причем считается, что
True > False.
Кроме того, имеются четыре стандартные логические операции, обозначаемые служебными словами:
and логическое умножение
or логическое сложение
xor сложение по модулю 2 (исключающее "или")
not логическое отрицание (унарная операция).