Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Задание реакции на исключительные ситуации при исполнении стандартных подпрограмм модуля Graph

Одну из таких групп стандартных подпрограмм составляют, например, подпрограммы модуля Graph, такие как InitGraph, SetGrafMode, SetPalett и другие. Признак их успешного или неуспешного выполнения (код ошибки) становится значением функции GraphResult.

Возвращаемое ею нулевое значение свидетельствует о правильности последней выполненной графической операции, а другие значения - о возникновении соответствующей исключительной ситуации.

К функции GraphResult нужно обращаться однократно после вызова каждой графической операции, поэтому, чтобы многократно использовать ее значение (например для проверки и для выдачи типа ошибки), нужно сохранить его с помощью вспомогательной переменной. Практически во всех рассматриваемых демонстрационных программах, работающих в графическом режиме, присутствуют контроль исполнения указанной группы графических подпрограмм и задание программных реакций на возникающие в них исключительные ситуации.

Следующий фрагмент программы показывает типичный прием задания программной реакции при выполнении процедуры InitGraph.

 

 

Задание реакции на исключительные ситуации при исполнении операций ввода-вывода

Другой группой подпрограмм, при выполнении которых могут возникать исключительные ситуации, являются стандартные подпрограммы, выполняющие операции ввода-вывода. Эти операции являются стандартными процедурами и функциями модуля System. Исключительные ситуации этой группы: не найден файл, указанный маршрут его поиска является недействительным, отказано в доступе к файлу, невозможно считывание (конец файла), файловой переменной не присвоено имя файла, файл не открыт, неверный числовой формат (значение, читаемое из текстового файла, не соответствует типу переменной), аппаратный сбой и др.

Система Турбо Паскаль реагирует на эти исключительные ситуации исполнением (по умолчанию) собственной системной реакции. Эта реакция одинакова для всех операций группы и состоит в выдаче сообщения и прерывании исполнения программы. Однако в целях надежной и безотказной работы программы для вызовов ряда подпрограмм ввода-вывода необходимо предусмотреть собственную реакцию программы на исключительные ситуации.

 

Об успешности или не успешности выполнения операций ввода- вывода свидетельствует вспомогательная функция IOResult. Ее значением является целое число, показывающее корректность или некорректность выполнения по существу любой из операций с файлами (операций ввода- вывода). Чтобы воспользоваться в программе этими сведениями, нужно перед обращением к операции ввода-вывода директивой {$1-} отменить системную проверку результата ее выполнения, а затем сразу же (и однократно обратившись к ней) проверить значение функции IOResult - значение, отличное от 0, свидетельствует об ошибке.

Рекомендуется контролировать в программе те операции ввода-вывода, при некорректном исполнении которых можно предпринять какие-то программные действия, например, повторно запросить имя файла (при выполнении операции Assign(F, <имя файла>)), напечатать номер "ненайденной" записи файла (при выполнении операции Seek(F, N) и т.п.

Приведем небольшой фрагмент программы, иллюстрирующий программный контроль операции ввода-вывода и задание реакции.

 

Программный контроль операций ввода-вывода с заданием реакции программы выполняется во многих демонстрационных программах книги.

 

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

 

Контролируемый ввод данных

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

Разработан модуль Inputs, содержащий несколько операций ввода с контролем, реализуемых в виде подпрограмм. Они используются в демонстрационных программах книги вместо процедуры Read. Ниже приведен текст этого модуля.

unit Inputs;
{ЗАДАЧА. Создать модуль, содержащий операции ввода данных с запросами вводимой информации и контролем допустимых значений.
Модуль содержит операции, обеспечивающие надежный ввод данных благодаря следующим возможностям .
а)         запрос значения данного с идентификацией его имени,
б)         контроль правильности представления значения рассматриваемого типа,
в)         задание значения в допустимом диапазоне,
г)         программное сообщение о неверном значении,
д)         повторный запрос значения.
ПРИЕМЫ:
а)         выполнение операции чтения с предварительным отключением ($1~) и последующим включением ($1+) директив системного контроля результатов выполнения операций ввода/вывода,
б)         анализ значения, возвращаемого функцией IOResult,
в)         повтор ввода до выполнения всех условий контроля значения
РЕКОМЕНДАЦИИ.
а)         написать процедуры ввода для других типов значений,
б)         написать процедуры ввода из текстового файла }
{______________/______________}

 




 

Комментарии:


Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru