Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



В языке программирования за каждым простым типом закреплено имя. Любой простой тип можно задать перечислением констант этого типа. Простые типы, которые имеют счетное множество констант, называются ПОРЯДКОВЫМИ. Например, в PASCAL множество натуральных чисел 0,1,2,…,65535 образует тип WORD. Множество целочисленных констант в диапазоне –32768…32767 образует тип INTEGER. Соответствие между константами порядкового типа и их номерами в множестве констант типа устанавливается порядком перечисления констант.

Множество операций по обработке данных простых типов встроено в язык программирования. Для порядковых типов это операции сложения, вычитания, умножения, деления, инкремента, декремента, определения предшествующего и следующего элемента в множестве констант. К любому порядковому типу применима функция ORD(X), которая вычисляет порядковый номер объекта X. Для целых типов функция ORD(X) возвращает само значение X. Результатом ORD(X) является положительное целое число в диапазоне 0…1 для логического типа, 0…255 для символьного типа, 0…65535 для перечислимого типа.

Обозначим мощность типа POWER(имя_типа) (это наше собственное обозначение, в языках программирования подобная функция отсутствует). Для определения размера элемента хранения типа (в байтах) в языках программирования используется встроенная функция SIZEOF(имя_типа) или SIZEOF(имя_объекта_типа). Встроенные функции LOW(имя_типа) и HIGH(имя_типа) возвращают соответственно минимальное и максимальное значения констант порядкового типа.

ЦЕЛЫЕ ТИПЫ. Мощность типа WORDPOWER(WORD) = 65536 = 216. Размер элемента хранения переменной данного типа – SIZEOF(WORD) = 2(байта), т.к. 16 двоичных разрядов достаточно для того, чтобы закодировать любое значение из диапазона 0…65535. Например, число 2000 кодируется следующим образом:

2000 = 1024 + 512 + 256 + 128 + 64 + 16 = 210 + 29 + 28 + 27 + 26 + 24.


Ord(2000) = 2000.

Power(INTEGER) = 65536 = 216. Sizeof(INTEGER) = 2 (байта).

Положительные числа в элементе хранения типа INTEGER кодируются так же как и в элементе хранения типа WORD. Отрицательные числа в элементе хранения типа INTEGER представляются в дополнительном коде. Дополнительный код получается следующим образом:

представить отрицательное число в виде двоичного значения со знаком,

инвертировать двоичное представление числа, оставивив знаковый разряд без изменения,

прибавить 1 к инвертированному числу,

добавить знаковый бит к результату, полученному на предыдущем шаге.

Например, представим число –6 в дополнительном коде.

 
 


Ord(-6) = -6.

В таблице 1 приводятся названия целых типов, размер их элемента хранения и диапазон возможных значений, образующих множество констант типа.

Таблица 1. Целые типы

Название Размер элемента хранения, байт Множество констант
Byte   0…255
ShortInt   -128…127
Word   0…65535
Integer   -32768…32767
LongInt   -2147483648…2147483647

ЛОГИЧЕСКИЙ ТИП. Значениями логического типа может быть одна из предварительно объявленных констант FALSE (ложь) и TRUE (истина).

Power(BOOLEAN) = 2, Sizeof(BOOLEAN) = 1 (байт),

Ord(False) = 0, Ord(True) = 1.

СИМВОЛЬНЫЙ ТИП. Значениями символьного типа является множество всех символов компьютера. Каждому символу приписывается целое число в диапазоне 0..255. Это число служит кодом внутреннего представления символа. Первая половина символов с кодами 0..127 соответствует стандарту ASCII. Вторая половина символов с кодами 128..255 не ограничена жесткими рамками стандарта и может меняться на компьютерах разных типов.

Power(CHAR) = 256, Sizeof(CHAR) = 2 (байта), Ord(‘F’) = 70;

ПОЛЬЗОВАТЕЛЬСКИЙ ПЕРЕЧИСЛИМЫЙ ТИП (обозначим Enum_Type) задает некоторое подмножество целого типа WORD и может рассматриваться как компактное объявление группы N именованных целочисленных констант со значениями 0,1,…65535. Например,

TypeNote= (do, re, mi, fa, sol, la, si).

Так, значение константы с именем fa и соответственно ее порядковый номер в множестве констант типа Note равны 3, т.е. Ord(fa) = 3.

Power (Enum_Type) = N, N <= 65536.

Sizeof(Enum_Type) = 1 + log2(Power (Enum_Type) – 1) DIV 8.

Power(Note) = 7, Sizeof(Note) = 1 (байт).

Для ограничения полного множества значений некоторого порядкового типа используются отрезки типа. ОТРЕЗОК ТИПА ИЛИ ДИАПАЗОН (обозначим Diap_Type) – упорядоченное подмножество полного множества значений любого порядкового типа, исключая диапазон. Тип-диапазон задается границами своих значений (обозначим их MIN и MAX) внутри базового типа:

Type Diap_Type = MIN.. MAX;

MIN = Low (Diap_Type), MAX = High (Diap_Type).

Power (Diap_Type) = MAX - MIN + 1 <= 65536.

Sizeof(Diap_Type) = 1 + log2(Power (Diap_Type) – 1) div 8.

Например,

Type Otr = 10..19;

Low (Otr) = 10, High(Otr) = 19, Ord(15) = 15,

Power(Otr) = 10, Sizeof(Otr) = 1 (байт).





Дата публикования: 2014-11-26; Прочитано: 303 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...