Описание целочисленных, вещественных, логических данных и операции над ними в Pascal
1. Описание целочисленных данных
В целом типе над ограниченным множеством математически целых чисел выполняются операции +, -, *, /, div, mod, где div — операция деления нацело (ее результат — целая часть обычного частного), mod — операция взятия остатка от деления. Только результат операции / имеет вещественный тип, результаты прочих — целого типа. Возведение в целую степень выполняют через умножения.
От размера значения зависит диапазон значений, указанный ниже для каждого целого типа.
Integer [от -2147483648 до 2147483647] [4 байта]; Cardinal [от 0 до 4294967295] [4 байта];
Кроме цифровых констант, границами могут быть объявленные (ранее) константы и константные выражения. Пример: Var у: -5…10; z: 1… п.;
Поскольку в выражениях допускается смешение операндов различных числовых типов, уточним указанные ранее порядок вычислений в тех частях выражения, где нет скобок (,). Считается, что сначала выполняются слева — направо операции типа умножения: *, /, div, mod, а затем, также слева — направо, операции +, -. Скобки (,) влияют известным образом.
Значение вещественного типа нельзя присваивать переменным целого типа. Например, присваивание к:= 5.0 ошибочно, если k имеет целый тип.
Целочисленные функции, применяются и с аргументами целого типа. Имея такой аргумент N, функция Random возвращает псевдослучайное число целого типа в полуинтервале [0, N] (число, равное N, никогда не вырабатывается). Результат целого типа воз¬вращают также функции Abs и Sqr (при аргументе целого типа).
Две функции, Round и Trunc возвращают значение целого типа, имея вещественный аргумент. Первая производит округление (например, функция Round(-3.5) возвращает значение -4), а вторая — возвращает усеченное значение, отбрасывая дробную часть аргумента. Заметим, что функции Int (см. табл. 1.1) и Trunc, родственные по смыслу, дают результат разного типа.
Часто используемая функция Odd(x) с аргументом x целого типа возвращает значение true («истина»), если число x нечетно, и false («ложь») — если это число четно.
2. Описание вещественных данных
В вещественных типах применяется конечное множество рациональных чисел — представителей действительных чисел в ограниченном интервале. Над данными вещественного типа допустимы операции + (сложение), — (вычитание), * (умножение), / (деление).
Замена значений их представителями влечет погрешность, о чем надо всегда помнить. Типы различаются размером значений (выражается в байтах). Увеличенный размер означает более частую сетку представителей (меньшую погрешность чисел) и расширенный интервал.
Real [5*10-324 – 1.7*10308] [байт 8], Double [5*10-324 – 1.7*10308] [байт 8], Extended [3.6*10-4951 – 1.1*104932] [байт 10]
Тип Extended предполагает большую точность, чем другие вещественные типы, но являются наименее компактным.
3. Описание логических данных
Зарезервированные слова true и false являются особенными значениями — логическими константами. Слово true (false) переводится как истина (ложь). Например, для отрицательных чисел х неравенство х < 0 имеет значение true. Итак, логические значения могут возникать как итог проверки отношения — равенства или неравенства. Используемые в них операции отношения показывают знаками =, >, < и сочетаниями двух знаков <> (не равно), >= (больше или равно), <= (меньше или равно). True и false являются также значениями переменных логического типа, в объявлении которых используется слово Boolean как обозначение типа, например Var flag: Boolean; Оператор flag:= X < 0 запоминает результат проверки X. Логическое выражение (ЛВ) — это логическая константа, переменная или функция типа Boolean, отношение, либо композиция этих составляющих (операндов) с логическими операциями. Логические операции. Унарная, т.е. определенная для одного операнда операция отрицания not, записывается слева от операнда типа Boolean и дает значение, обратное значению операнда. Например, выражение not (X < 0) имеет значение false, если X < 0, и значение true, если X > 0.
Конъюнкция (логическое умножение) and дает значение true, только если такое значение имеют все операнды конъюнкции. Например, условие «Целое число К четно и находится в диапазоне от 20 до 50 включительно» можно записать как ЛВ not Odd(K) and (К>= 20) and (K< 51). Дизъюнкция (логическое сложение) or дает значение true, если хотя бы один операнд дизъюнкции имеет значение true. Так, условие «Число К либо отрицательно, либо больше 100» записываем как ЛВ (К < 0) or (К > 100).
Исключающее Или (хоr) дает значение true, лишь если два операнда операции имеют противоположные значения. Например, (К < 20) хоr (К < 51) имеет значение true для тех чисел К, которые не меньше 20, но меньше 51. Порядок приоритета:
1. not;
2. *, / , div, mod, and, shl, shr(сдвиг);
3. +,-,xor, or;
4. =, <>, <,>, <=,>=, in.
В отсутствие скобок (,) порядок выполнения операций определяется приоритетами операций. Операции равного приоритета выполняются слева — направо. При необходимости порядок действий изменяют, проставляя круглые скобки.