Главная » Просмотр файлов » Н. Джехани - Язык Ада (1988)

Н. Джехани - Язык Ада (1988) (1160771), страница 38

Файл №1160771 Н. Джехани - Язык Ада (1988) (Н. Джехани - Язык Ада (1988)) 38 страницаН. Джехани - Язык Ада (1988) (1160771) страница 382019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Повторное возбуждение исключения При возникновении исключения выполнение программы не продолжается с той точки, в которой возбуждено исключение. Вместо оставшейся части блока, подпрограммы или задачи, в которой появилось исключение, выполняется соответствующий обработчик исключения; если обработчик исключения не указан, то выполнение блока, подпрограммы или задачи, в которой появилось исключение, прекращается. Тем не менее оператор, в котором возникло исключение, может быть выполнен повторно, если оператор вложить в блок с локальным обработчиком исключения, а сам блок поместить в цикл.

Иногда ошибки (т. е. исключения) при взаимодействии с устройствами ввода и вывода, такими как накопители на магнитных лентах, вызываются кратковременными нарушениями, например шумами в сети. В этих случаях часто бывает достаточно повторно запустить невыполненную операцию через некоторое время. В других случаях может быть желательно повторить операцию после того, как обработчик исключения исправит некоторые условия, которые могли вызвать исключение. Например, некоторая операция может привести к возникновению исключения БТОКАОЕ ЕККОК, потому что нет свободной памяти.

Операция повторяется после освобождения памяти в обработчике исключения или после сборки мусора. Следующий фрагмент [1СН80] иллюстрирует попытку прочитать ленту !О раз, прежде чем отказаться от дальнейшего чтения. -- в случае возникновения ошибки, ленту пытаются прочитать еще раз, -- но после !О раз отказываются от подобных попыток Рог! 1п 1..10 !оор Ьей!и КЕАзз ТАРЕ(ВЬОСК); ехзе -- подходящее использование оператора выхода ехеербоп згЬеп ТАРЕ ЕККОК ) и 1 !0 ФЬеп га!ве ТАРЕ )ЗК1ЧЕ МАЬРЬ)ХСТ!ОХ; е1ее ВАСК БРАСЕ; — возврат к началу последнего блока епб И; епб; епд 1оор; тйй Исключении 5.8.

Блокировка исключений 111.71 ргайгва Я)РРзчЕВВ (имя проверки [, 1О(ч( 1 имя1); Второй параметр является объектом или именем типа, для которого проверка должна подавляться. Если второй параметр опушен, то проверка будет подавлена во всех компонентах, содержащих прагму. Проверки, которые можно подавить, и соответствующие исключения приведены в таблице. Возмоягпое агключепаа Подавлвппая проверка Ошибка ограничения (СОГСЯТКА!Г(Т ЕККОК) Проверка ссылки Проверка днскриминанта Проверка индекса ПРоверка длины Проверка диапазона Числовая ошибка ((Ч()МЕК)С ЕККОК) Проверка деления ПРовеРка переполнения ПРограммная ошибка (РКООКАМ ЕККОК) Проверка предвыпоянения Ошибка памяти (бтОкАОе еккОк) Проверка памяти 5.9. Примеры В этом разделе рассматриваются примеры, иллюстрирующие обработку исключений, которые встречаются в пакетах, подпрограммах и задачах.

Первый пример демонстрирует использование исключений для модификации пакета Р(ГО П Следовательно, наличие прагмы Я)РРКЕЕЗ не гарантирует, что соответствующее исключение не будет возбуждено. Прим. Ред. Обычно при возникновении исключений они возбуждаются автоматически, но возбуждение некоторых предопределенных исключений может быть подавлено, если компилятору данп указание не проверять некоторые условия (например, деление на нуль или неинициализированные переменные). Прагма В1)РРКЕЯЯ используется для подавления проверок.

Компилятор может игнорировать прагму Я)РРзчЕВЯ, если подавление проверки невозможно или оно стоит слишком дорого". Подавление проверок может привести к программе, которая будет выполняться быстрее и использовать меньше памяти, так как код для выполнения проверок не будет вставляться в программу.

Например, код для проверки, являются ли индексы массива правильными или нет, может быть опушен, если подавляется проверка 1(ч(гзЕХ СНЕСК. Пользователь должен быть очень осторожным, особенно в ответственных случаях, лри многочисленных подавлениях проверок. Проверки могут быть подавлены только после гарантии того, что соответствующие условия не возникнут во время выполнения программы. Областью видимости подавления проверок является блок, тело подпрограммы, пакета или задачи, в описательной части которой появляется прагма ЯзРРзчЕЯЯ.

Прагма В1)РРКЕБВ имеет форму Главв в (гл. 3) для обработки граничных условий. Следующий пример показывает различия в обработке исключений в итеративной и рекурсивной программах вычисления факториала. Еще два примера объясняют использование обработки исключительных ситуаций в задачах предупреждения пожара в доме и управления ядерным реактором для защиты его от перегрева или переохлаждения. Пример слияния двух отсортированных файлов иллюстрирует использование исключений при файловой обработке, т.

е. как обработка исключения влияет на завершение работы программы и каким образом устанавливается соответствие между операцией возбуждения и предопределенным исключением. Следующий пример показывает возможность составления подпрограмм для выражения своих «последних желаний» перед их завершением из-за возникновения исключения.

Наконец, последний пример программы синтаксического анализа описывает использование определенного пользователем исключения для завершения выполнения ее работы, когда дальнейшая обработка является нецелесообразной. 5.9.1. Пакет ЕЛО (из примера гл. 3 о мнолсестве очередей с приоритетами) Задача заключается в том, чтобы модифицировать пакет НРО таким образом, чтобы при попытке добавления нового элемента к заполненной очереди или при попытке удаления элемента из пустой очереди происходило возбуждение соответствующего исключения.

Для обработки подобных граничных условий в пакете НРО проведем следующие изменения: 1. Исключения НП.Ь и ЕМРТУ опишем в спецификации НРО. 2. В процедурах (< АРО и О Г1йБТ условные операторы, печатающие сообщения о состоянии очереди, заменим условными операторами, возбуждающими соответствующие исключения. Например, условный оператор !1 Я.С1)В 31ЕЕ МАХ $1г.Е !Ьев Р()Т («ОШИБКА: очередь полна»); 1<(Е%/ 1,1)ч Е; ге!вгп; енв !1; в О АР(З заменим на условный оператор Ы'Я.С(Ж 31УЕ МАХ $1к,Е гЬев га!яе ИЛЛ.; ев<$ !1; Обработка исключений НРО.НЛЛ. и НРО.ЕМРТУ для стека НГО (пакета РК1Ой1ТУ (6)Е()ЕБ в данном случае)„конечно, возлагается на пользователя.

Например, процедуру АОР в теле пакета Рй!Ой1Тз' ЯОЕ()ЕЯ ргвееввге А1))З(Р: !в РВ1ОВ1ТУ; 1: !в 1ОВ 1Р) !в Ьей!в 0 А1))З(РЯ(Р), 1); ев<1 А(з)З; Исключения пользователь должен заменить на ргосеннге АМ)(Р: !в РК1ОК1ТУ; У: !п )ОВ Ю) 1в Ье(!!а О А1)О(Р О(Р), 1); ехсербоп иЬеа РОЬЬ > -- принять меры для обработки случая, — если очередь полна еао АОР; 5.9.2. Факториал Требуется написать функцию для вычисления факториала числа и (и > О). Значение факториала часто является очень большой величиной, поэтому при возбуждении исключения ХУМЕК1С ЕККОК функция должна возвращать наибольшее значение типа 1ХТЕОЕК. Итеративный вариант вычисления функции ГАСТ 1ТЕК следующий: Вшсбоп ГАСТ 1ТЕК(Х: ХАТ1)КАЬ) гепвп 1ХТЕОЕК !я РАСТ: 1ХТЕОЕК: 1; Ье(!!в 1ог 1!а 2..Х !оор РАСТ: РАСТ Я 1; сад 1оор; гевав РАСТ; ехсерВов ггЬеп Х()МЕК1С ЕККОК > ге!ага 1ХТЕОЕК'ЬАБТ; еш! РАСТ 1ТЕК; Рекурсивный вариант для функции факториала РАСТ КЕС имеет вид йшс!!оа РАСТ КЕС(Х: ХАТ()КАЬ) гении 1ХТЕОЕК !я Ье!ра !1Х -0 гЬев гение 1; е!яе гевпв Х ° РАСТ КЕС(Х вЂ” !); ° а!1; ехсерг!ов ггЬеа ХЫМЕК1С ЕККОК > гешга 1ХТЕОЕК'ЬАЗТ; евд РАСТ КЕС; В итеративном и рекурсивном вариантах вычисления функции факториала возбуждение и обработка исключений будут различными.

В случае РАСТ 1ТЕК при возникновении переполнения происходит возбуждение исключения ХУМЕК1С ЕККОК, вызывающее завершение выполнения основной части программы и возврат 1ХТЕОЕК'ЬАБТ через обработчик исключения. В случае ГАСТ КЕС, как только возникает переполнение, текущая конкретизация РАСТ-КЕС завершается со значением 1ХТЕОЕК'ЬАВТ, полученным преды- Глава б душей активизацией. Если переполнение возникает еше раз, то вновь происходит возбуждение исключения )ч!1)МЕК1С ЕККОК. Возбуждение исключения происходит каскадно до первой активизации, которая в конечном счете и возвращает 1)ч(ТЕОЕК'ЬАЯТ как факториал числа )х!.

В итеративном варианте вычисления функции факториала исключение (ч(ОМЕК1С ЕККОК возбуждается не более одного раза, в то время как в рекурсивном случае исключение может быть возбуждено несколько раз'!. 5.9.3. Управление ядерным реактором Задача заключается в том, чтобы спроектировать задачу ЧЕЯБЕЬ МО)Ч1ТОК, осуществляющую управление температурой стен камеры сжатия ядерного реактора. Эта задача начинает управлять камерой сжатия (т. е. становится активной) только после запуска задачи, названной БТАКТ КЕАСТОК, когда как в камере сжатия установится температура, величина которой будет находится около оптимальной Т ОРТ. Температура камеры сжатия должна поддерживаться между Т М1)х! и Т МАХ и по возможности поддерживаться около Т ОРТ(Т М11ч < < Т-ОРТ < Т МАХ).

Если температура камеры сжатия выходит за зти пределы, то реактор сразу же необходимо остановить, а затем выяснить, что произошло. Температура камеры сжатия может быть увеличена или уменьшена на величину ОЕЬТА Т путем уменьшения или увеличения потока охладителя через иее на величину 1зЕЬТА Е Ббльшие изменения температуры камеры сжатия можно получить за счет пропорционального увеличения или уменьшения потока охладителя. Пакет РКЕББ()КЕ ЧЕББЕЬ используется для того, чтобы управлять потоком охладителя вокруг камеры сжатия, считывая самое последнее значение температуры камеры сжатия и т.

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

Тип файла
DJVU-файл
Размер
4,41 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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