Студопедия

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

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

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






Присваивания для диапазонов.






 

Не всегда возможно определить заранее будет ли выражение содержащее значения из диапазона нарушать его границы. Рассмотрим следующий оператор присваивания, включающий переменную X типа SmallInt и Y типа SmallerInt, объявленные выше.

 

Y: = Y + X

Поскольку владеющий тип в данном случае INTEGER, операция + допустима для операндов Y и X. Сложение дает значение типа INTEGER, которое может быть присвоено Y, как значение владеющего типа. Однако если результат сложения за пределами объявленного диапазона значений для Y, т.е. 0... 10, работа программы завершится с сообщением об ошибке.

 

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



 

V: = E = {< s, t>: E(s) Î Vals(V), t = (s – {< V, c>: c Î Vals(V)}) È {< V, E(s)> }}

 

где Vals(V) – множество всех значений типа V.

 

Преобразование температур.

 

Следующий пример преобразует температуры в точке кипения воды из градусов по Фаренгейту в градусы Цельсия. Обе переменные могли быть объявлены как целые, однако знание проблемной области предлагает значимое ограничение значений.

 

PROGRAM Temperature(INPUT, OUTPUT);

VAR

Farenheit: -459.. 212;

Celsius: -273.. 100;

BEGIN {Temperature}

READ(Farenheit);

Celsius: = (Farenheit – 32)*5 DIV 9;

WRITELN(Farenheit: 4, ‘degrees Farenheit or ’,

Celsius: 4, ‘degrees Celsius’)

END. {Temperature}

 

Выполнение:

INPUT: 212

OUTPUT: 212 degrees Farenheit or 100 degrees Celsius

 

INPUT: 32

OUTPUT: 32 degrees Farenheit or 0 degrees Celsius

 

INPUT: -459

OUTPUT: -459 degrees Farenheit or –272 degrees Celsius

 

INPUT: 1000

OUTPUT: Value 1000 is out of range.

 

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

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

 

Проектирование и анализ с порядковыми типами.

 

Правила проектирования для CF Pascal расширяются до применения с порядковыми типами с небольшими изменениями. Анализ программ также похож, но операторы для INTEGER потребуют некоторых новых методов. Особенно легка для анализа накапливающая итерация.

 






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