Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 145

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 145 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1452019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

13.3.4. Другив ировктныв рвнзвнив Язык Ада предусматривает пять встроенных исключительных ситуаций: СОНЯТВА1НТ ЕККОК НРМЕВ1С ЕВКОК РКОСРАМ ЕКВОК ЯТОВАСЕ ЕККОК ТАЯК1НС ЕККОК Каждая из них в действительности является целой категорией исключительных ситуаций. Например, исключительная ситуация СО(ЧЯТКА1НТ ЕККОК возбуждается, когда индекс массива выходит за пределы допустимого диапазона; когда возникает ошибка, связанная с выходом за пределы допустимого диапазона числовой переменной, имеющей ограниченный диапазон изменения: когда производится ссылка на поле записи, отсутствующее в выделенном объединении, и в некоторых других ситуациях.

Исключительные ситуации. определенные пользователем, можно задавать с помощью объявления следующего вида; список имен исключительных ситуаций: ехсерсдоп Глава 13. Обработка исключительных ситуаций Такие исключительные ситуации обрабатываются точно так же, как и встроенные, за исключением того, что они должны возбуждаться явно. Для встроенных исключительных ситуаций предусмотрены обработчики по умолчанию, каждый их которых приводит к прекращению выполнения программы.

Исключительные ситуации явно возбуждаются оператором кахве, имеющим следующий вид: гаазе [имя исключительной ситуации) Единственным местом, где оператор кахве может появляться без указания имени исключительной ситуации, является обработчик исключительной ситуации. В этом случае оператор казве повторно возбуждает ту исключительную ситуацию. которая привела к выполнению обработчика. Следствием является передача исключительной ситуации в соответствии с правилами, описанными выше. Оператор кахве в обработчике исключительной ситуации используется. если нужно вывести сообщение об ошибке в точке, в которой возникла исключительная ситуация.

а обрабатывать ее где-нибудь в другом месте. Прагма в языке Ада является директивой компилятору. Некоторые проверки во время выполнения программы, являющиеся частями встроенных исключительных ситуаций, могут быть заблокированы в программах на языке Аг)а с помощью прагмы ЯОРРВЕЯЯ, простой вид которой приведен ниже: ркаува БОРРКЕЯЯ(имя проверки) Директива рхауаа ЯУРРКЕЯЯ появляется только в разделах объявлений. При этом указанная в директиве проверка может быть отложена в соответствующем блоке или программном модуле, частью которого является данный раздел объявлений.

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

Имя 1ИОЕХ СНЕСК относится к проверке выхода индекса массива за пределы допустимого диапазона. Имя РАИСЕ СНЕСК относится к проверке таких условий, как диапазон значения, которое должно быть присвоено переменной, относящейся к подтипу. Если условия, предусмотренные проверками 1ИОЕХ СНЕСК и ВАИБЕ СНЕСК, не выполняются, возбуждается исключительная ситуация СОИЯТВА1ИТ ЕККОК. Проверки О1Ч1Я1ОИ СНЕСК и ОЧЕКГ1ОИ СНЕСК вЂ” зто подавляемые проверки, связанные с проверкой ИОЙЕК1С ЕККОК. Приведенная ниже директива рва9аа блокирует проверку выхода индекса массива за пределы допустимого диапазона: ркайьаа ЯОРРКЕЯЯ(1ИЭЕХ СНЕСК); Существует опция директивы БОРРВБЯЯ, позволяющая указанной исключительной ситуации в дальнейшем ограничиваться только конкретными объектами, типами, подтипами и программными модулями. 13.3.

Обработка исключительных ситуаций в языке Ада 33.3.$. Примвр Следующий пример имеет то же предназначение и использует те же обработки исключительных ситуаций, что и программа на РЬ/), приведенная ранее в втой главе. Этот код определяет распределение входных оценок с помощью массивов счетчиков дяя десяти категорий оценок. Недопустимые оценки распознается с помощью проверки неверных индексов, используемой при увеличении выбранного счетчика.

и?ЕЬ ТЕХТ 10; чае ТЕХТ |О; ркооеоцкв 6РАОЕ 01ЯТК1ВОТ10И Еа рао)саде 1ИТЕ6ЕК ТЕХТ 10 Еа пеи 1ИТЕ6ЕК 10(1ИТЕ6ЕК)г иае 1ХТЕ6ЕК ТЕХТ 10г ГВЕНА: акену (1..10] оК Епквйек := (оЕЬвка => 0)г ХЕХ 6ВАОЕ) 1ИОЕХ, ЫМ1Т 1, ЫМ1Т 2 : 1ИТЕ6ЕК) Ье(таю 1оор 6ЕТ(МЕХ 6КАОЕ)г 1ХОЕХ г= МЕХ 6РАОЕ / 10 + 1; Ьвд?п — блок обработчика исключительной ситуации СОИЯТКА|ИТ ЕККОК ГКЕ(](1ХОЕХ) := ГКЕО(1БОЕХ) + 1г виоерсаоп ицвп СОХЯТКА1НТ ЕККОК => з.к МЕХ 6ВАОЕ = 100 с)теп ГКЕО(10) : ГКЕ(](10) + 1' в1ае РОТ["Ошибка — новая оценка: ")г РОТ(МЕХ 6РАОЕ); РОТ("выходит за пределы допустимого диапазона"] МЕХ ЫИЕг а ?Е) впс(г — конец блока обработчика исключительной — ситуации СОИЯТКА1ХТ ЕКВОК впс( 1оорг вксере?оп — Этот обработчик содержит все окончательные вычисления ицеп ЕБО ОГ Г1ЬЕ => РОТ("Границы Частоты: ")г ХЕХ ЫХЕ) МЕХ ЫХЕ) Тот 1ИОЕХ хп 0..9 1оор ЫМ1Т 1 : 10 * 1ИОЕХг ЫМ1Т 2 : ЫМ1Т 1 + 9) Ей 1ХОЕХ = 9 ЕЬеп ЫМ1Т 2 : 100г епг( 1Е; РОТ(ЫМ1Т 1); РОТ(ЫМ1Т 2) г РОт(ГВЯО(1МОех+1))г МЕХ Ь1ХЕ; епс( |оор; — Тот 1ХОЕХ |п 0..9 епг? 6КАОЕ О|ЯТК|ВОТ|ОХ; 362 Глава 13.

Обработка исключительных ситуаций Заметим, что код для обработки неверных входных оценок находится в своем собственном локальном блоке. Это позволяет программе прололжить выполнение после обработки такой исключительной ситуации, как в предыдущем примере. в котором программа считывала числа с клавиатуры. 13.3.6. Оценка Как и в некоторых других языках, обработка исключительных ситуаций в языке Лг)а представляет собой некий консенсус представлений об этом предмете. по крайней мере он был им во время разработки языка (в конце 1970-х и начале ! 980-х голов).

Очевидно. что эта обработка имеет преимушество над обработкой исключительных ситуаций в языке Р(./1. Некоторое время язык Ада был единственным широко распространенным языком, включавшим обработку исключительных ситуаций. Ситуация изменилась с появлением обработки исключительных ситуаций в языках С++ и )ача. 13.4. Обработка исключительных ситуаций в языке С++ Обработка исключительных ситуаций в языке С++ была одобрена комитетом по стандартизации АМ$1 С++ в 1990 году и затем была реализована в языке С.н-. Ее разработка частично основывалась на обработке исключительных ситуаций в языках С1Л3, Аба и М(..

13.4.1. Обработчики исключительных ситуаций В разделе 13.3 показано, что язык Ада использует программные модули или блоки зля указания области видимости обработчиков исключительных ситуаций. Язык С~ зля этой цели использует специальную конструкцию. которая начинается зарезервированным словом ску. Конструкция ску содержит составной оператор, называемый оператороч ску. и список обработчиков исключительных ситуаций. Составной оператор определяет область видимости последуюших обработчиков. Обший вид этой конструкции таков: ску ( // * Код, который может возбуждать исключительную ситуацию ! оасогг(формальный параметр) ( //* Тело обработчика ) оасоЬ(формальный параметр) ( //* Тело обработчика ) Каждая функция овсе)з представляет собой обработчик исключительной ситуации.

Функция оасо)з может иметь только один формальный параметр, подобный формальному параметру в определении функции в языке С++, включая возможность указания в качестве формального параметра эллипсиса (...). Формальный параметр может быть просто спецификатором типа, например, к1оас, как в прототипе функции. Когда информация об исключительной ситуации передается в обработчик, параметр содержит тнп и имя переменной, используемой лля этой цели.

Например, пользователь может определить в 563 13.4. Обработка исключительных ситуаций в языке С++ качестве исключительной ситуации некий класс и включить в него столько данных- членов, сколько необходимо. В противном случае формальный параметр является просто типом, и его предназначение заключается в однозначной идентификации обработчика. Обработчик с эллипснсом в качестве формального параметра является универсальным (са!сй-аП Ьапд1ег); он алтивизируется при любых исключительных ситуациях, если ранее не был выбран другой обработчик.

Процесс, с помощью которого исключительные ситуации связываются с обработчиками. обсуждается в разделе 13.4.2. В языке С++ обработчики исключительных ситуаций могут содержать любой код на этом языке. 13.4.2. Связывание исключительных ситуаций с обработчиками Исключительные ситуации в языке С++ возбуждаются только явным оператором гззгон, имеющим слелуюший общий вид; ГЬгон[выражение) Квадратные скобки являются метасимволами, используемыми лля того, чтобы указать на необязательность выражения. Оператор сзлгсн без операнда может появляться только в обработчике.

При этом он повторно возбуждает исключительную ситуацию. которая затем обрабатывается где-нибуль в другом месте. Это в точности повторяет использование оператора гаазе а языке Ада без указания имени исключительной ситуации. Ключевое слово гЬгон было выбрано потому, что слова аддпа1 и гадве являются именами функций в стандартной библиотеке функций АМС! С. По типу выражения Ютсн выбирается конкретный обработчик, который, конечно, должен иметь "соответствующий" тип формального параметра. В этом случае слово "соответствующий" означает следующее: обработчик с формальным параметром типа Т, сопя с Т, Т Ь (ссылка на объект типа Т) или сопле Та соответствует оператору ФЬгсн с выражением, имеющим тип Т.

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

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

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

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