Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 44

в типе Boolean3,

'z' > 'a'

в типе Char.

Знаки сравнения могут быть и нестрогими.

4.1.8. Ограниченные типы (диапазоны)


Еще одним вводимым типом языка является диапазон. Используя его, мы можем определить тип, который будет содержать значения только из ограниченного поддиапазона некоего базового типа. Базовым типом, из которого вычленяются диапазоны, может быть любой целочисленный тип, тип Char и любой из введенных программистом перечислимых типов.

Для введения нового типа — диапазона — надо в блоке описания типов TYPE указать имя этого типа и границы диапазона через две точки подряд:

| TYPE

| Century = 1..20; { диапазон целочисленного типа }

| CapsLetters = 'А'..'Я'; { заглавные буквы из типа Char }

| TestOK = Level3..Level5; { часть перечислимого типа Test }

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

- 69 -

Это еще больше усиливает контроль данных при выполнении программы. Значения переменных типа «диапазон» могут выводиться на экран и вводиться с клавиатуры, только если этот диапазон взят из базового типа, выводимого на экран или вводимого с клавиатуры. В приведенном примере сугубо «внутренними» значениями будут только значения, принадлежащие к типу TestOK, как диапазону невыводимого перечислимого типа Test. Будет ошибкой задать нижнее значение диапазона большим, чем верхнее.

При конструировании диапазона в описании типа можно использовать несложные арифметические выражения для вычисления границ. Но при этом надо следить, чтобы запись выражения не начиналась со скобки (скобка — это признак начала перечисления):

| TYPE

| IntervalNo = (2*3+2)*2 .. (5+123); {неверно! }

| IntervalYes = 2*(2*3+2) .. (5+123); { правильно }

4.2. Сложные типы языка


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

Тип «массив» определяется конструкцией

Array [диапазон] of ТипЭлементов;

Диапазон в квадратных скобках указывает значения индексов первого и последнего элемента в структуре. Примеры объявления типов:

| TYPE

| Array01to10 = Array[ 1..10] of Real;

| Array11to20 = Array [11..20] of Real;

Здесь мы вводим два типа. Они совершенно одинаковы по структуре, но по-разному нумеруют свои элементы. Оба типа содержат наборы из десяти значений типа Real.

Пусть определены переменные именно таких типов (скажем, a01to10 и a11to20). Доступ к i-му элементу массивов осуществляется через запись индекса в квадратных скобках сразу за именем массива: a01to10[i] или a11to20[i].