Ada (798525), страница 4

Файл №798525 Ada (Ada) 4 страницаAda (798525) страница 42019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

Например:typeUnsigned_Byteis mod 2 ** 8;-- (2 ** 8) = 256typeSigned_Byteis range -128 .. +127;U : Unsigned_Byte := 150;S : Signed_Byte:= Signed_Byte(U);-- здесь будет сгенерировано исключение-Constraint_ErrorЭтот код будет вызывать генерацию исключения Constraint_Error.В следующем параграфе приводятся описания предопределенных модульных типовпредставленных в пакете Interfaces. Заметим, что для этих модульных типов (они описаны сиспользованием двоичной системы счисления) предопределены операции побитного сдвига ивращения.2.2.8 Дополнительные целочисленные типы системы компилятора GNATСтандарт языка Ада допускает определять в реализации Ада-системы собственныедополнительные целочисленные типы. Таким образом, в пакете Standard системы компилятораGNAT определены дополнительные целочисленные типы:typetypetypetypeShort_Short_IntegerShort_IntegerLong_IntegerLong_Long_Integerisisisisrangerangerangerange-(2-(2-(2-(2********7) ..

+(2 ** 7 15) .. +(2 ** 1531) .. +(2 ** 3163) .. +(2 ** 631);- 1);- 1);- 1);Кроме этого, стандарт требует наличия определения дополнительных 8-, 16-, 32- и 64-битныхцелочисленных типов в пакете Interfaces:typetypetypetypeInteger_8Integer_16Integer_32Integer_64isisisisrangerangerangerangetypetypetypetypeUnsigned_8Unsigned_16Unsigned_32Unsigned_64isisisismodmodmodmod-2-2-2-22222** 7 .. 2** 15 .. 2** 31 ..

2** 63 .. 2** 7 - 1;** 15 - 1;** 31 - 1;** 63 - 1;** 8;** 16;** 32;** 64;2.3 Вещественные типыАда предусматривает два способа представления вещественных чисел: представлениевещественных величин с плавающей точкой и представление вещественных величин сфиксированной точкой. Кроме этого вы можете использовать типы вещественных величин сдесятичной фиксированной точкой.2.3.1 Вещественные типы с плавающей точкой, тип FloatВещественные типы с плавающей точкой имеют неограниченный диапазон значений и точность,определяемую количеством десятичных цифр после запятой.

Представление чисел с плавающейточкой имеет фиксированную относительную погрешность.Пакет Standard предоставляет предопределенный вещественный тип с плавающей точкойFloat, который обеспечивает точность в шесть десятичных цифр после запятой:typeFloatis digits 6 range -16#0.FFFF_FF#E+32 ..

16#0.FFFF_FF#E+32;--3.40282E+38 .. 3.40282E+38В пакете Standard компилятора GNAT, для 32-битных систем Linux и Windows, дополнительнопредставлены еще несколько вещественных типов с плавающей точкой (фактические значенияконстант для различных платформ отличаются):typeShort_Floatis digits 6range -16#0.FFFF_FF#E+32 .. 16#0.FFFF_FF#E+32;-- -3.40282E+38 .. 3.40282E+38typeLong_Floatis digits 15range -16#0.FFFF_FFFF_FFFF_F8#E+256 .. 16#0.FFFF_FFFF_FFFF_F8#E+256;-- -1.79769313486232E+308 .. 1.79769313486232E+308typeLong_Long_Float is digits 18range -16#0.FFFF_FFFF_FFFF_FFFF#E+4096 .. 16#0.FFFF_FFFF_FFFF_FFFF#E+4096;---1.18973149535723177E+4932 ..1.18973149535723177E+4932Ниже следуют примеры описаний вещественных величин с плавающей точкой.XA, B, CPiAvogadro::::Float;Float;constant Float := 3.14_2;constant := 6.027E23;-- тип Universal_Floatsubtype Temperatures is Float range 0.0..100.0;type Result is new Float range 0.0..20_000.0;type Velocity is new Float;type Height is new Float;-- нельзя случайно смешивать Velocity и Height-- без явного преобразования типов.type Time is digits 6 range 0.0..10_000.0;-- в этом диапазоне требуемая точность - шесть десятичных цифр-- после точкиtype Degrees is digits 2 range -20.00..100.00;-- требуемая точность - две десятичных цифры после точкиСледующие знаки операций предопределены для каждого вещественного типа с плавающейточкой.+, -, *, /**absвозведение в степень (только целые значения степени)абсолютное значение2.3.2 Вещественные типы с фиксированной точкой, тип DurationПредставление чисел с фиксированной точкой имеет более ограниченный диапазон значений иуказанную абсолютную погрешность, которая задается как delta этого типа.В пакете Standard предоставлен предопределенный вещественный тип с фиксированной точкойDuration, который используется для представления времени и обеспечивает точностьизмерения времени в 50 микросекунд:type Duration is delta 0.000000001range -((2 ** 63 - 1) * 0.000000001) ..+((2 ** 63 - 1) * 0.000000001);Ниже следуют примеры описаний вещественных типов с фиксированной точкой.type Volt is delta 0.125 range 0.0 ..

255.0;type Fraction is delta System.Fine_Delta range -1.0..1.0;-- Ada95-- Fraction'Last = 1.0 - System.Fine_DeltaПоследний пример показывает полезную способность вещественных типов с фиксированнойточкой - четкое определение насколько тип должен быть точным. Например, это позволяетконтролировать ошибки, возникающие при округлении.2.3.3 Вещественные типы с десятичной фиксированной точкойСледует учитывать, что поскольку от реализации компилятора Ады не требуется обязательноеобеспечение поддержки вещественных величин с десятичной фиксированной точкой, то этоможет вызвать трудности при переносе программного обеспечения на другую систему или прииспользовании разных компиляторов.Примером описания вещественного типа с десятичной фиксированной точкой может служитьследующее:type Money is delta 0.01 digits 15; -- десятичная фиксированная точка,-- здесь величина, задаваемая в delta,-- должна быть степенью 10subtype Salary is Money digits 10;2.3.4 Типы Universal_Float и Root_RealПодобно тому как все целочисленные литералы принадлежат универсальному классуUniversal_Integer, все вещественные численные литералы принадлежат универсальномуклассу Universal_Float.

Этот универсальный тип совместим с любым вещественным типомс плавающей точкой и любым вещественным типом с фиксированной точкой. Такой подходизбавляет от необходимости выполнения различных преобразований типов при описаниивещественных констант и переменных.Модель вещественной арифметики Ады основывается на анонимном типе Root_Real. Этотанонимный тип используется как базовый тип для всех вещественных типов. Тип Root_Realимеет точность, которая определяется значением константы Max_Base_Digits пакета System(System.Max_Base_Digits).

Такой подход использован для облегчения переносимостипрограмм.2.3.5 Пакеты для численной обработкиПолное обсуждение поддержки численной обработки в Аде - весьма обширная тема. Поэтомуздесь, чтобы указать "куда бежать дальше", мы только приведем список пакетов для численнойобработки, которые предоставляются поставкой компиляора GNAT:Ada.NumericsAda.Numerics.AuxAda.Numerics.Float_RandomAda.Numerics.Discrete_RandomAda.Numerics.Complex_TypesAda.Numerics.Complex_Elementary_FunctionsAda.Numerics.Elementary_FunctionsAda.Numerics.Generic_Complex_TypesAda.Numerics.Generic_Complex_Elementary_FunctionsAda.Numerics.Generic_Elementary_FunctionsAda.Numerics.Long_Complex_TypesAda.Numerics.Long_Complex_Elementary_FunctionsAda.Numerics.Long_Elementary_FunctionsAda.Numerics.Long_Long_Complex_TypesAda.Numerics.Long_Long_Complex_Elementary_FunctionsAda.Numerics.Long_Long_Elementary_FunctionsAda.Numerics.Short_Complex_TypesAda.Numerics.Short_Complex_Elementary_FunctionsAda.Numerics.Short_Elementary_FunctionsСледует заметить, что пакет Ada.Numerics.Aux, который указан выше, не предназначен длянепосредственного использования в программах пользователя, и упоминается только с цельюполноты показанного выше списка.2.4 Преобразование численных типовПоскольку тип Float и тип Integer - различные типы, то Ада не допускает смешиваниявеличин этих типов в одном выражении.

Однако, встречаются случаи, когда нам необходимокомбинировать значения этих типов. В таких ситуациях нам необходимо производитьпреобразование значений одного численного типа в значения другого численного типа.Ада позволяет явно указывать необходимость преобразования значения типа Float в значениетипа Integer, и наоборот. Для выполнения такого преобразования используется синтаксисподобный синтаксису вызова функции:X : Integer := 4;Y : Float;Y := Float(X);...X := Integer(Y);В этом случае компилятор, во время трансляции, добавит необходимый код для преобразованиятипов. Такое преобразование типов всегда возможно, и будет успешным если значениерезультата не будет нарушать границ допустимого диапазона значений.Следует заметить, что при преобразовании вещественного значения Float в целое значениеInteger Ада использует традиционные для математики правила округления, то есть:Значение FloatОкругленное значение Integer1.521.31-1.5-2-1.3-12.5 Перечислимые типыДо настоящего момента были рассмотрены типы данных которые представляли численныезначения (целые и вещественные числа).

Однако, при решении многих практических задач,важное значение имеет понятие перечислимого типа. Перечислимыми типами называют такиетипы данных значения которых перечислены, то есть представлены списком некоторыхзначений. Перечислимый тип полезен когда необходимо представить фиксированное множествозначений, которые не являются числами. Примером может служить представление дней неделиили месяцев в году.2.5.1 Описание перечислимого типаПеречислимый тип описывается путем предоставления списка всех возможных значенийданного типа в виде идентификаторов (другими словами, перечислением всех возможныхзначений данного типа). Например:type Computer_Language is (Assembler, Cobol, Lisp, Pascal, Ada);type C_Letter_Languages is (Cobol, C);После такого описания типов, константы и переменные этих типов могут быть описаныследующим образом:A_LanguageEarly_LanguageFirst_LanguageExample::::Computer_Language;Computer_Language := Cobol;constant Computer_Language := Assembler;C_Letter_Language := Cobol;Необходимо заметить, что порядок перечисления значений типа, при описании перечислимоготипа, имеет самостоятельное значение - он устанавливает отношение порядка следованиязначений перечислимого типа, которое используется атрибутами 'First, 'Last, 'Pos, 'Val,'Pred, 'Succ (см "Атрибуты типов"), а также при сравнении величин перечислимого типа.Так, для типа Computer_Language, описанного в примере выше, значение Assembler будетменьше чем значение Cobol.В одной программе допускается использование одного и того же перечислимого литерала вописаниях различных перечислимых типов.

Так, в показанном выше примере, литерал Cobolвстречаетсяприописаниидвухразныхтипов:Computer_LanguageиC_Letter_Languages. Такие литералы называют совмещенными (или перегруженными).При этом, Ада, в большинстве случаев, распознает одинаковые перечислимые литералыразличных перечислимых типов. В случаях, когда это не возможно - необходимо использоватьквалификацию типов.Рассмотрим следующий пример:type Primary is (Red, Green, Blue);type Rainbow is (Red, Yellow, Green, Blue, Violet);...for I in Red..Blue loop ...-- это двусмысленноЗдесь, компилятор не может самостоятельно определить к какому из двух типов (Primary илиRainbow) принадлежит диапазон значений Red..Blue переменной цикла I (литералы Red иBlue - совмещены). Поэтому, в подобных случаях, нам необходимо точно указывать требуемыйтип, используя квалификацию типа:for I in Rainbow'(Red)..Rainbow'(Blue) loop ...for I in Rainbow'(Red)..Blue loop ...-- необходима только одна квалификацияfor I in Primary'(Red)..Blue loop ...Квалификация типа не изменяет значения типа и не выполняет никаких преобразований типа.Она только информирует компиляор о том какой тип, в данном случае, подразумеваетпрограммист.При описании перичислимых типов, для указания значений перечислимого типа также как исимволические имена, допускается использовать символьные константы.

В этом случаеперечислимый тип будет символьным (см. "Символьные типы Ады").В заключение обсуждения описания перечислимых типов, заметим, что перечислимые ицелочисленные типы называют дискретными типами, потому что они описывают множестваупорядоченных дискретных значений.

Характеристики

Тип файла
PDF-файл
Размер
646,98 Kb
Материал
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее