Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция2 ЯП КБ.doc
Скачиваний:
4
Добавлен:
22.08.2019
Размер:
88.58 Кб
Скачать

4.7. Ограничения

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

Пример: Ограничение диапазона включено непосредственно в определение производного типа: type index = 1..100;

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

sum:=0;

for i:=1 to 100 do sum:=sum+a[i];

4.8. Подтипы

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

Пример: в языке Ада подтип shortint определяется как

sybtype shortint = integer range -128… 127

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

4.9. Анонимные типы и подтипы

Анонимный тип предоставляет возможность не использовать имена типов (подтипов) при объявлении.

Пример: в языка Ада

var stud_answer, etalon: (yes, no);

или

var stud_answer: (yes, no);

etalon: (yes, no);

При структурной эквивалентности типов оба объявления переменных stud_answer и etalon являются синтаксически корректными.

В случае именной эквивалентности второе описание ведет к некорректному присваиванию

stud_answer:=etalon;

Пример:

var j: integer 1..10;

k: integer 1..10;

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]