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

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

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

Следует заметить, что в левой части может распологаться имя только однойпеременной. В правой части записывается выражение (expression) результат вычислениякоторого становится новым значением переменной result. Выражение expression, расположенноев правой части, может быть одиночной переменной или константой, может содержатьпеременные, константы, знаки операций и вызовы функций.

Тип переменной определяемой какresult должен быть совместим по присваиванию с типом результата вычисления выраженияexpression.Выполнение присваивания разделяется на несколько действий. Сначала производитсявычисление имени переменной result и результата выражения expression (порядок следованияэтих действий не регламентирован стандартом языка). После этого, в случае успеха, дляпеременных скалярных типов проверяется принадлежность значения результата вычислениявыражения expression подтипу переменной. Если проверка успешна, то значение результатавычисления выражения expression становится новым значением содержимого переменной result.При этом старое значение содержимого result - теряется. Иначе, в случае какой-либо неудачи,возбуждается исключение ошибки ограничения или, проще говоря, - ошибка, а значениепеременной result остается без изменений.Приведем несколько примеров инструкций присваивания:A := B + CX := YСледует заметить, что в Аде, в результате выполнения присваивания производится изменениетолько содержимого result (значение содержимого переменной указанной в левой части).Необходимо также подчеркнуть, что операция присваивания в Аде, в отличие от языков C/C++,не возвращает значение и не обладает побочными эффектами.

Кроме того, напомним, чтооперация присваивания, в Аде, не допускает совмещение, переименование и использованиепсевдонимов, а также она запрещена для лимитированных типов.3.3 БлокиБлок содержит последовательность инструкций, перед которой может располагаться разделописаний (все описания локальны для блока и не доступны вне блока). За последовательностьюинструкций могут следовать обработчики исключений (обработка исключений в Адерассматривается позже). В общем случае инструкция блока Ады имеет вид:declare-- локальные описанияbegin-- последовательность инструкцийexeption-- обработчики исключенийend;Блок может иметь имя. Для этого перед инструкцией блока записывается идентификатор, закоторым ставится двоеточие.

При именовании блока, имя блока должно указываться после endзавершающего блок:Some_Block:declareX : Integer;beginX := 222 * 333;Put(X);end Some_Block;3.4 Условные инструкции ifДля организации условного выполнения последовательностей алгоритмических действий (тоесть, построения разветвляющихся алгоритмов), в Аде могут использоваться условныеинструкции if.Каждая инструкция if заканчивается конструкцией "end if".if <логическое_выражение> then-- последовательность инструкцийend if;if <логическое_выражение> then-- последовательность инструкций 1else-- другая последовательность инструкций 2end if;В первом примере, приведенном выше, последовательность инструкций, описывающаяалгоритмические действия, будет выполнена только в случае когда результат вычислениялогического выражения будет иметь значение True.

Во втором примере, в случае когдарезультатвычислениялогическоговыраженияTrueбудетвыполняться"последовательность инструкций 1", в противном случае - "последовательностьинструкций 2".Для сокращения инструкций вида "else if ... ", и в целях улучшения читабельности,введена конструкция elsif, которая может быть использована столько раз, сколько это будетнеобходимо.if <логическое_выражение> then-- последовательность инструкций 1elsif <логическое_выражение> then-- последовательность инструкций 2elsif <логическое_выражение> then-- последовательность инструкций 3else-- последовательность инструкцийend if;В этой форме инструкции if, заключительная конструкция else - опциональна.Необходимо также заметить, что результат вычисления логического выражения всегда должениметь предопределенный тип Standard.Boolean.3.5 Инструкция выбора сaseЕще одним средством позволяющим строить разветвляющиеся алгоритмы является инструкциявыбора сase.Инструкция выбора сase должна предусматривать определенное действие для каждоговозможного значения переменной селектора (переключателя).

В случаях, когда невозможноперечислить все значения переменной селектора, нужно использовать метку others.Каждое значение выбора может быть представлено как одиночное значение (например, 5), какдиапазон значений (например, 1..20), или как комбинация, состоящая из одиночных значенийи/или диапазонов значений, разделенных символом '|'.Каждое значение выбора должно быть статическим значением, то есть оно должно бытьопределено компилятором во время компиляции программы.caseвыражениеiswhen значение_выбора => действияwhen значение_выбора => действия...when others => действияend case;Важные примечания:••"выражение", в инструкции case, должно быть дискретного типаметка others обязательна в инструкции сase тогда, когда инструкции when неперечисляют всех возможных значений селектора.case Letter iswhen 'a'..'z'| 'A'..'Z' => Put ("letter");when '0'..'9'when ''' | '"' | '`'when '&'when othersend case;=> Put ("digit! Value is"); Put (letter);=> Put ("quote mark");=> Put ("ampersand");=> Put ("something else");В некоторых случаях, в качестве действий, указываемых для метки others, можетиспользоваться пустая инструкция null:...when others => null; -- ничего не делать.

. .3.6 Организация циклических вычисленийПри решении реальных задач часто возникает необходимость в организации циклическихвычислений. Все конструкции организации циклических вычислений в Аде имеют форму "loop... end loop" с некоторыми вариациями. Для выхода из цикла может быть использованаинструкция exit.3.6.1 Простые циклы (loop)Примером простейшего цикла может служить бесконечный цикл. Обычно он используетсясовместно с инструкцией exit, рассматриваемой позже.loop-- инструкции тела циклаend loop;3.6.2 Цикл whileВо многих случаях, прежде чем выполнять действия которые описываются инструкциями телацикла, необходимо проверить какое-либо условие.

Для таких случаев Ада предусматриваетконструкцию цикла while.Цикл while идентичен циклу while в языке Паскаль. Проверка условия выполнения циклапроизводится до входа в блок инструкций составляющих тело цикла. При этом, если результатвычисления логического выражения будет True, то будет выполнен блок инструкций телацикла.

В противном случае, тело цикла - не выполняется.while логическое_выражение loop-- инструкции тела циклаend loop;Необходимо заметить, что результат вычисления логического выражения должен иметьпредопределенный тип Standard.Boolean3.6.3 Цикл forЕще одним распространенным случаем является ситуация когда необходимо выполнитьнекоторые действия заданное количество раз, то есть организовать счетный цикл. Для этого Адапредусматривает конструкцию цикла for.Конструкция цикла for Ады аналогична конструкции цикла for, представленной в языкеПаскаль.Существует несколько правил использования цикла for:•••тип переменной-счетчика цикла for определяется типом указываемого диапазоназначений счетчика, и должен быть дискретного типа, вещественные значения недопустимысчетчик не может быть модифицирован в теле цикла, другими словами - счетчикдоступен только по чтениюобласть действия переменной-счетчика распространяется только на тело циклаПримечательно также, что тело цикла не будет выполняться если при указании диапазоназначений переменной-счетчика величина значения "нижней границы" будет больше чемвеличина значения "верхней границы".for счетчик in диапазон_значений_счетчика loop-- инструкции тела циклаend loop;forCount in 1..20 loopPut (Count);end loop;Возможен перебор значений диапазона в обратном порядке:for счетчик in reverse диапазон_значений_счетчика loop-- инструкции тела циклаend loop;for Count in reverse 1..20 loopPut (Count);end loop;Любой дискретный тип может использоваться для указания диапазона значений переменнойсчетчика.declaresubtype List is Integer range 1..10;beginfor Count in List loopPut (Count);end loop;end;Здесь, тип List был использован для указания диапазона значений переменной-счетчикаCount.

Подобным образом также можно использовать любой перечислимый тип.3.6.4 Инструкции exit и exit whenИнструкции exit и exit when могут быть использованы для преждевременного выхода изцикла. При этом, выполнение программы будет продолжено в точке непосредственноследующей за циклом. Два варианта, показанных ниже, имеют одинаковый эффект:loop-- инструкции тела циклаif логическое_выражение thenexit;end if;end loop;loop-- инструкции тела циклаexit when логическое_выражение;end loop;3.6.5 Именованые циклыИнструкции преждевременного выхода из цикла exit и exit when, обычно, осуществляютвыход из того цикла, который непосредственно содержит данную инструкцию. Однако, мыможем именовать циклы и модифицировать инструкцию выхода из цикла так, чтобыосуществлять выход сразу из всех вложенных циклов.

Во всех случаях, следующая выполняемаяинструкция будет следовать сразу за циклом из которого был осуществлен выход.outer_loop:loop-- инструкцииloop-- инструкцииexit outer_loop when логическое_выражение;end loop;end loop outer_loop;Примечательно, что в случае именованого цикла end loop также необходимо именоватьметкой.3.7 Инструкция перехода gotoИнструкция перехода goto предусмотрена для использования в языке Ада, в исключительныхситуациях, и имеет следующий вид:goto Label;<<Label>>Использование инструкции goto очень ограничено и четко осмысленно. Вы не можетевыполнить переход внутрь условной инструкции if, внутрь цикла (loop), или, как в языкеПаскаль, за пределы подпрограммы.Вообще, при таком богатстве алгоритмических средств Ады, использование goto едва-лиможно считать оправданным.4.

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

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

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

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