русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Отладка программ


Дата добавления: 2014-02-04; просмотров: 1012; Нарушение авторских прав


Обработка исключительных ситуаций в Delphi

Контроль ввода-вывода

 

Наиболее часто ошибки возникают при работе с файлами на внешних устройствах. Может произойти сбой записи на дискету, нерадивый пользователь норовит забыть вставить дискету в дисковод, другой любит класть диски в CD ROM не той стороной и т.д. В результате, если не принять особых мер, будут происходить фатальные ошибки и вся программа позорно "свалится" из-за такой мелочи, как ошибка записи или считывания файла.

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

Директива – особый объект в тексте программы, управляющий режимами компиляции программы. На Паскале директивы записываются в фигурных скобках, причем сразу после открывающей скобки идет знак доллара, а за ним – имя директивы и, если необходимо, дополнительные параметры.

За ввод-вывод отвечает директива I.

{$I-} – отключить контроль ввода-вывода;
{$I+} – включить контроль ввода-вывода.

Таким образом, чтобы обезопасить процедуру записи информации в файл, следует написать:

 

{$I-}

Writeln(f,s);

{$I+}

 

Теперь программа не будет реагировать на сбой при записи. Но как же узнать, не случилось что-то страшное, раз контроль отключен? Для этого есть функция IORESULT, которая возвращает код результата выполнения последней операции ввода-вывода. Если это 0 – все нормально, иначе – ошибка. После вызова функции ее значение сбрасывается, поэтому обычно его сохраняют в переменную. Проверка выглядит следующим образом:



 

{$I-}

Writeln(f,s);
IF IOResult<>0 THEN
WriteLn(’Ошибка записи’)

{$I+}

 

 

В языке Delphi предусмотрено очень мощное и удобное средство обработки ошибок – оператор TRY:

 

TRY

опасное место в программе

EXCEPT

выполняется при возникновении ошибки

END;

 

Если на участке между TRY и EXCEPT возникнет ошибка, то будут выполняться операторы, стоящие между EXCEPT и END, иначе они пропускаются, и выполняется команда, следующая за END. В реальной программе оператор TRY выглядит примерно так:

 

TRY
reset(f);
WriteLn(f,’123’);
Close(f)
EXCEPT
MessageBox(‘Ошибка записи в файл’);
END;

 

 

По мнению известного специалиста в области программирования Э. Дейкстры "…если отладка – процесс устранения ошибок в программах, то программирование – процесс их внесения". Увы, написать сложную программу без ошибок практически невозможно. Процесс "доведения до ума" программы называется отладкой (debugging).

Интересно происхождение английского термина debug, буквально означающего "обезжучивание" (англ. bug означает "жук"). В 40-х гг. ХХ века во флоте США эксплуатировался компьютер Mark-1. Однажды машина вышла из строя по причине попадания самого настоящего жука в контакты одного из многих тысяч реле. Математик Г.М. Хоппер, разрабатывавшая программы для Mark-1, записала в журнале "Реле №70. Произведено обезжучивание". С тех пор термин debug прижился для обозначения процесса отладки.

Еще сравнительно недавно отладка программы была весьма трудоемким и утомительным делом. Работа с компиляторами таких языков, как C, Fortran или Clipper в ОС MS DOS выглядела следующим образом. Текст программы набирался в любом текстовом редакторе – от Word до блокнота. Далее запускался компилятор, которому на вход подавался файл с программой. Если компиляция проходила успешно, компилятор создавал так называемый объектный файл. Затем запускался линкер – программа, объединяющая код стандартных библиотек и код в объектном файле в окончательный exe-файл. Наконец, полученный exe-файл запускался на выполнение. Если в нем обнаруживалась ошибка, весь процесс надо было повторять заново.

 



<== предыдущая лекция | следующая лекция ==>
Хранение данных в стеке | Инструменты отладки программ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.572 сек.