Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция №3. Система типов.doc
Скачиваний:
3
Добавлен:
13.11.2019
Размер:
174.59 Кб
Скачать

Скалярные типы данных

Целочисленные типы данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать в памяти от 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;

Над целыми значениями допустимы следующие операции:

  1. Четыре арифметические операции:

+ сложение;

вычитание;

* умножение;

/ деление.

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 логическое отрицание (унарная операция).