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

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

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

Переменная такого типа может быть описана следующимобразом:Numbers : Numbers_Array (1..5) := (1, 2, 3, 4, 5);Здесь, при описании переменной Numbers предусматривается ограничение (constraint)размеров массива - указывается диапазон значений индекса - (1..5).Пакет Standard предоставляет предопределенный тип String, который описывается какнеограниченный массив символов:type String is array (Positive range <>) of Character;Таким образом, тип String может быть использован для описания обширного классасимвольных массивов, которые идентичны во всем, кроме количества элементов в массиве.Также как и в предыдущем примере описания переменной Numbers, для создания фактическогомассива типа String, мы должны предусмотреть ограничение диапазона возможных значенийиндекса:My_Name : String (1..20);Здесь, ограничение диапазона индексных значений находится в диапазоне 1..20.Преимущество такого подхода в том, что все описанные строки имеют один и тот же тип, имогут, таким образом, использоваться как параметры подпрограмм.

Такой дополнительныйуровень абстракции позволяет более общее использование подпрограмм обработки строк.Необходимо заметить, что для инициализации объектов типа String, можно использоватьагрегаты, поскольку тип String, по сути, является массивом символов. Однако, болеецивилизованным способом будет использование строковых литералов. Так, вышеописаннуюпеременную My_Name, можно инициализировать следующим образом:My_Name := "Alex";Следует учесть, что в приведенном примере, строковый литерал, указывающий имя, необходимодополнить пробелами, чтобы его размер совпадал с размером описанной переменной. Впротивном случае, компилятор может выдать предупреждение о возбуждении исключенияConstraint_Error во время выполнения программы.При описании строк, которым присваиваются начальные значения, границы диапазона можно неуказывать:Some_Name: String := "Vasya Pupkin";Some_Saying : constant String := "Beer without vodka is money to wind!";Для обработки каждого элемента переменной, которая порождается при использовании типанеограниченного массива, требуется использование таких атрибутов типа массив, как A'Range,A'First и т.д., поскольку не известно какие индексные значения будет иметь обрабатываемыймассив.My_Name: String (1..20);My_Surname : String (21..50);Обычно, неограниченные массивы реализуются с объектом который хранит значения границдиапазона индекса и указатель на массив.4.4 Стандартные операции для массивовСуществует несколько операций, которые могут выполняться не только над отдельнымиэлементами массива, но и над целым массивом.4.4.1 ПрисваиваниеЦелому массиву может присваиваться значение другого массива.

Оба массива должны бытьодного и того же типа. Если оба массива одного и того же неограниченного типа, то они должнысодержать одинаковое количество элементов.declareMy_Name : String(1..10) := "Dale";Your_Name : String(1..10) := "Russell ";Her_Name : String(21..30) := "Liz";His_Name : String(1..5) := "Tim ";beginYour_Name := My_Name;Your_Name := Her_Name;-- это корректно, поскольку в обоих случаях-- оба массива имеют одинаковое количество-- элементовHis_Name := Your_Name; -- это приведет к возбуждению исключения:-- хотя обе переменные одного и того же типа,-- но они имеют различную длину (число элементов)end;4.4.2 Проверки на равенство и на неравенствоПроверки на равенство и на неравенство доступны почти для всех типов Ады.

Два массивасчитаются равными если каждый элемент первого массива равен соответствующему элементувторого массива.if Array1 = Array2 then....4.4.3 КонкатенацияСимвол & может быть использован как знак операции конкатенации двух массивов.declaretype Vector is array(Positive range <>) of Integer;A : Vector (1..10);B : Vector (1..5) := (1, 2, 3, 4, 5);C : Vector (1..5) := (6, 7, 8, 9, 10);beginA := B & C;Put_Line("hello" & " " & "world");end;4.4.4 Сравнение массивовДля сравнения одномерных массивов могут быть использованы следующие знаки операций "<","<=", ">" и ">=".

Они наиболее полезны при сравнении массивов символов (строк)."hello" < "world"-- возвращает результат "истина" (True)В общем случае, можно сравнивать только те массивы у которых можно сравнивать между собойиндивидуальные компоненты. Таким образом, например, нельзя сравнивать массивы записейдля которых не определена операция сравнения. (то есть, чтобы обеспечить возможностьсравнения массивов записей, необходимо, чтобы была определена операция сравнения длязаписи компонента массива).4.4.5 Логические операцииЕсли знаки логических операций "and", "or", "xor", "not" допускается использовать дляиндивидуальных компонентов массива, то использование знаков логических операций длятакого массива также будет допустимым (например, в случае массива логических значений типаBoolean).4.5 Динамические массивыАда позволяет не указывать размеры массива при написании программы.

В этом случае размерымассива не фиксируются во время компиляции программы, а определяются во время еевыполнения, что во многих случаях более предпочтительно. Массивы подобного вида известныкак динамические массивы. Кроме того, в отличие от многих других языков программирования,Ада позволяет использование динамических массивов в качестве значения результата,возвращаемого функцией.declareXAbegin: Integer := Y -- значение Y описано где-то в другом месте: array (1..X) of Integer;for I in A'Range loop...end loop;end;procedure Demo(Item: String) isCopy : String(Item'First..Item'Last) := Item;Double : String(1..2 * Item'Length) := Item & Item;begin.

. .Следует заметить, что не стоит позволять вводу пользователя устанавливать размер массива, иприведенный пример (с декларативным блоком) не должен использоваться как способ решенияэтой задачи. Использование второго примера наиболее типично.5. Записи (record)Понятие записи, также как и понятие массива, является механизмом структурирования данных.Однако, в отличие от массива, запись позволяет сгруппировать в одном объекте набор объектовкоторые могут принадлежать различным типам. При этом объекты из которых состоит записьчасто называют компонентами или полями записи.Для работы с записями, Ада предлагает средства подобные тем, которые предоставляют другиесовременные языки программирования, а также дополняет их некоторыми своимиособенностями.

Также как и для массивов, для записей предусматривается использованиеагрегатов. Использование дискриминантов позволяет создавать вариантные записи, указыватьразмер для записи переменного размера и выполнять инициализацию компонентов записи.5.1 Простые записи5.1.1 Описание простой записиКак уже было сказано, запись - это структура данных состоящая из набора различныхкомпонентов.

В Аде, для описания такой структуры данных, необходимо описать тип записи. Вобщем случае, описание типа записи имеет следующий вид:type <имя_записи> isrecord<имя_поля_1> : <тип_поля_1>;<имя_поля_2> : <тип_поля_2>;...<имя_поля_N> : <тип_поля_N>;end record;Например:type Bicycle isrecordFrame: Construction;Maker: Manufacturer;Front_Brake : Brake_Type;Rear_Brake : Brake_Type;end record;My_Bicycle: Bicycle;Примечательно, что описание индивидуальных компонентов записи выглядит как описаниепеременных.

Также, следует заметить, что описание типа записи не создает экземпляр объектазаписи. В приведенном выше примере, тип Bicycle описывает структуру записи, а переменнаяMy_Bicycle типа Bicycle - является экземпляром записи.В отличие от массивов, Ада не позволяет создавать анонимные записи. Таким образом,следующий пример описания будет неправильным:My_Bicycle: record-- использование анонимных-- записей - ЗАПРЕЩЕНО!!!Frame: Construction;Maker: Manufacturer;Front_Brake : Brake_Type;Rear_Brake : Brake_Type;end record;Из этого следует, что сначала необходимо описать тип записи, а затем описывать объекты этоготипа.5.1.2 Значения полей записи по-умолчаниюПри описании записи, полям записи могут быть назначены значения по-умолчанию. Этизначения будут использоваться всякий раз при создании экземпляра записи данного типа (до техпор пока они не будут инициализированы другими значениями).type Bicycle isrecordFrame: Construction := CromeMolyebdenum;Maker: Manufacturer;Front_Brake : Brake_Type := Cantilever;Rear_Brake : Brake_Type := Cantilever;end record;5.1.3 Доступ к полям записиВ Аде организация доступа к индивидуальным полям записи осуществляется с помощьюточечной нотации, за именем переменной-записи, которое сопровождается точкой, следует имяполя записи.

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

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

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

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