Стандартные примитивные типы - это те, которые доступны в большинстве компьютеров "на ровне железа".
Вычисление будет прервано, если результат лежит за пределами указанного диапазона. Такое событие называют переполнением.
Если мы определим частное q = m DIV n и остаток r = m MOD n, то должны выполняться следующие соотношения (предполагается, что n > 0):
q*n + r = m и 0 <= r < n
Примеры:
Стандартная функция преобразования ENTIER(x) дает целую часть величины x. Тогда округление величины x выполняется с помощью ENTIER(x + 0.5).
Алгоритм обеспечивает быстрое вычисление величины y = xn, где n - неотрицательное целое:
p := x = y
q := (x <= y) & (y < z)
дают p = FALSE и q = TRUE
В большинстве языков программирования булевские операции & (AND) и OR обладают дополнительным свойством, отличающим их от других бинарных операций. Например, сумма x+y не определена, если не определен любой из операндов x или y, однако конъюнкция p&q определена, даже если не определено значение q, при условии что p равно FALSE. Поэтому точное определение операций & и OR дается следующими равенствами:
p & q = если p, то q, иначе FALSE
p OR q = если p, то TRUE, иначе q
Чаще всего используется множество литер, определенное Международной организацией по стандартизации (ISO), и, в частности, его американский вариант ASCII (American Standard Code for Information Interchange).
Функция ORD(ch) дает порядковый номер литеры ch в используемом множестве литер.
Функция CHR(i) дает литеру с порядковым номером i.
Функция CAP(ch) - ее значение заглавная буква, соответствующая ch, если ch - буква.
r := {5}; s := {x, y .. z}; t := {}
Следующие элементарные операции определены для операндов типа SET:
r * s + t = (r*s) + t
r - s * t = r - (s*t)
r - s + t = (r-s) + t
r + s / t = r + (s/t)
x IN s + t = x IN (s+t)
- INTEGER
- REAL
- BOOLEAN
- CHAR
- SET
INTEGER
Если компьютер использует n битов для представления целых чисел в дополнительном коде, то допустимые значения x должны удовлетворять условию -2n-1 <= x < 2n-1.Вычисление будет прервано, если результат лежит за пределами указанного диапазона. Такое событие называют переполнением.
Если мы определим частное q = m DIV n и остаток r = m MOD n, то должны выполняться следующие соотношения (предполагается, что n > 0):
q*n + r = m и 0 <= r < n
Примеры:
- 31 DIV 10 = 3
- 31 MOD 10 = 1
- -31 DIV 10 = -4
- -31 MOD 10 = 9
REAL
Арифметические операции со значениями типа REAL могут быть неточными в пределах ошибок округления, вызванных тем, что вычисления производятся с конечным числом значащих цифр. Сущность типизации данных - в том, что разные типы становятся несовместимыми по присваиванию. Исключение делается для присваивания целочисленных значений вещественным переменным, так как семантика в этом случае однозначна.Стандартная функция преобразования ENTIER(x) дает целую часть величины x. Тогда округление величины x выполняется с помощью ENTIER(x + 0.5).
Алгоритм обеспечивает быстрое вычисление величины y = xn, где n - неотрицательное целое:
y := 1.0; i := n; WHILE i > 0 DO (* x0n = xi * y *) IF ODD(i) THEN y := y*x END; x := x*x; i := i DIV 2 END
BOOLEAN
Булевские операции - это логические конъюнкция, дизъюнкция и отрицание. Например, для булевских переменных p и q и целых переменных x = 5, y = 8, z = 10 два присваиванияp := x = y
q := (x <= y) & (y < z)
дают p = FALSE и q = TRUE
В большинстве языков программирования булевские операции & (AND) и OR обладают дополнительным свойством, отличающим их от других бинарных операций. Например, сумма x+y не определена, если не определен любой из операндов x или y, однако конъюнкция p&q определена, даже если не определено значение q, при условии что p равно FALSE. Поэтому точное определение операций & и OR дается следующими равенствами:
p & q = если p, то q, иначе FALSE
p OR q = если p, то TRUE, иначе q
CHAR
Тип CHAR представляет литеры, которые можно напечатать.Чаще всего используется множество литер, определенное Международной организацией по стандартизации (ISO), и, в частности, его американский вариант ASCII (American Standard Code for Information Interchange).
Функция ORD(ch) дает порядковый номер литеры ch в используемом множестве литер.
Функция CHR(i) дает литеру с порядковым номером i.
Функция CAP(ch) - ее значение заглавная буква, соответствующая ch, если ch - буква.
SET
VAR r, s, t: SETr := {5}; s := {x, y .. z}; t := {}
Следующие элементарные операции определены для операндов типа SET:
- * пересечение множеств
- + объединение множеств
- - разность множеств
- / симметрическая разность множеств
- IN принадлежность множеству
r * s + t = (r*s) + t
r - s * t = r - (s*t)
r - s + t = (r-s) + t
r + s / t = r + (s/t)
x IN s + t = x IN (s+t)