Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Перечисляемый тип данных, описание и применяемые процедуры и функции
Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
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);
|