|
В языке программирования за каждым простым типом закреплено имя. Любой простой тип можно задать перечислением констант этого типа. Простые типы, которые имеют счетное множество констант, называются ПОРЯДКОВЫМИ. Например, в 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(имя_типа) возвращают соответственно минимальное и максимальное значения констант порядкового типа. ЦЕЛЫЕ ТИПЫ. Мощность типа WORD POWER(WORD) = 65536 = 216. Размер элемента хранения переменной данного типа – SIZEOF(WORD) = 2 (байта), т.к. 16 двоичных разрядов достаточно для того, чтобы закодировать любое значение из диапазона 0…65535. Положительные числа в элементе хранения типа INTEGER кодируются так же как и в элементе хранения типа WORD. Отрицательные числа в элементе хранения типа INTEGER представляются в дополнительном коде. Дополнительный код получается следующим образом: представить отрицательное число в виде двоичного значения со знаком, инвертировать двоичное представление числа, оставивив знаковый разряд без изменения, прибавить 1 к инвертированному числу, добавить знаковый бит к результату, полученному на предыдущем шаге. Например, представим число –6 в дополнительном коде. ЛОГИЧЕСКИЙ ТИП. Значениями логического типа может быть одна из предварительно объявленных констант 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. Например, Type Note = (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) внутри базового типа. Вещественные типы Порядковые типы конечны и счетны, значения их всегда сопоставимы с рядом целых чисел, и, следовательно кодируются абсолютно точно. Множество констант ВЕЩЕСТВЕННЫХ ТИПОВ бесконечно, значения вещественных типов определяются с некоторой конечной точностью, зависящей от внутреннего формата вещественных чисел.
|