Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012 02 26 Основы программирования в Delphi.docx
Скачиваний:
4
Добавлен:
16.08.2019
Размер:
204.56 Кб
Скачать

Типы данных и переменные

НОВЫЙ ТЕРМИН. В Object Pascal тип данных информирует компилятор как размещать информацию в памяти.

Некоторые языки программирования допускают присваивание переменной значения любого типа. Например, рассмотрим следующие примеры кода на языке BASIC:

X = -1;

X = 1000;

X = 3.14;

Интерпретатор BASIC заботится о выделении подходящего размера памяти для хранения соответствующего значения.

В программе на Object Pascal все переменные, используемые в программе надо объявить, например

var

X1 : Integer;

X : Integer;

Y : Double;

Z : Byte;

{ ...далее }

X1 := -1;

X := 1000;

Y := 3.14;

Z := 27;

Компилятор использует объявления переменных для проверки корректности присваиваемых им значений. Некорректность использования типов данных приведет либо к ошибке компиляции, либо к предупреждению, на которое следует обратить внимание, проанализировать и исправить ошибку. Строгий контроль за использованием типов данных обеспечивает надежность программы.

Некоторые из типов являются беззнаковыми, т.е. данные такого типа могут принимать только положительные значения. В таблице 1.1 приведены основные типы данных Object Pascal, размер памяти для размещения одного значения соответствующего типа, а так же диапазон допустимых значений. В этой таблице не представлены строковые типы, обсуждение которых вынесено в раздел «Строки»

Таблица 1.1. Типы данных Object Pascal

Тип

Размер, байт

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

ShortInt

1

-128 …127

Byte

1

0 … 255

Char

1

0 … 255

WideChar

2

0 … 65 535

SmallInt

2

–32 768 … 32 767

Word

2

0 … 65 535

LongInt

4

–2 147 483 648 … 2 147 483 647

Int64

8

от –9 223 372 036 854 775 808

до 9 223 372 036 854 775 807

Integer

4

см. LongInt

Cardinal

4

0 … 2 147 483 647

Single

4

1.5  10-45 … 3.4  1038

Double

8

5.0 10-324 … 1.7  10308

Real

8

как Double

Extended

10

3.4 10-4932 … 1.1 104932

Comp

8

от –9 223 372 036 854 775 808

до 9 223 372 036 854 775 807

Currency

8

от –922 337 203 685 477.5808

до 922 337 203 685 477.5807

Boolean

1

True или False

Variant

16

Как следует из таблицы 1.1, типы Integer и LongInt эквивалентны. Это сделано для совместимости на уровне исходных текстов с программами, подготовленными на 16–разрядных компьютерах. На 16–разрядной версии тип Integer требует 2 байта памяти, а тип LongInt – 4 байта.

В 32-разрядной версии оба типа имеют размер 4 байта и, следовательно, одинаковые диапазоны значений.

Кроме того, можно заметить, что типы Int64 и Comp (computational) также имеют одинаковые диапазоны значений. Различие между ними в том как трактует их компилятор. Так, Int64 относится к целочисленным, а тип Comp – к вещественным. В инженерных приложениях тип Comp вряд ли Вам понадобится.

Далее, отметим идентичность типов Real и Double. В Delphi 1.0 (и в Turbo Pascal) тип Real был 6-байтным. Теперь он стал 8-байтным. Дело в том, что 6-байтный вещественный тип противоречит 32-разрядной архитектуре современных процессоров.

При переносе «старых» 16-разрядных программ на 32-разрядную платформу может возникнуть проблема совместимости по типу real. Так, если в Delphi – программе вы читаете с диска «старый» типизированный файл, объявленный как file of real, данные будут введены не верно. Для совместимости со «старым» типом real в Object Pascal есть тип real48, который соответствует 6–байтному вещественному числу.

ПРИМЕЧАНИЕ. Тип Int64 впервые появился в Delphi 4. Он предназначен для представления «очень больших» целочисленных значений. Его появление связано с тем, что объем жестких дисков далеко «перевалил» за гигабайт. В Windows API есть функция GetDiskFreeSpaceEx, которая вычисляет объем свободного пространства на жестком диске. Она может вернуть значение, которое гораздо больше верхней границы диапазона чисел типа Integer (2 147 483 647). Тип 64-битного целого и предназначен для решения подобных проблем.

Типы Single, Double, Extended, и Currency относятся к группе вещественных. К данным этого типа относятся числа, имеющие целую и дробную части. Каждое число вещественного типа может содержать конечное число десятичных цифр. Иначе данные этого типа называют числами с плавающей точкой.

Остальные типы данных относятся к целочисленным. Целочисленной переменной нельзя присвоить вещественное значение. Например, при компиляции следующего фрагмента будет зафиксирована ошибка:

var

X : Integer;

{ Далее... }

X := 3.75;

При написании кода программы, который отвечает за графический интерфейс, необходимость в переменных вещественного типа возникает очень редко.

С другой стороны, код реализации инженерных расчетов оперирует вещественными переменными на все 100%.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]