Простые типы данных
Данные - это общее понятие для всего того, с чем оперирует вычислительная машина. Любой тип данных определяет множество значений, которые может принимать та или иная переменная, и те операции, которые можно к ним применять.С каждой встречающейся в программе переменной должен быть сопоставлен один и только один тип.
В Паскале существуют простые типы двух видов: ординальные типы и вещественный тип. Ординальный тип либо определяется программистом (перечисляемый тип или диапазонный), либо обозначается именем одного из трех предописанных ординальных типов: Boolean, Integer
или Char
. Вещественный тип обозначается именем предописанного типа Real
.
Перечисляемый тип характеризуется множеством входящих в него различных значений, среди которых определен линейный порядок. Сами значения обозначаются в определении этого типа именами.
Диапазонный (ограниченный) тип задается с помощью минимального и максимального значений, относящихся к предварительно описанному ординальному типу. Так порождается новый ординальный тип.
Ординальные типы данных
Ординальный тип данных описывает конечное и упорядоченное множество значений. Эти значения отображаются на последовательность порядковых номеров 0,1,2,...; исключение делается лишь для целых ординальных чисел, которые отображаются сами на себя. Каждый ординальный тип имеет минимальное и максимальное значение. Для всех значений, кроме минимального, существует предшествующее значение, а для всех значений, кроме максимального - последущее.
Предописанные функции succ, pred, ord
воспринимают аргументы любого из ординальных типов:
succ(X)
- дает следующее за X ординальное значение
pred(X)
- дает предшествующее X ординальное значение
ord(X)
- дает ординальный номер для X
Для всех ординальных типов существуют операции отношения =
,<>
,<
,<=
,>=
и >
, причем предполагается, что оба операнда одного и того же типа.
Логический тип (Boolean)
Логическое значение - одно из двух истиностных значений, обозначаемых предопределенными именами false
и true
.
Существуют следующие логические операции, дающие логическое значение при применении их к логическим операндам:
and
- логическое И
or
- логическое ИЛИ
not
- логическое НЕ
Также любая из операций отношения (=
,<>
,<
,<=
,>=
,>
,in
) поставляет логический результат.
Кроме того логический тип определен так, что false
<true
.
Существуют и предописанные логические функции (т.е функции, дающие логический результат):
odd(F)
- true, если целое F-нечетное и результат false, если F-четное
eoln(F)
- проверка на конец строки
eof(F)
- проверка на конец файла
Целый тип (Integer)
Тип integer включает в себя множество целых чисел.
При работе с целыми операндами следующие арифметические операции дают целые значения:
*
- умножение
div
- целая часть от деления
mod
- остаток от деления
+
- сложение
-
- вычитание
В Паскале существует также предописанная константа с именем MaxInt
, которая содержит максимальное значение целого типа Integer и равна 32767
Целый результат дают и четыре важные предописанные функции:
abs(I)
- абсолютное значение целого значения I
sgr(I)
- целое значение I, возведенное в квадрат при условии, что I<=MaxInt div 1
trunc(R)
- выдает целую часть вещественного числа R
round(R)
- выдает округленное целое. При этом: для R>0 означает trunc(R+0.5)
, а для R<0 означает trunc(R-0.5)
Если I - целое значение, то:
succ(I)
- дает следующее целое значение (I+1)
pred(I)
- дает предыдущее целое значение (I-1)
Символьный тип (Char)
Значениями типа Char являются элементы конечного и упорядоченного множества символов. Значения такого типа обозначаются одним символом, заключенным в одни кавычки (апострофы). Если нужен сам апостроф, то он пишется дважды.
Примеры: '*' 'G' '3' '''' 'X'
- Для типа Char справедливы следующие минимальные допущения:
- Десятичные цифры от 0 до 9 упорядочены в соответствии с их числовыми значениями и следуют одна за другой (например,
succ('5') = '6'
). - Могут существовать прописные буквы от 'A' до 'Z'; если это так, то они упорядочены в алфавитном порядке, но не обязательно следуют одна за другой (например, 'A'<'B').
- Могут существовать строчные буквы от 'a' до 'z'; если это так, то они упорядочены в алфавитном порядке, но не обязательно следуют одна за другой (например, 'a'<'b').
Для отображения заданного множества символов на порядковые номера и обратно существуют две предописанные функции:
ord(C)
- дает порядковый номер символа С в упомянутом упорядоченном множестве символов
chr(I)
- дает символ с порядковым номером I
Для аргументов типа Char предописанные функции pred
и succ
могут быть определены таким образом:
pred(C) = chr(ord(C)-I)
succ(C) = chr(ord(C)+I)
Замечание. Предшествующий данному либо следующий за ним символ зависит от указанного множества символов, поэтому оба этих соотношения справедливы только в том случае, когда предшествующий или следующий символ существует.
Вещественный тип (Real)
Значениями вещественного типа являются элементы определяемого реализацией подмножества вещественных чисел.
Все операции над величинами вещественного типа - приближенные, их точность определяется реализацией (машиной), с которой вы имеете дело. Вещественный тип относится к простому типу, это не ординальный тип. У вещественных значений нет ординального номера и для любого из них не существует предшествующего и следующего значений.
Если хотя бы один из операндов - вещественного типа (другой может быть и целым), следующие операции дают вещественный результат:
*
- умножение
/
- деление (оба операнда могут быть целыми, но результат всегда вещественный)
+
- сложение
-
- вычитание
Существуют предописанные функции, дающие вещественный результат при вещественном аргументе:
abs(R)
- абсолютное значение R
sqr(R)
- R в квадрате, если результат не выходит за диапазон вещественных чисел
А эти предописанные функции дают вещественный результат при целом или вещественном аргументе:
sin(X)
- дает синус Х; Х выражено в радианах
cos(X)
- дает косинус Х; Х выражено в радианах
arctan(X)
- дает выраженное в радианах значение арктангенса от Х
ln(X)
- дает значение натурального (с основанием е) логарифма для Х, Х>0
exp(X)
- дает значение экспоненциальной функции (т.е в степени Х)
sqrt(X)
- дает значение корня квадратного Х, Х>=0
Предупреждение. К вещественным аргументам нельзя применять функции pred, succ
Нельзя использовать значения вещественного типа при индексировании массивов, для управления в цикле с параметром, для определения базового типа множеств, для индексирования в операторе варианта.