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

 

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

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

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

9.2.
501
но указывать явно.
Указанных выше операций достаточно для использования перечислений в программах. Для повышения выразительности полезно согласование этих операций с циклами for (в двух вариантах: по возрастанию и по убыванию) и for all (порядок перебора не фиксируется). Естественно, что по значениям типа перечисления мо но организоввать выбираие операторные конструкции. С точностью до оператора for all так сделано в Pascal.
9.2.2. Булевский тип
Этот тип есть перечисление специального вида. но ество его значений состоит из двух элементов, для которых языком фиксирован изобра ения: True и False. Уместно заметить, что это не означает эквивалентности булевского типа какому-либо перечислени из двух элементов, хотя бы потому, что операции succ и pred для булевских значений не употребля тся. оги-ческий тип в хороо сконструированнх язках не приводится ни к каким другим (в C++, как мы уже видели, логический тип без всякого предупреждения может приведен к целому).
бычнй набор операций булевского типа дополняет стандартные операции логическими связками. мысл такого расирения в том, что они легко (однозначно и эффективно) реализу тся непосредственно командами лбо-го конкретного вычислителя и соответству т задаче разветвления вычислений, а потому есть прямой резон предоставить их программисту в качестве язкового оформления использования команд вычислителя.
По этой причине логический тип был подробно разобран в главе 5, по-свяенной операторам выбора.
9.2.3. Тип литерных
Этот тип есть перечисление специального вида, наиболее близкое к об-ему определени : все операции заданы именно так, как предписвается для лбых типов перечислений. оность мно ества значений стандартного литерного типа 256, что соответствует байтовому кодированию литер. В качестве вложения в тип целых чисел для литерных значений задается отображение на отрезок 0..255, что прямо указывает на кодировки литер как на представление данного типа.
ля литерных значений вводятся правила изобра ения. бычно это заключенный в кавычки символ. Но есть значения, не представимые символами. Для них, а также для кавычек в качестве символа, используются правила
502
9.
задания изображений специального вида. Часто такие правила распространяются на все литерные значения, из-за чего в языке появляется синонимия и излишняя привязка к реализации, в частности, к конкретным кодировкам литер.5
В связи с распространением в последние годы медународной кодировки Unicode, в которой символ представляется двумя байтами, тип символьных значений приобрел напарника для представления символов Unicode. Для этой кодировки все перечисленные проблемы обостряются, так как почти наверняка многие из символов Unicode приходится представлять числовми кодами.
9.2.4. Тип целых
еле — это перечисления, для которых языком вводятся специальне обозначения литералов: значений целых типов. В соответствии с маинной арифметикой и разрядной сеткой часто определя т несколько вариантов целых, каждый из которых соотносится со своим регистровым представлением: байтовые, двухбайтовые, беззнаковые и др. Считать ли все варианты целых соответствующими отрезками "самых больших" целых, представимых в данном язке или системе программирования, дело вкуса. еобходимо отметить, что реализация оперирования с целыми кадого вида не делается путем приведения операндов к "самым больим" целым с последуим обратным приведением к требуемому формату, да и человек скорее склонен воспринимать различные целые тип как отрезки типа-призрака всех целых чисел, которй непредставим в маине из-за своей бесконечности.
аличие вариантов целх мотивируется в перву очередь тем, что системы команд предлага т различные способы работ , выбираемые исходя из конкретных особенностей значений. Объединение различных целых типов дает возмо ность повсить строгость описания языка, одновременно упростив его. Как следствие появляется возмо ность проведения вычислений с гарантированной наденость , да е когда промеуточне результаты выходят за границ представления, определенные для сохраняемх результатов. Для стандартных представлений целых чисел надежности гарантировать не удается: к примеру, сло ение и вычитание маинных целых не подчиняется законам математики (произведение ненулевх чисел, в частности, мо ет дать 0).
5 Русские программисте: прекрасно знают неприятности, которые доставляют многчислен-ные, не согласованные друг с другом, кодировки русских букв.
9.2.
503
ля расирения стандартного набора операций целого типа язковыми образами арифметических машинных команд (например, командами сдвига) есть те же мотивы, что и для булевского типа: система команд конкретного вычислителя.
Современные языки иногда предлагают средства управления представлением различнх числовых типов, ориентированные на повыение точности и корректности вычислений. Это нужно, например, для обеспечения переносимости программ и для гарантированных вычислений6. Применительно к целм средства такого рода сводятся к задани области значений для типа. Вот как это делается в языке Ada: type MyIntl is INTEGER range 0..1000;
Предыдущая << 1 .. 172 173 174 175 176 177 < 178 > 179 180 181 182 183 184 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100