Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Delphi_1курс лекции / Пр 2 Типы данных.doc
Скачиваний:
49
Добавлен:
23.03.2015
Размер:
211.46 Кб
Скачать

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

Порядковыми (ordinal) типами называются те, в которых значения упорядочены и для каждого из них можно указать предшествующее и последующее значения. Для порядковых типов предопределен ряд функций:

Функция

Параметр

Возвращаемое значение

Замечания

Ord

Выражение порядкового типа

Порядковый номер значения данного выражения

Не воспринимает аргумент типа Int64

Pred

Выражение порядкового типа

Величина, предшествующая значению данного выражения

Нельзя использовать в саойствах, имеющих процедуру Write

Succ

Выражение порядкового типа

Величина, следующая за значением данного выражения

Нельзя использовать в свойствах, имеющих процедуру Write

High

Идентификатор порядкового типа или переменная порядкового типа

Максимально возможное значение

Используется также для типов коротких строк и массивов

Low

Идентификатор порядкового типа или переменная порядкового типа

Минимально возможное значение

Используется также для типов коротких строк и массивов

Для порядковых типов определены также процедуры инкремента Incи декремента Dec. Эти процедуры соответственно увеличивают или уменьшают на заданное значение порядковый значение своего аргумента.

Объявление

procedure Inc(var X [ ; N: Longint ] );

Процедура Inc - инкремент увеличивает значение передаваемого по ссылке аргумента X на 1, если аргумент N не задан, или на N, если этот аргумент задан. Переменная X должна быть порядкового типа, типа указатель или типа PChar (если используется расширенный синтаксис). Аргумент N, если он задан, должен быть выражением целого типа.

Таким образом, если Xцелого типа, то выражение Inc(X) эквивалентно оператору

X = X + 1;

а выражение Inc(X, N) - оператору

X = X + N;

Но процедура Inc выполняется быстрее и порождает более компактный код.

Таким образом, оператор

Inc(X) ;

эквивалентен оператору

X:= Succ(X);

а оператор

Dec(X);

эквивалентен оператору

X:= Pred(X);

Целые типы данных

Целые типы данных используются для представления целых чисел. Они отно-

сятся к целым порядковым типам. Ниже приведена таблица,

в которой перечисляются эти типы для Delphi 7 и даются диапазоны их изменений.

Тип

Диапазон значении

Требования к памяти

в байтах

Знаковый (может ли хранить отрицательные числа

Byte

0 255

1

нет

Word

0 + 65535

2

нет

Longword

0 4294967295

4

нет

Shortint

-128 127

1

да

SmallInt

-32768 32767

2

да

Cardinal

0 4294967295

4

нет

Integer

-2147483648 2147483647

4

да

Longlnt

-2147483648 2147483647

4

да

Int64

-263263-1

8

да

Родовыми типами (т.е. обеспечивающими максимальную производительность) среди перечисленных являются Integer и Cardinal. В настоящий момент типInteger эквивалентен типуLonglnt, но в последующих версиях это может быть изменено.

Приведенные в таблице затраты памяти могут изменяться от версии к версии и от системы к системе. Поэтому, если требуется достоверно знать затраты памяти для того или иного типа, следует пользоваться функцией SizeOf.

Арифметические операции над целыми числами возвращают тип Integer. Только если оба операнда имеют типInt64, результат тоже имеет типInt64.

Большинство стандартных процедур и функций, работающих с целыми аргументами, усекают аргументы типа Int64 до 4 байтов. Исключение составляют функции High, Low, Succ, Pred, Inc, Dec, IntToStr, IntToHex, полностью поддерживающие аргументы типаInt64. ФункцииRound, Trunc, StrToInt64, StrToInt64Def также возвращают результат типаInt64. ФункцияOrdк типуInt64применяться не может.

Если пытаться увеличить значение переменной, уже имеющей максимальное для данного типа значение, то произойдет циклический переход к минимальному значению. Аналогично при попытке уменьшить минимальное значение произойдет переход к максимальному значению. Например, поскольку тип Shortint может принимать значения только в диапазоне от —128 до 127, то код

var

I: Shortint;

I := High(Shortint) ;

I := I + 2;

даст в результате I= -127. Это произойдет, если не включена директива проверки диапазона целочисленных значений {$R+} и не установлена опция Range Checkingв окне опций проекта. Иначе в подобных случаях в процессе выполнения будет генерироваться исключение с сообщением Range check errorサ.

Соседние файлы в папке _Delphi_1курс лекции