Простые типы
К простым типам относятся порядковые, вещественные типы и тип дата-время.
Порядковые типы отличаются тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определённым образом упорядочить и, следовательно, с каждым из них можно сопоставить некоторое целое число – порядковый номер значения.
К порядковым типам относятся: целые, логические, символьные, перечисляемый и тип – диапазон. К любому из них применима функция
Ord (Х), которая возвращает само значение Х. Для целых типов Ord (X) возвращает само значение X. Применение Ord (Х) к логическому типу даёт положительное целое число от 0 до1, к символьному от 0 до 255, к перечисляемому от 0 до 65535.
Тип «диапазон» сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции Ord (Х) зависит от свойства этого типа.
К порядковым типам можно применять функции: Pred (Х) – возвращает предыдущее значение порядкового типа и Suce (Х) – возвращает следующее значение порядкового типа.
Вещественные типы
В отличие от порядковых типов, которые в ПК представляются абсолютно точно, значения вещественных типов определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа.
Как видно из таблицы 3.1, вещественное число в Object Pascal занимает от 4 до 10 смежных байт и имеет следующую структуру в памяти ПК:
-
S
E
m
где S – знаковый разряд числа; е – экспоненциальная часть, содержит двоичный порядок; m – мантисса числа.
Таблица 3.1.
Вещественные типы |
|||
Название |
Длина, байт |
Кол-во знач. Цифр |
Диапазон значений |
Real |
6 |
11 … 12 |
2,9*10-39 … 1,7*1038 |
Single |
4 |
7…8 |
1.5*10-45… 3.4*1038 |
Double |
8 |
15…16 |
5.0*10-324…1.7*10308 |
Extended |
10 |
19…20 |
3.4*10-4951…1.1*104932 |
Comp |
8 |
19…20 |
-263…+263-1 |
Currency |
8 |
19…20 |
922 337 203 685 477,5807 |
Отметим, что арифметический сопроцессор всегда обрабатывает числа в формате Extended. а другие вещественные типы получаются простым усечением результатов до нужных размеров, и применяются в основном для экономии памяти.
Примечание: Никогда не используйте тип Real на машинах с сопроцессором, то есть на всех процессорах поколения Пентиум и 80486 с приставкой DX. Потому что при использовании этого типа на машинах с сопроцессором происходит преобразование этого типа в Extended и обратно, что ведет к дополнительным затратам времени.
Особое положение в Object Pascal занимают типы Comp и Currency, которые трактуются как вещественные числа с дробными частями фиксированной длины. В Comp дробная часть отсутствует, в Currency длина дробной части – 4 десятичных разряда. Наиболее подходящей областью применения этих типов являются бухгалтерские расчёты.
Для работы с вещественными данными могут использоваться встроенные математические функции, представленные в таблице 3.2 (Real – любой вещественный тип, INTEGER – любой целый тип). Таблица 3.2.
Стандартные математические функции OBJECT PASCAL
Обращение |
Тип параметра |
Тип результата |
Примечание |
Abs (x) |
Real, Integer |
Тип аргумента |
Модуль аргумента |
Arc Tan (x) |
Real |
Real |
Арктангенс (в радианах) |
Cos. (x) |
Real |
Real |
Косинус угла |
Exp. (x) |
Real |
Real |
Экспонента |
Frac (x) |
Real |
Real |
Дробная часть числа |
Int (x) |
Real |
Real |
Целая часть числа |
Ln (x) |
Real |
Real |
Логарифм натуральный п = 3,1415926 |
PI |
Real |
Real |
п = 3,1415926 |
Random |
Real |
Real |
Псевдослучайное число, равномерно распределённое в диапазоне 0…..[1] |
Random (X) |
Integer |
Integer |
Псевдослучайное число, равномерно распределённое в диапазоне 0…..[X – 1] |
Randomize |
Integer |
Integer |
Инициация генератора псевдослучайных чисел |
Sin (X) |
Real |
Real |
Синус угла в радианах |
Sqr (X) |
Real |
Real |
Квадрат аргумента |
Sqrt (X) |
Real |
Real |
Корень квадратный |
Тип дата - время
Тип дата-время определяется идентификатором T Data Time и предназначен для одновременного хранения даты и времени. Во внутреннем представлении он занимает 8 байт и, подобно Currency, представляет собой вещественное число с фиксированной дробной частью. В целой части числа хранится дата, в дробной – время.
Boolean – логический порядковый тип, переменные этого типа принимают только два значения: False (Ложь) и True (истина).
Char – символьный тип. Переменные этого типа принимают значения равные символам. Всего компьютер распознает 256 символов от символа с кодом 0 до символа с кодом 255.
Целые типы |
||
Название |
Длина, байт |
Диапазон значений |
Byte |
1 |
0…255 |
ShortInt |
1 |
-128…+127 |
SmallInt |
2 |
-32 768 … +32 767 |
Word |
2 |
0 … 65 535 |
Integer |
4 |
- 2 147 483 648 … +2 147 483 647 |
LongInt |
4 |
- 2 147 483 648 … +2 147 483 647 |
Cardinal |
4 |
0 … 4 294 967 295 |
тип-диапазон
Что такое тип-диапазон? Легко показать на примере. Пусть нам необходимо иметь переменную, которая принимает целые значения от 0 до 9, тогда нам нужно будет записать:
Type
single_digit = 0..9;
Таким образом мы определим тип-диапазон.
Например, если записать следующее:
Type
vector = array [1..15] of integer;
matrix = array [1..15,1..7] of extended;
то, определив следующие переменные:
Var
a : vector;
b : matrix;
мы получим вектор столбец а и матрицу b. Обратиться к любому из элементов массива можно следующим образом: a[2], b[2,4], b[12,6].
