Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 179

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 173 174 175 176 177 178 < 179 > 180 181 182 183 184 185 .. 316 >> Следующая

- область фиксирована type MyInt2 is INTEGER range 0..V;
- область динамически вычисляется!!! type MyInt3 is INTEGER range 0..INTEGER'LAST;
- лбое неотрицательное целое,
- допустимое реализацией
Транслятор использует информацию об областях значений следующим образом. писание языка предписвает системам программирования обеспечить математическу корректность вчислений в заданной области, но при условии, что значения не превышают допустимых величин INTEGER'FIRST и INTEGER'LAST. Для малых значений это указание означает, что можно использовать короткие целе, для больих значений предписывается моделировать арифметику, если вычислитель не позволяет соответствуие действия вполнить стандартнми командами.
Интересен случай динамических вычислений области. Он осмыслен для динамически возникающих переменных и констант, область которых определяется в момент появления описания их типа (после этого, к примеру, изменение переменной V не повлияет на диапазон даннх, тип которых описывается как MyInt3).
В де есть ее одно полезное свойство определения типов, применимое и к типу целых. Можно описать новый тип, который имеет поведение уже суествуего типа, но им не является: type MyNewInt is new INTEGER;
6 Гарантированные (доказательные) вычисления — вычислительные эксперименты, строго обосновывающие оценки некоторой величины, например, а > 2 или 0.49999 < disp < 0.50001.
504
9.
Это описание позволяет определять переменные и константы, которые, к примеру, нельзя складывать с целыми, но можно между собой. Транслятор должен контролировать указанное различие. Применение данного средства накладывает, например, запрет на «сложение 'яблок' и 'людей'».7
Это отличает нове тип от тех, которые описыва тся без спецификатора new и назва тся в Ada подтипами одного и того е типа. римеры подтипов: MyIntl, MyInt2 и MyInt3. Применительно к целым подтипы — это просто отрезки "самого большого целого типа", и неявные приведения в оба направления для них возмо ны, тогда как для новх типов приведение моет задаваться только явной квалификацией (указанием имени типа).
перирование с новыми типами и с областями предусматривается не только для целых типов. Эти средства, безусловно, являются конструкторами типов. Они до некоторой степени отвечают потребности программистов при-бли ени записи программ к прикладному уровн , а значит, слу ат целям повения абстрактности программирования на данном языке.
9.2.5. Вещественные типы
Системы команд больинства компь теров обеспечива т возмо ности оперирования с числами с плаваей точкой. Во многих случаях предусматривается и оперирование с числами с фиксированной точкой. Естественно, эти возмо ности предоставля тся в языках с помоь специальных базовых типов, именуемых как вещественные (real) в двух видах: плавающие (float) ификсированные (fixed). Первые характеризуются относительной точность , задаваемой как число значаих цифр, вторые — абсол тной точность , задаваемой с помоь минимальной величины, на котору они могут различаться. ругая характеристика — это область допустимых значений, т. е. их диапазон: минимальное и максимальное представимые числа.
е из этих характеристик следует, что о веественных типах нельзя говорить как о математических веественных числах. В то е время, на соответствуем уровне абстракции полезно не замечать различий, поскольку представление веественнх чисел в виде ( знак_числа, знак_порядка : ('+', '-'); порядок : INTEGER range 0..размер_порядка;
7 Беда в том, что заодно запрещается также умножение и (что самое обидное) деление яблок на людей. Так что воспринимать этот полезный вид выводимых типов как приписывание размерностей — рекламный трюк, используемый в руководствах по Ada.
9.2. БАЗОВЫЕ И ВЫВОДИМЫЕ ТИПЫ
505
мантисса : INTEGER range 0..размер_мантиссы )
совсем не отраает то, о чем дума т, когда опериру т с веественнми числами.
Вместе с тем, совсем игнорировать представление нельзя, т. к. иначе накапливаемые ошибки вычислений могут быстро напомнить о неточной природе оперирования с вещественными числами. Эта противоречивая двойственность данного типа объясняет и наличие двух вариантов веественного типа в языках программирования, и другие особенности средств оперирования с ними. частности, согласно с математическому смслу, веественные значения плотно упорядочены отношением "<":
VpVq(p < q == 3x(p < x&x < q)),
но конечность мно ества всех маиннх веественных чисел в принципе позволяет говорить о следующем и предыдущем числе для данного значения.
днако математическая бессмысленность этих понятий не позволяет апеллировать к подобным свойствами. ереход к дискретному континууму привел бы к утрате ванх качеств маинного моделирования реальных процессов. Это более вано, чем неоднозначность определения следуего и предду-щего числа и чем различия вычислений, которые бы проявились на разных вчислительных маинах.
Говорить об отрезках вещественных значений можно, но в несколько ином смсле, чем для перечислений. В частности, необходим запрет на все су де-ния и опираиеся на них средства, которые связан с моность отрезка. Отрезкам отводится роль задания областей, в которых лежат значения подтипов вещественного типа. Это средство представлено в Ada:
Предыдущая << 1 .. 173 174 175 176 177 178 < 179 > 180 181 182 183 184 185 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100