Целые типы Символьные типы Булевы типы Перечислимые типы Поддиапазонные типы Действительные типы Любой реально существующий тип данных, каким бы сложным
он ни казался на первый взгляд, представляет собой простые составляющие,
которыми процессор может манипулировать. В Object Pascal эти простые типы
данных разбиты на две группы: порядковые, представляющие данные разных
объемов, которыми процессор может легко манипулировать, и действительные,
представляющие приближенно математические действительные числа. Разделение
типов на порядковые и действительные несколько условно. Точно так же простые
данные можно было бы разделить на числа и не числа. Однако в языке Object
Pascal порядковые и действительные данные трактуются по-разному, и такое
разделение даже полезно.
Порядковые типы
Для всех порядковых типов в Object Pascal существует операция задания типа для преобразования целых значений в значения соответствующих порядковых типов. Если Т — имя порядкового типа, а Х — целое выражение, то Т (X) воз-вращает значение Т с порядковым номером X.
Совет: Программисты, работающие на С и C++, для приращения или уменьшения значений переменных привыкли заметку использовать операторы "++" и "--", возвращающие следующее и предыдущее значения. Программисты Delphi всегда разбивают эти операции на более простые составляющие с помощью функций Pred, Succ. Dec и Inc.
В переменных целых типов информация представляется в виде целых чисел, т.е. чисел не имеющих дробной части. Определенные в Object Pascal целые типы подразделяются на физические (фундаментальные) и логические (общие). При программировании удобнее использовать логические целые типы, которые задают объем переменных в зависимости от типа микропроцессора и операционной среды таким образом, чтобы достигалась максимальная эффективность. Физические целые типы следует применять лишь в тех случаях, когда в первую очередь важны именно диапазон значений и физический объем переменной. В Object Pascal определены следующие целые типы.
Shortint Smallint Longint Byte Word Cardinal Обратите внимание, что один из этих целых типов назван
именно целым (integer). Это может иногда приводить к путанице, но мы легко
сможем ее избежать, применяя термин целый к. группе типов, a integer —
к конкретному типу, определяемому в программе этим ключевым словом. Переменные
физических целых типов имеют разные диапазоны значений в зависимости от
того, сколько байтов памяти они занимают (что равно значению, возвращаемому
функцией SizeOf для данного типа). Диапазоны значений для всех физических
типов перечислены в табл. 1.2.
Диапазоны значений логических целых типов (Integer и Cardinal) определяются совершенно иным образом. Как видно из табл. 1.3, они никак не связаны с диапазонами соответствующих физических типов. Обратите внимание, что в Delphi по умолчанию задано 32-разрядное представление.
Совет: В С и C++ для целых значений определены типы int, short int (или просто short) и long int (или просто long). Тип int из C/C++ соответствует типу Integer из Delphi, a long из C/C++ — Longint из Delphi. Однако Shortint из C/C++ соответствует в Delphi не Shortint, a Smalltlnt. Эквивалент Shortint из Delphi в C/C++— это signed char. Тип unsigned char в C/C++ соответствует типу Byte из Delphi. В C/C++ существует еще тип unsigned long, аналога которому в Delphi нет. Над целыми данными выполняются все операции, определенные
для порядковых типов, но с ними все же удобнее работать как с числами,
а не с "нечисленными порядковыми типами". Как и "живые" числа, данные целых
типов можно складывать (+), вычитать (-) и умножать (*). Однако некоторые
операции и функции, применяемые к данным целых типов, имеют несколько иной
смысл.
Совет: Будьте внимательны при перенесении численных выражений из одного языка в другой. В Basic, например,vфункция SQR вычисляет квадратный корень. В C/C++ целое деление обозначается косой чертой (/). В Delphi косая между двумя целыми даст действительный результат с плавающей запятой. Символьные типы
Логический символьный тип именуется char. В классическом языке Pascal char— единственный символьный тип. В Delphi char всегда соответствует физическому типу данных AnsiChar. У американских программистов ассоциация символа с однобайтовой ячейкой памяти укоренилась за долгие годы настолько, что им зачастую просто не приходит в голову, что можно использовать другие схемы кодирования. Однако дискуссии по интернационализации программ в Internet и World Wide Web могут существенно изменить их отношение к проблеме объема символьных данных. Применяя логический тип char, следует делать реализации для других микропроцессоров и операционных систем, в которых char может определяться как WideChar. При написании программ, которые могут обрабатывать строки любого размера, для указания этого размера рекомендуется применять функцию SizeOf, не задавая ее жестко постоянной. Функция Ord (С), где С — любая переменная символьного типа, возвращает целое значение, которым символ С представлен в памяти.
Совет: Процессор не различает типы char, определенные в C/C++ и Delphi. Однако функционально каждый из этих языков трактует данный тип совершенно по-разному. В C/C++ это целый тип, переменной которого можно присваивать целые значения. Переменной int можно присвоить символьное значение, а переменной char — целое. В Delphi символьные типы жестко отделены от численных. Для присвоения численному значению символьного здесь необходимо воспользоваться функцией Ord. В языке Basic один символ представляется так же, как и строка символов. Функция Chr из Delphi эквивалентна функции CHR$ из Basic. Функция Ord из Delphi, возвращающая код ANSI символьной переменной, подобна функции A3 С из Basic, аргумент которой представляет односимвольную строку. Булевы типы
Переменным типа Boolean можно присваивать только значения True (истина) и False (ложь). Переменные ByteBool, WordBool и LongBool могут принимать и другие порядковые значения, интерпретируемые обычно как False в случае нуля и True — при любом ненулевом значении.
Совет: Булевы типы в Delphi можно сравнить с типом LOGICAL языка FORTRAN. В Basic, С и C++ булевы типы как таковые отсутствуют. Булевы выражения в этих языках применяются точно так же, как во всех остальных, однако результаты этих выражений интерпретируются не как значения отдельного типа, а как целые числа. Как в Basic, так и в C/C++ булевы выражения дают численные результаты, интерпретируемые как False в случае 0 и True — в случае любого ненулевого значения. Это совместимо с порядковыми значениями булевых выражений в Delphi. В C/C++ простые сравнения дают результат 1 (True) или 0 (False). Это эквивалентно булевым значениям Delphi. Только результат сравнения в Delphi выводится как булевый, а не целый. В большинстве случаев типу Boolean из Delphi соответствует тип char в C/C++. В Basic зарезервированы слова TRUE (эквивалентно константе -1) и FALSE (эквивалентно константе 0). В Basic TRUE меньше FALSE, в Delphi, наоборот, False меньше True. Перечислимые типы
Совет: В С и C++ есть тип enema, аналогичный перечислимому типу Delphi. Но в этих языках можно произвольно присваивать идентификаторам постоянные значения. В Delphi же соответствие имен и их значений фиксиро-вано: первому имени присваивается значение 0, каждому последующему — на единицу больше. В С тип enum применяется лишь как средство быстрого определения набора целых постоянных. В C++ объявленные в перечислимом типе идентификаторы можно присваивать только переменным того же типа. Поддиапазонные типы
Type subrange type = low value...high value; Поддиапазонные переменные сохраняют все особенности
исходного типа. Единственное отличие состоит в том, что переменной поддиапазонного
типа можно присваивать только значения, входящие в заданный поддиапазон.
Контроль за соблюдением этого условия задается командой проверки диапазона
(range checking).
Действительные типы
Совет: Тип Real предназначен для совместимости с ранними версиями Delphi и Borland Pascal. Формат этого типа неудобен для семейства процессоров Intel, поэтому операции с типом Real выполняются несколько медленнее операций над остальными действительными типами. Целые типы представляют целые числа, т.е. числа,
дробная часть которых равна нулю. Разница между двумя неодинаковыми целыми
числами не может быть меньше единицы. Именно благодаря этому целые числа
применяются для обозначения дискретных величин, независимо от того, имеют
ли реальные объекты какое-либо отношение к числам. Действительные типы
предназначены для представления чисел, которые могут иметь дробную часть,
поэтому они полезны для представления величин, которые могут быть довольно
близкими, почти непрерывными.
Совет: Будьте внимательны при переносе численных выражений из одного языка в другой. В Basic функция SQR вычисляет квадратный корень, а функция Sqr из Delphi — квадрат числа. Для вычисления квадратного корня в Delphi применяется функция Sqrt. |
|---|
| Операция | Описание |
| Low (T) | Минимальное значение порядкового типа Т |
| High(T) | Максимальное значение порядкового типа Т |
| Ord(X) | Порядковый номер значения выражения порядкового типа. Для целого выражения — просто его значение. Для остальных порядковых типов Ord возвращает физическое представление результата выражения, трактуемое как целое число. Возвращаемое значение всегда принадлежит одному из целых типов |
| Pred(X) | Предыдущее по порядку значение. Для целых выражений эквивалентно Х-1 |
| Succ(X) | Следующее по порядку значение. Для целых выражений эквивалентно Х+1 |
| Dec(V) | Уменьшает значение переменной на 1. Эквивалентно V := Pred(V) |
| Inc(V) | Увеличивает значение переменной на 1. Эквивалентно V := Succ(V) |
| На правах рекламы: |
В конце февраля 2009 года в продаже на Amazon появилось долгожданное устройство для чтения электронных книг Kindle 2. Это событие вызвало бурю негодов
Электронная читалка - вещь очень хрупкая. Если с ней обращаться не правильно - она может сломаться. Чтобы этого не случилось, нужно придерживаться лиш
Большинство книг в сети интернет распространяется в формате FB2 (Fiction Book). Этот формат очень удобен для чтения. Файлы, в нем созданные, отличаютс
Популярность электронных книг у читателей неуклонно растет. Для доказательства этого мы провели маленький эксперимент. Из 10 людей, читающих в метро,
Файлы формата FB2 часто можно увидеть среди огромнейшего разнообразия текстовых форматов. Такая высокая популярность объясняется его предназначением.
Первую версию формата PDF (Portable Document Format) еще в 1993 году разработала фирма Adobe Systems. В 2006 году она уже разработала версию 1.7, а с
Фирма Apple порадовала пользователей iPad, выпустив под него красивую и удобную читалку iBooks.