Встроенные процедуры и функции, применимые к целым типам

Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 2. Буквами b, s, w, i, l обозначены выражения соответственно типа BYTE, SHORTINT, WORD, INTEGER и LONGINT, x - выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.

Таблица 2

Стандартные процедуры и функции, применимые к целым типам
Обращение Тип результата Действие
abs (x) x Возвращает модуль х
chr(b) Char Возвращает символ по его коду
dec (vx[, i] ) процедура Уменьшает значение vx на i, а при отсутствии i -на 1
inc(vx[, i] ) Процедура Увеличивает значение vx на i, а при отсутствии i - на 1
Hi(i) Byte Возвращает старший байт аргумента
Lo(i) " Возвращает младший байт аргумента
odd(l) Boolean Возвращает True, если аргумент - нечетное число
Random (w) Как у параметра Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0...(w-l)
sgr (x) X Возвращает квадрат аргумента
swap ( i ) Integer Меняет местами байты в слове

Логический тип.

Значениями логического типа может быть одна из предварительно объявленных констант FALSE (ложь) или TRUE (истина). Для них справедливы правила:

ord(False) = 0;

ord(True) = 1;

False < True;

succ(False)= True; {Стандартная функция определения последующего элемента}

pred(True) = False. {Стандартная функция определения предыдущего элемента }

Поскольку логический тип относится к порядковым типам, его можно использовать в операторе счетного типа, например:

var

i : Boolean;

begin

for i:= False to True do ....

Символьный тип.

Значением символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0...255. Это код внутреннего представления символов. Его возвращает функция ORD.

Символы с кодами 0...31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.

К типу CHAR применимы операции отношения, а также встроенные функции: СНR(В) - функция типа CHAR; преобразует выражение В типа BYTE в символ и возвращает его своим значением;

‘A’<’B’

ORD(‘B’)=66

ORD(‘a’)=97

ORD(‘0’)=48

СНR(48)=’0’

PRED(‘B’)=65

SUCC(‘д’)=’г’

UpCase(‘n’)=’N’

При выполнении операций сравнения сравниваются коды символов как обычные целые числа. При этом получается, что любая заглавная буква меньше соответствующей, та как в кодовой таблице сначала располагаются все заглавные буквы, а затем строчные.

UPCASE(CH) - функция типа CHAR; возвращает прописную букву, если СН -строчная латинская буква, в противном случае возвращает сам символ СН

Перечисляемый тип.

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

typе

colors =(red, white, blue,green);

var

animals:(cat,dog,cow);

Поскольку перечисляемый тип относится к порядковым типам, между значениями перечисляемого типа и его порядковыми номерами устанавливается соответствие:первое значение получает порядковый номер 0, второе 1 и т.д.до 65535.

ORD(red)=0; ORD(green)=3

Blue>red

Достоинства- 1. Улучшает смысловую читабельность программы

2. Более четко проводится контроль значений

3. имеет очень компактное машинное представления.

Недостатки – Не могут быть явно выведены с клавиатуры и выведены на пример.

Тип-диапазон (интервальный тип).

Тип-диапазон есть подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона. Тип-диапазон задается границами своих значений внутри базового типа:

<мин.знач.>..<макс.знач.>

Тип-диапазон может производить такие же действия, которые определены для базового типа. Для каждой операции с переменной интервального типа автоматически выполняется проверка: остается ли значение переменной внутри установленного для нее диапазона. Автоматическая проверка объявленных границ позволяет программисту не отвлекаться на организацию собственного контроля. В этом и есть смысл применения типа-диапазона.

Пример В хороша написанных программах вы скорее увидите

Var

Score : 2..12; чем

Score :i nteger;

Выход за границы вызовет программное прерывание.

Правила определения тип-диапазона:

· Два символа ..рассматриваются как один, пробелы недопустимы

· Необходимо, чтобы левая граница интервала не превышала правую.

Вещественные типы

Вещественные типы: очень большие или очень маленькие числа удобно представлять в экспоненциальной форме число представляется в виде множества называемое мантиссой умноженного на 10 в какой либо степени [число=мантисса*10 в степени k] число=мантисса*10 k

2700=2.7*103 ~2.7e+03

2,108*10-10=2.108e-10

Нельзя:

6. .564 e3 6.e2 5.0e { ошибка}

s e m

Целые числа представляются абсолютно точно а числа вещественные представляются с конечной точностью, которая зависит от внутреннего формата. Вещественные числа занимают от 4 до 8 смежных байт и имеют следящую структуру:

Длина, байт Название Количество значащих цифр Диапазон десятичного порядка
Single (с одинарной точностью) 7 - 8 -45 - +38
Real (вещественный) 11. . .12 -39. ..+38
Double (с двойной точностью) 15. ..16 -324. . .+308
extended (с повышенной точностью) 19. . .20 -4951. . .+4932
Comp (сложный) 19. . .20 -2*1063+1. . .+2*63-1

Здесь s - знаковый разряд числа; е - экспоненциальная часть; содержит двоичный порядок; m - мантисса числа.

Десятичная точка подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положении сдвигается влево или вправо в соответствии с порядком числа. Поэтому действия над вещественными числами называют арифметикой с плавающей точкой (запятой).

Как видим, Турбо Паскаль характеризуется богатой гаммой вещественных типов, однако доступ к типам SINGLE, DOUBLE и EXTENDED возможен только при особых режимах компиляции. Дело в том, что эти типы рассчитаны на аппаратную поддержку арифметики с плавающей точкой и для их эффективного использования в состав ПК должен входить арифметический сопроцессор Компилятор Турбо Паскаля. {$N+}.

Директива обеспечивает доступ к четырем дополнительным вещественным типам.

Стандартные математические функции над вещественными типами Таблица3

Стандартные математические функции Турбо Паскаля
Обращение Тип параметра Тип результата Примечание
abs (x) Real, Integer Тип аргумента Модуль аргумента
АrсТаn (х) Real Real Арктангенс ( значение в радианах)
cos (х) To же То же Косинус, угол в радианах
ехр (х) " " Экспонента
frас (х) " " Дробная часть числа
int(x) " " Целая часть числа
ln(x) " " Логарифм натуральный
Pi - " л = 3.141592653...
Random - " Псевдослучайное число, равномерно распределенное в диапазоне 0...[1]
random(x) Integer Integer Псевдослучайное целое число, равномерно распределенное в диапазоне 0...(х-1)
Randomize - - Инициация генератора псевдослучайных чисел
Round(х) Real longint Округление до ближайшего целого
sin(x) Real Real Синус, угол в радианах
sqr (x) To же То же Квадрат аргумента
sqrt (x) To же То же Корень квадратный
Trunc(x) To же longint Целая часть числа

3.3. Константы и переменные

Константы-это неизменяемые в процессии программы величины

Const

Ch_=’A’;

1=50;

Имеются две разновидности констант:

· Обычные константы, тип которых определяется их значением.

· Типизированные константы, тип которых определяется их значением и типом.

Заранее определены const:

MAXINT=32767

MAXLONGINT=2147483647

TRUE, FALSE

NIL – пустой указатель

[]- пустое множество.

При изображении шестнадцатеричного целого числа используется $: $A0, $FFF.

Для изображения символов, не имеющих физ. изображения используется код с символ :

#7,#10.#13.

Для типизированных const задается ее тип и начальное значение.

Пример

Const

Y:real=0.5;

Ch:char=#7;

Основными объектами Турбо Паскаль явл. Переменная (var) и обращения к функциям с помощью знаков операции и скобок можно составить выражения. Операция имеющая более высокий приоритет выполняется первой Операции имеющие одинаковый приоритет выполняются с лева на право. В ТР нет возведения в степень но оно выполняется с помощью алгоритма а* ~ ехр (ln (a)*x)

Преобразование типов

В Турбо – Паскале почти невозможны неявные ( автоматические ) преобразования типов. Исключение сделано в отношении констант и переменных типа INTEGER, которые разрешается использовать в выражениях типа REAL.

Пример

Var

X:integer;

Y:real;

y:=x+2;{правильно}

x:=2.5;{не правильно}

Для преобразования REAL к INTEGER имеются две встроенные функции: Round(х) и Trunc(x). В 1-ом случае происходит округление до ближайшего целого, во 2-ом усекается число путем отбрасывания дробной части.

Пример

X:=y/x; {непр}

X:=trunc(y/x); {пр}

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

Наши рекомендации