Типы

Тип – конструкция языка, используемая как образец для создания других элементов программы. Тип определяет для элемента программы:

  • Объем памяти для размещения. По типу компилятор определяет размер памяти для размещения значений элемента.
  • Допустимое множество операций над ними.

Типы могут быть:

  • Стандартные, не требуют объявления.
  • Пользователя. Тип пользователя должен быть объявлен в разделе типов type.

Все переменные имеют тип. FPC поддерживает такой же набор типов, как и Turbo Pascal, и еще некоторые типы из Delphi. Программист может объявлять свои собственные типы, что в основном определяет идентификатор, который можно использовать, чтобы обозначить этот пользовательский тип при объявлении переменных далее в исходном тексте.

Вот главные классы типов:

  • Простой.
  • Строковый.
  • Структурированный.
  • Указатель.
  • Процедурный.
  • Шаблон (или Дженерик).
  • Специализированный.
  • Идентификатор типа.

Последний класс – идентификатор типа – просто означает присвоение другого имени типу. Это способ сделать типы независимыми от платформы: использовать только эти типы, а потом объявить эти типы индивидуально для каждой платформы. Программист, использующий эти модули, не должен волноваться о размерах типа и т.п.

Базовые (простые) типы

Простые типы во FPC такие же, как типы из Delphi. Различают простые типы:

  • Порядковые.
  • Вещественные.

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

За исключением типов int64, QWord и типов Real, все базовые типы являются порядковыми. Порядковые типы имеют следующие характеристики:

  • Они счётные и упорядоченные. Это свойство делает возможным операции Inc (от англ. increment – увеличение), Ord (от англ. order – порядок),  Dec (от англ. decrement – уменьшение) над ними.
  • Они имеют минимальный и минимальный диапазон/значение.

Для выражений порядкового типа определены следующие функции:

Функция Значение
Ord (x) Порядковый номер для x.
Pred (x) Предшествующее значение для x.
Succ (x) Cледующее значение для x.
High(x) Максимально возможное значение для x.
Low(x) Минимально возможное значение для x..

Следует отметить, что функции Pred и Succ не определены для самого меньшего и самого большего значения.

Целочисленные типы

Применяются для работы с целыми числами. Отличаются друг от друга диапазоном и размером памяти. Имеются две подгруппы таких типов: для чисел без знака, для чисел со знаком.

Тип Диапазон значений Байт в памяти Примечание
Без знака
Byte 0..255 1 Байт, 8 бит
Word 0..65535 2 Слово, 16 бит
LongWord 0..4294967295 4 Двойное слово, 32 бита
QWord 0..18446744073709551615 8 Квадро слово, 64 бита
Со знаком
Shortint -128…127 1 Короткое целое, 8 бит
Smallint -32768..32767 2 Малое целое, 16 бит
Longint -2147483648..

2147483647

4 Длинное целое, 32 бита
Int64 -9223372036854775808..

9223372036854775807

8 Целое, 64 бита
Указываемые
Cardinal Word, LongWord, QWord 2, 4 или 8 Целое без знака
Integer Smallint, Longint, Int64 2, 4 или 8 Целое со знаком

Нужно отметить, что типы qword и int64 не являются истинно порядковыми, поэтому некоторые языковые конструкции не будут работать с этими целыми типами.

Тип integer указывает на тип smallint по умолчанию во FPC. Он указывает на longint или int64 in режиме Delphi или Objfpc. Тип cardinal используется на данный момент как тип longword. Определения типов cardinal и integer могут изменяться от одной архитектуры к другой и от одного компилятора к другому. Они обычно имеют тот же размер, что и целевая архитектура.

FPC поддерживает автоматическую конвертацию типов, если используются разные целочисленные типы.

В памяти целочисленные типы занимают 1..8 байт (1..64 бита) и имеют структуру:

Значащая часть Числа без знака
Знак Значащая часть Числа со знаком. Признак отрицательного числа ( 1 ) в бите знака, размещенном в старшем (левом) разряде.

Для 32-разрядного процессора скорость работы максмальная с типами integer (для чисел со знаком) и cardinal (для чисел без знака), имеющие размер в 4 байта (32=8*4).

Логические (Булевые) типы

Имеют два значения: true (истина) и false (ложь).

Тип Перевод Байт Ord(true) Примечание
Boolean Булевый 1 1 Предпочтительно рекомендуется.
ByteBool Байт Буль 1 Не 0 Для совместимости с другими системами программирования.
WordBool Слово Буль 2 Не 0
LongBool Длинный Буль 4 Не 0

Вещественные (действительные) типы

Вещественные (или действительные) числа – это числа с дробной частью. В памяти вещественные типы в зависимости от точности преставления занимают 4..10 байт (32..80 бита) и имеют структуру:

Знак Порядок со знаком Мантисса

Вещественные числа по желанию программиста отображаются двумя способами:

  • С фиксированной точкой: 3.145,     – 0.25.
  • С плавающей точкой: 2.8E12,          – 1.2E-8

Определены следующие вещественные типы:

Тип Диапазон Знач. цифр Байтs Перевод
Single -45..+38 7..8 4 Ординарный
Double 5.0E-324..1.7E308 15..16 8 Двойной
Real Single, Double ??? 4 или 8 Вещественный
Extended 1.9E-4951..1.1E4932 19..20 10 Расширенный
Currency ±(16 цифр).(4 цифры) 19..20 8 Валюта
Comp -2E64+1..2E63-1 19..20 8 Композитный

FPC использует математический сопроцессор (или эмуляцию) для всех вычислений с плавающей точкой. Размер стандартного типа Real зависит от процессора и является либо Single, либо Double. Поддерживаются только IEEE типы с плавающей точкой, и они зависят от целевого процессора и параметров эмуляции.

Comp = Int64. Это тип целых чисел, но он не является порядковым и поэтому отнесен к вещественным типам. Соседние числа этого типа имеют нули в младших разрядах. Фактически это целые числа с округлениями. К этому типу не применимы процедуры Inc, Dec. Тип Comp является 64-битным целым и недоступен на всех платформах

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

Copyright © 2009-2010 Программирование на паскале.