При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены.
Описание типа определяет идентификатор, который обозначает этот тип.
Типы подразделяются на простые, тип «указатель», структурные (составные), идентификаторы типа.
Указание идентификатора в левой части описания типа означает, что он определен как идентификатор типа для блока, в котором указано это описание типа. Область действия идентификатора типа не включает его самого, исключение составляют типы «указатель» (которые называют также ссылочными типами).
Имеется семь следующих идентификаторов типов:
1. простой тип;
2. структурный тип;
3. тип «указатель»;
4. порядковый тип;
5. целочисленный тип;
6. вещественный тип;
7. строковый тип.
Простые типы определяют упорядоченные множества значений. Они делятся на порядковые типы (перечислимые) и вещественные типы.
Идентификатор вещественного типа относится к числу стандартных идентификаторов, которые могут быть вещественными, с одинарной точностью, с двойной точностью, с повышенной точностью и сложными.
|
|
Порядковые типы представляют собой подмножество простых типов. Все простые типы, отличные от вещественных типов, являются порядковыми и выделяются по следующим четырем характеристикам.
1. Все возможные значения данного порядкового типа представляют собой упорядоченное множество, и каждое возможное значение связано с порядковым номером, который представляет собой целочисленное значение. За исключением значений целочисленного типа, первое значение любого порядкового типа имеет порядковый номер 0, следующее значение имеет порядковый номер 1 и так далее для каждого значения в этом порядковом типе.
Порядковым номером значения целочисленного типа является само это значение. В любом порядковом типе каждому значению, кроме первого, предшествует другое значение, и после каждого значения, кроме последнего, следует другое значение в соответствии с упорядоченностью типа.
2. К любому значению порядкового типа можно применить стандартную функцию Ord, возвращающую порядковый номер этого значения.
3. К любому значению порядкового типа можно применить стандартную функцию Pred, возвращающую предшествующее этому значению значение. Если эта функция применяется к первому значению в этом порядковом типе, то выдается сообщение об ошибке.
4. К любому значению порядкового типа можно применить стандартную функцию Succ, возвращающую следующее за этим значением значение. Если эта функция применяется к последнему значению в этом порядковом типе, то выдается сообщение об ошибке.
|
|
Паскаль имеет семь встроенных порядковых типов:
integer (целое),
shortint (короткое целое),
longint (длинное целое),
byte (длиной в байт),
word (длиной в слово),
boolean (булевское),
char (символьный).
Кроме того, имеется два других класса определяемых пользователем порядковых типов: перечислимые типы и отрезки типов.
Целочисленный тип.
В Паскале имеется пять встроенных целочисленных типов:
shortint (короткое целое),
integer (целое),
longint (длинное целое),
byte (длиной в байт),
word (длиной в слово).
Каждый тип обозначает определенное подмножество целых чисел
Арифметические действия над операндами целочисленного типа предполагают 8-битовую, 16-битовую и 32-битовую точность в соответствии со следующими правилами:
1. Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
2. В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
3. Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева. Значение одного целочисленного типа может быть явным образом преобразовано к другому целочисленному типу с помощью приведения типов.
Булевский (логический) тип.
Значения булевского типа обозначаются встроенными идентификаторами констант False и True. Поскольку булевский тип является перечислимым, между этими значениями имеют место следующие отношения:
False < True.
Ord(False)=0
Ord(True)=1
Succ(False)=True
Pred(True)=False
Символьный тип (char).
Множеством значений этого типа являются символы, упорядоченные в соответствии с расширенным набором символов кода ASCII. Значение символьного типа всегда заключается в апострофы. Например:
Ch:= ‘a’;
При вызове функции Ord(Ch), где Ch - значение символьного типа, возвращается порядковый номер Ch.
Строковая константа с длиной 1 может обозначать значение константы символьного типа. Любое значение символьного типа может быть получено с помощью стандартной функции Chr.
Перечислимый тип.
Перечислимые типы определяют упорядоченные множества значений через перечисление идентификаторов, которые обозначают эти значения. Упорядочение множеств выполняется в соответствии с последовательностью, в которой перечисляются идентификаторы.
При указании идентификатора в списке идентификаторов перечислимого типа он описывается как константа для блока, в котором указано описание перечислимого типа. Типом этой константы является описанный перечислимый тип.
Порядковый номер перечислимой константы определяется ее позицией в списке идентификаторов при описании. Перечислимый тип, в котором описывается константа, становится ее типом. Первая перечислимая константа в списке имеет порядковый номер 0.
Приведем пример перечислимого типа:
suit = (club,diamond,heart,spade);
Согласно этим описаниям, diamond является константой типа suit. При применении функции Ord к значению перечислимого типа Ord возвращает целое число, которое показывает, какое положение занимает это значение в отношении других значений этого перечислимого типа. Согласно предшествующим описаниям, Ord(club) возвращает 0, Ord(diamond) возвращает 1 и так далее.