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

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

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

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

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

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

Вввдвнмв в обработку исключительных ситуаций Вопросы, связанные с обработкой исключительных ситуаций, можно подытожить следуюшим образом. ° Как и где опрелеляются обработчики исключительных ситуаций и какова их область видимости? ° Как возникновение исключительной ситуации связывается с ее обработчиком? ° С какой точки программы продолжается ее выполнение, если оно вообше продолжается, после завершения выполнения обработчика исключительной ситуации? (Это — вопрос о продолжении.) ° Как задать исключительные ситуации, определяемые пользователем'? ° Следует ли предусматривать по умолчанию обработчики исключительных ситуаций для программ, которые не предусматривают своих собственных обработчиков' ? ° Могут ли встроенные исключительные ситуации возбуждаться явно? ° Являются ли ошибки, распознаваемые аппаратным обеспечением, исключительными ситуациями, которые могут быть обработаны? ° Сушествуют ли какие-либо встроенные исключительные ситуации? ° Следует ли предусматривать возможность блокирования исключительных ситуаций".

) 3.1.3. Историчвский обзор Язык Р1./! (АХИ!, 1976) впервые реализовал концепцию, в соответствии с которой пользовательская программа могла непосредственно вовлекаться в обработку исключительных ситуаций. Язык позволял пользователю писать обработчики исключительных ситуаций для большого списка исключительных ситуаций. предусмотренных в языке. Более того, язык Р(Л ввел концепцию исключительных ситуаций, определенных пользователем, позволявшую программам создавать исключительные ситуации, распознаваемые программным обеспечением.

Эти исключения используют те же механизмы, что и встроенные исключительные ситуации. С тех пор как был создан язык Р(Л, разработано несколько альтернативных методов обработки исключительных ситуаций. В частности, языки СЕО (ЕЫоч ек А1., 1984), Меза (М11сйей е! а1., 1979), Ада, СОММОХ ЫБР (Б!ее1е, 1984), М1. (М11пег ег а1., 1990), С++, Мосин!а-3 (Сагое!!! ег а1., 1989), Е1(Те! и )ата имеют средства для обработки исключительных ситуаций.

Теперь мы готовы к проверке этих средств в четырех из перечисленных языках программирования. 13.2. Обработка исключительных ситуаций в языке РЕ/1 Помимо других новаторских усилий, разработчики языка Р(./! бились над первым лингвистическим механизмом лля обработки исключительных ситуаций. В соответствии со своим стилем работы в этой области они предусмотрели очень мощные и очень гибкие средства. Однако, как и в некоторых других конструкциях языка Р(/1, его средства для обработки исключительных ситуаций трудны для понимания, реализации и правильного использования. Глава 13.

Обработка исключительных ситуаций Язык Р!/1 обеспечивает обработку встроенных исключительных ситуаций и позволяет пользователям определять их собственные исключительные ситуации. 13.2 1. Обработчики исключительных ситуаций Определенный пользователем обработчик имеет вил блоков выполняемого кола. Они встречаются везле. где может появляться выполняемый оператор, и имеют вид ОИ условие ]5ИАР] ВЕВ1И; ЕИВ/ Здесь условие — это имя соответствуюшей исключительной ситуации.

Вместо блока ВЕ61И-ЕИВ можно использовать одно ключевое слово 5155ЕМ для указания на то, что должен использоваться обработчик исключительных ситуаций. поддерживаемый системой. Ключевое слово 5ыдр в случае его использования указывает на то, что линамическая последовательность выполнения программы во время возбуждения исключительной ситуации должна быть выведена на печать. Эта информация обратного отслеживания позволяет программисту определить. каким образом выполнение программы достигло точки, в которой возникла исключительная ситуация. Такая информация, несомненно. полезна для отлалки программы. Средой ссылок обработчика исключительных ситуаций в языке РЕ/! является код в который он встроен.

Поскольку обработчики исключительных ситуаций не имеют параметров, обычно они помешаются вблизи от мест, где могут возникнуть соответствуюшие исключительные ситуации. 13.2.2. Связывание исключительных ситуаций с обработчиками Связывание исключительных ситуаций с обработчиками в языке РЕ/! является динамическим. Оператор ОИ определяет связывание исключительной ситуации с ее обработчиком. Поскольку он является выполняемым, положение оператора в программе имеет чрезвычайно важное влияние на его действие. Если бы оператор ОИ был декларативным. была бы только одна исключительная ситуация в одном блоке. В действительности. заданной исключительной ситуации могут соответствовать несколько операторов ОИ, даже в одном и том же блоке.

Связывание. определенное оператором ОИ. продолжает действовать до того момента, пока не будет выполнен новый оператор ОИ для той же самой исключительной ситуации, либо не произойдет выход из блока. в котором это оператор находится. 13.2.3. Продолжение В языке РЕ/! встроенные обработчики для разных исключительных ситуаций предусматривают разные действия, связанные с продолжением выполнения программы.

Для некоторых исключительных ситуаций выполнение возврашается к оператору, возбудившему исключительную ситуацию; другие условия приводят к прекрашению выполнения программы. Обработчики, определенные пользователем, могут передать управление в любую часть програкв~ы, в которую они пожелает.

после выполнения обработки исключительной ситуации. Однако не сушествует механизма. определяющего адрес оператора, возбудившего исключительную ситуацию, так что часто вернуться к нему невозможно. Выбор межлу двумя действиями в системных обработчиках был сделан на основе того, 333 13.2. Обработка исключительных ситуаций в языке Рьу'! может ли обработчик определить причину проблемы и успешно продолжить выполнение программы. Например, считалось, что при некоторых арифметических ошибках успешное продолжение обработки невозможно. В других случаях, таких как исключительная ситуация СО(чЧЕКЯ10Х (для ошибок преобразования строк в числа), исправление ошибок считалось возможным, и управление возвращалось оператору, приведшему к возникновению исключительной ситуации, после завершения выполнения обработчика.

Проектные решения языка Р1Л, касающиеся продолжения выполнения программы, часто непонятны программистам. 13.2.4. Другив провктные решения Исключительные ситуации, определенные пользователем, создаются в программах на языке Р(Л с помощью простого обьявления следующего вида: СОМ01Т10)) имл исключительной ситуации Для всех встроенных исключительных ситуаций существуют встроенные обработчики. Эти обработчики могуг быть прерваны обработчиками, определенными пользователем. Исключительные ситуации, определенные пользователем, должны возбуждаться явно с помощью оператора следующего вида Я10)ЧАЬ условие(имя исключительной ситуации) Любое условие может явно возбуждаться оператором Я16)(АЬ, хотя встроенные исключительные ситуации обычно возбуждаются неявно при определенных аппаратных или программных условиях.

Оператор Я16ЫАЬ, примененный к исключительной ситуации, которая в данный момент отменена, не выполняет никаких действий. Язык РЕ./1 определяет 22 встроенные исключительные ситуации, начиная с таких арифметических ошибок, как ЕЕК001Ч10Е, и заканчивая такими программными ошибками, как ЯОВЯСК1РТКА)ЧОЕ. Встроенные исключительные ситуации подразделяются на три категории: (!) те, которые всегда разрешены: (2) те, которые разрешены по умолчанию, но могут быть заблокированы пользовательским кодом; и (3) те, которые заблокированы по умолчанию, но могут быть разблокированы пользовательским колом. Процесс блокирования и разблокирования условий выполняется с помощью приписывания имени или имен исключительных ситуаций в качестве префикса к оператору, блоку нли процедуре, как в следующем примере: (ЯОВЯСК1РТАКАХОЕ, )ЧООЧЕКРЬОХ): ВЕ01)Чг ЕЛО! В этом случае исключительная ситуация ЯОВЯСК1РТКАМОЕ является разблокированной, а исключительная ситуация ОУЕКРЬОЫ вЂ” заблокированной.

Значения, заданные по умолчанию для этих исключительных ситуаций, противоположны указанным— ХОЯОВЯСК1РТАКАХОЕ и ОЧЕКРЬОХ. Префикс ХО можно приписать к любой исключительной ситуации, разрешенной в данный момент (чтобы заблокировать ее). Глава 13. Обработка исключительных ситуаций 33.2.$. Пример Приведенная ниже программа иллюстрирует два простых, но широко распространенных, примера использования обработчиков исключительных ситуаций в языке РЬ/1.

Программа вычисляет н печатает распрелеление входных оценок с помошью массива счетчиков. Есть десять категорий оценок (0-9, 10-19, ..., 90-100). Сшенки сами по себе используются лля вычисления индексов в массиве счетчиков лля каждой из категорий оценок. Неправильная входная оценка обнаруживается с помошью выявления ошибок индексации в массиве счетчиков. Сшенка, равная 100. играет особую роль в вычислении распределения оценок, поскольку все категории имеют десять возможных значений оценок, за исключением наивысшей. которая имеет одиннадцать значений (90, 91...., 100). (Тот факт, что более вероятны оценки А, чем В или С, является убедительным свидетельством великодушия учителей.) Оценка, равная 100, также обрабатывается тем же обработчиком исключительных ситуаций, который используется для обработки неправильных входных данных.

6РАРЕ 01ЯТК1ВОТ1ОН: РКОСЕРОКЕ ОРТ1ОНЯ (МА1М) ГКЕО(1: 10) ГТХЕР 1НТТ ( (10) О), НЕИ 6РАРЕ Г1ХЕО, 1 1М1Т 1 Г1ХЕР, ЫМ1Т 2 Г1ХЕР, 1НРЕХ Г1ХЕР) /* Обработчики исключительных ситуаций */ ОН ЕНРГ1ЬЕ (ЯУЯ1Н) 6ОТО Г1Н1ЯН~ ОН ЯОВЯСК1РТКАМОЕ ВЕ61Н; 1Г НЕМ 6РАРЕ = 100 ТВЕН ГКЕО(10] = ГКЕО(10) + 1) ЕЬЯЕ РО; РОТ 11ЯТ (' ВХОДНАЯ ОЦЕНКА:' 1( НЕМ 6РАРЕ 'ВЫХОДИТ ЗА ДОПУСТИМЫЕ ПРЕДЕЛЫ' ) ЯК1Р; СОТО 1НРОТ ЬООР) ЕНР) ЕНР) /* Тело основной программы */ 1НРОТ ЬООР: РО; 6ЕТ Ь1ЯТ (НЕМ 6РАРЕ); 1НОЕХ = НЕИ 6РАОЕ / 10 + 1; (ЯОВЯСК1РТКАН6Е): ГКЕ(](1НРЕХ) ГКЕ(](1НРЕХ) + 1; ЕМР 1НРОТ ЬООР; Г1Н1ЯН: РОТ ЫЯТ (' ГРАНИЦЫ ЧАСТОТЫ' ) ЯК1Р(2)) 00 1НРЕХ = 0 ТО 9; 11М1Т 1 = 10 * 1НОЕХ) 1.1МТТ 2 = ЫМ1Т 1 + 9) 1Г 1МРЕХ = 9 ТНЕН ЫМ1Т 2 = 100) РОТ Ь|ЯТ (ЫМ1Т 1, Ь1М1Т 2, ГКЕО(1НОЕХ+1] ]; ЕМОз ЕНР 6РАРЕ 01ЯТК1ВРТ1ОН; 13.2.

Обработки исключительных ситуаций а языке Рь/'1 Три различных события запускают обработку исключительных ситуаций в программе. Среди них только одна исключительная ситуация является ошибкой; остальные две просто сигнализируют о том, что происходит нечто особенное.

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

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

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

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