Студопедия
Главная страница | Контакты | Случайная страница

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

Лекция 16 НЕОИНСТИТУЦИОНАЛИЗМ.

Читайте также:
  1. Амплитудная селекция
  2. Беседа как метод обучения детей дошкольного возраста диалогической речи (лекция).
  3. Вводная лекция
  4. Вопрос 1.Лекция.
  5. Воскресная лекция Шрилы Радханатхи Свами в Киеве о Бхакти Тиртхе Свами
  6. Временная селекция
  7. Вступительная лекция.
  8. Вступительная лекция.
  9. Дәріс (лекция), зертханалық және зертханалық сабақтар жоспары
  10. Дәріс (лекция), практикалық және зертханалық сабақтар жоспары

TUpperCase = 'A'..'Z'; TIndex = 1..100;

Связь ограниченного типа с его родительским типом устанавливается путем сопоставле­ния величин в определении ограниченного типа с соответствующими величинами в ра­нее объявленном или встроенном порядковом типе. Тип TUpperCase в приведенном выше примере определен как ограниченный встроенный тип отдельных символов. Тип TIndex определен как ограниченный тип целых чисел.

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

subtype WEEKDAYS is DAYS range Mon..Fri;

subtype INDEX is INTEGER range 1..100;

 

В этих примерах сужение существующих типов касается диапазона возможных значе­ний. Все операции, определенные для породившего типа, определены и для подтипа, за исключением операции присваивания значений, не входящих в заданный диапазон. В следующих командах

DAY1: DAYS;

DAY2: WEEKDAYS;

 

DAY2:= DAY1;

присваивание разрешено только в случаях, когда значение переменной DAY1 не равно Sat или Sun. В языках Pascal и Modula-2, как и в языке Ada, подтипы наследуют все разрешенные родительскому типу опера­ции.

Определяемые пользователем порядковые типы часто используются в качестве индексов массивов. Они также могут использовать­ся переменными циклов. В языке Ada, например, подтипы порядковых типов яв­ляются единственным способом указания переменных цикла for.

Отметим также, что в Ada ограниченные типы значительно отличаются от производных типов. Рассмотрим следующие объявления:

type DERIVED_SMALL_INT is new INTEGER range 1..100;

subtype SUBRANGE_SMALL_INT is INTEGER range 1..100;

Переменные обоих типов, DERIVED_SMALL_INT (производный тип) и SUBRANGE_SMALL_INT (подтип – ограниченный тип), наследуют область значений и операции над переменными типа INTEGER. Тем не менее, переменные типа DERIVED_SMALL_INT не совместимы ни с каким типом INTEGER, тогда как перемен­ные типа SUBRANGE_SMALL_INT совместимы с величинами типа INTEGER и любого его подтипа.

Ограниченные типы улучшают читабельность программ, показывая, что переменные подтипа могут содержать только определенный диапазон значений. Надежность при ис­пользовании ограниченных типов повышается, поскольку присвоение переменной такого типа некоторого значения, лежащего вне разрешенного диапазона, диагностируется компиля­тором (если присваиваемое значение является литеральной величиной) или системой под­держки выполнения (если это переменная или выражение) как ошибка.

 

4.4.3. Реализация порядковых типов

 

Для реализации перечислимых типов необходимо установить соответствие между неотрицательными целым числами и символьными константами. Обычно по умолчанию первое из перечисляемых значений представляется числом 0, второе – числом 1 и так далее. Операции с переменными перечислимых типов значительно отличаются от операций с целыми числами, исключением являются только операторы отношений, идентичные для обоих случаев. Как указывалось ранее, перечислимые типы языков ANSI C и C++ рассматриваются как целые типы.

Ограниченные типы реализуются так же, как и породившие их типы, за исключением того, что в каждом операторе присваивания и в каждом выражении, которые содержат переменную ограниченного типа, компилятор должен выполнять неявную проверку вы­хода значения переменной за пределы допустимого диапазона. Это увеличивает размер программы и время ее выполнения, однако хорошо оптимизированный компилятор может минимизировать количество проверок.

Лекция 16 НЕОИНСТИТУЦИОНАЛИЗМ.




Дата добавления: 2014-12-15; просмотров: 115 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав