TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Определение типов

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

     Новый тип перед первым его использованием должен быть описан в соответствующем разделе описаний. Его заголовок - служебное слово Type.

Type
    <Имя типа> = <Описание типа>;

     Есть несколько способов описания. Иногда говорят даже о видах типов (как бы это странно ни звучало).

     Итак, первым рассмотрим так называемый перечисляемый тип.

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

     Формат описания следующий: <Имя типа> = (<Ид.1>, <Ид.2>,? <Ид.n>);

     Далее можно определить любое число переменных уже описанного типа. Обратите внимание на то, что каждый идентификатор может участвовать в описании только одного перечисляемого типа.

     Этим переменным можно присваивать только значения из списка, определенного при описании типа. Эти значения не являются ни числами, ни строковыми величинами, ни даже величинами логического типа, поэтому они не могут участвовать в арифметических, строковых, логических выражениях, а также не могут быть выведены на экран или принтер. Величины перечисляемого типа можно сравнивать между собой, над их множеством в языке Паскаль определены несколько функций:
    Ord(X) - порядковый номер значения переменной X в списке идентификаторов.
    Succ(X) - следующее значение для величины Х.
    Pred(X) - предыдущее значение данного типа.

     Обратите внимание на то, что для функции Ord нумерация среди значений идет, начиная от нуля. Для последнего значения нельзя применять функцию Succ, для первого - Pred.

 

     Переменные различных перечисляемых типов несовместимы друг с другом.

     Множество стандартных порядковых типов в языке Паскаль на самом деле определены как перечисляемые. Это типы Char, Integer, другие. Достоинства стандартных порядковых типов лишь в том, что над каждым из них уже определены специфические действия. Например, тип Boolean описан так:
Type
Boolean = (False, True);

     Единственное его отличие от перечисляемых типов, определяемых программистом, состоит в том, что значения типа Boolean можно выводить на экран. Можете проверить, Ord(False)=0.

     Интересно, что переменная перечисляемого типа может быть счетчиком в цикле "с параметром".

Пример:

    Program T1;
    Type
        Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown, Yellow, White);
    Var
        C1,C2 : Colors;
    Begin
      C1:=Green;
      C2:=Red;
      Writeln(Ord(C1), Ord(Succ(C2)))
    End.

 

     Во время выполнения на экране появятся числа "2" и "5", что соответствует номерам значений Green и Magenta.

     Следующий тип, который можно определить в программе - тип-диапазон.

     Здесь не нужно перечислять все значения этого типа, потому, что возможными для него являются значения поддиапазона уже определенного до него любого порядкового типа (стандартного или описанного ранее перечисляемого типа). Достаточно лишь указать начальную и конечную величину отрезка порядкового типа. Единственное условие: начальное значение не должно превышать конечное.

     Формат описания отрезочного типа:
Type
    <Имя типа>=<Нач.>..<Кон.>;

Примеры:
Type

    Age=0..150; {Целое число в интервале от 0 до 150}
    Lat='A'.. 'Z'; {Заглавные буквы латинского алфавита}
    Month=(January, February, March, April, May, June, July, August, September, October, November, December);
    Spring=March..May; {Весенние месяцы}

 

     Есть еще одна возможность определить новый тип, о существовании которой можно было бы и догадаться.

Type
    <Имя типа>=<Имя ранее определенного или стандартного типа>;

Пример:
Type
    Number=Byte;

 

На главную страницу
Rambler's Top100 Rambler's Top100 PROext: Top 1000
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz