Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯВУ лекции.doc
Скачиваний:
18
Добавлен:
27.10.2018
Размер:
592.38 Кб
Скачать

Приведение типов

В языке Object Pascal существуют понятия эквивалентности и совместимости типов. Эти понятия необходимы для определения как данные одного типа они могут быть преобразованы в другой тип.

Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:

- Т1 и Т2 представляют собой одно и то же имя типа;

- тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:

type

T1 = Integer;

T2 = T1;

T3 = T2;

Типы T1,T2,T3 эквивалентны.

Данные эквивалентных типов могут быть автоматически преобразованы один в другой.

Менее строгие ограничения определены совместимостью типов. Например, типы T1 и T2 являются совместимыми, если:

- они эквивалентны;

- являются оба либо целыми, либо действительными;

- T1 - действительный, T2 - целый;

- T1 - интервальный, T2 - его базовый;

- оба интервальные с общим базовым;

- T1 - строковый, T2 – символьный;

- T1 - тип Variant, T2 - целый, вещественный, логический, символьный или строковой;

- T1 - класс, T2 – класс-наследник первого;

- оба указатели одного типа;

- оба процедурные с параметрами и возвращаемым результатом совместимого типа.

Данные типа T2 совместимого с типом T1 могут быть также автоматически преобразованы в тип T1, но возможна потеря части данных.

В Object Pascal ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. При приведении типа возможна потеря части данных.

Для приведения типа используется конструкция

<имя_типа>(<имя_переменной>|<значение>)

Например

integer('A')

представляет собой значение кода символа 'A' – целое число 65 в двухбайтном представлении,

byte(534)

даст значение 22, поскольку целое число 534 имеет тип word и занимает два байта, а тип byte занимает один байт, и в процессе приведения старший байт будет потерян.

Простые типы данных Целые типы данных

Целые типы определяют данные, которые реализуются подмножеством целых чисел, допустимых в ЭВМ.

Целые типы в TurboPascal

Тип

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

Требуемая память, байт

Shortint

-128 .. 127

1

Integer

-32768 .. 32767

2

Longint

-2147483648 .. 2147483647

4

Byte

0 .. 255

1

Word

0 .. 65535

2

Целые типы в ObjectPascal

Тип

Диапазон

Требуемая память,байт

Integer

–2147483648..2147483647

4

Cardinal

0..4294967295

4

Shortint

–128..127

1

Smallint

–32768..32767

2

Longint

–2147483648..2147483647

4

Int64

–2^63..2^63–1

8

Byte

0..255

1

Word

0..65535

2

Longword

0..4294967295

4

Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, деление, получение остатка от деления. Знаки этих операций:

+ - * div mod

Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления - остаток от деления целых. Например:

17 div 2 = 8, 3 div 5 = 0.

17 mod 2 = 1, 3 mod 5 = 3.

Операции отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE ( истина или ложь ).

В языке ObjectPascal имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=, меньше или равно <=, больше >,меньше <.

К аргументам целого типа применимы следующие стандартные функции, результат выполнения которых имеет целый тип:

Abs(X), Sqr(X), Succ(X), Pred(X),

и которые определяют соответственно абсолютное значение Х, Х в квадрате, Х+1, Х-1.

Следующая группа стандартных функций для аргумента целого типа дает вещественный результат:

Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X).

Эти функции вычисляют синус, косинус и арктангенс угла, заданного в радианах, логарифм натуральный, экспоненту и корень квадратный соответственно.

Результат выполнения функции проверки целой величины на нечетность Odd(X) имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный:

X=5 Odd(X)=TRUE , X=4 Odd(X)=FALSE.

Для быстрой работы с целыми числами определены процедуры:

Inc(X) X:=X+1

Inc(X,N) X:=X+N

Dec(X) X:=X-1

Dec(X,N) X:=X-N