Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Перечисляемый тип данных, описание и применяемые процедуры и функции






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

 

typе

colors =(red, white, blue);

 

Применение перечисляемых типов делает программы нагляднее. Если, например, в программе используются данные, связанные с месяцами года, то можно записать такой фрагмент программы:

 

type

TypeMonth=(jan, feb, mar, may, jun, jul, aug, sep, oct, nov, dec);

var

month: TypeMonth;

begin

.......

if month = aug then WriteLn('Август');

.......

end.

Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе - 1 и т.д. Максимальная мощность перечисляемого типа составляет 65536 значений, поэтому фактически перечисляемый тип задает некоторое подмножество целого типа WORD и может рассматриваться как компактное объявление сразу группы целочисленных констант со значениями 0, 1 и т.д.

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

type

colors = (black, red, white);

ordenal= (one, two, three);

days = (monday, tuesday, Wednesday);

 

С точки зрения мощности и внутреннего представления все три типа эквивалентны:

ord(black)=0,..., ord(white)=2,

ord(one)=0,...ord(three)=2,

ord(monday)=0,...ord(Wednesday)=2.

Однако, если определены переменные

var

col: colors; num: ordenal;

day: days;

то допустимы операторы

col: = black;

num: = succ(two);

day: = pred(tuesday);

но недопустимы

col: = one;

day: = black;

Как уже упоминалось, между значениями перечисляемого типа и множеством целых чисел существует однозначное соответствие, задаваемое функцией ORD(X). В Турбо Паскале допускается и обратное преобразование: любое выражение типа WORD можно преобразовать в значение перечисляемого типа, если только значение целочисленного выражения не превышает мощность перечисляемого типа. Такое преобразование достигается применением автоматически объявляемой функции с именем перечисляемого типа. Например, для рассмотренного выше объявления типов эквивалентны следующие присваивания:

col: = one;

col: = colors(0);

Разумеется, присваивание

col: = 0;

будет недопустимым.

Переменные любого перечисляемого типа можно объявлять без предварительного описания этого типа, например:

var

col: (black, white, green);

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.