• Новости
  • Темы
    • Экономика
    • Здоровье
    • Авто
    • Наука и техника
    • Недвижимость
    • Туризм
    • Спорт
    • Кино
    • Музыка
    • Стиль
  • Спецпроекты
  • Телевидение
  • Знания
    • Энциклопедия
    • Библия
    • Коран
    • История
    • Книги
    • Наука
    • Детям
    • КМ школа
    • Школьный клуб
    • Рефераты
    • Праздники
    • Гороскопы
    • Рецепты
  • Сервисы
    • Погода
    • Курсы валют
    • ТВ-программа
    • Перевод единиц
    • Таблица Менделеева
    • Разница во времени
Ограничение по возрасту 12
KM.RU
Рефераты
Главная → Рефераты → Информатика, программирование
  • Новости
  • В России
  • В мире
  • Экономика
  • Наука и техника
  • Недвижимость
  • Авто
  • Туризм
  • Здоровье
  • Спорт
  • Музыка
  • Кино
  • Стиль
  • Телевидение
  • Спецпроекты
  • Книги
  • Telegram-канал

Поиск по рефератам и авторским статьям

Ошибки при выполнении программы. Опции компилятора

Ошибки при выполнении программы. Опции компилятора

С.А. Григорьев

Умея пользоваться массивами, условными операторами и операторами цикла, вы можете писать довольно серьезные программы. При выполнении этих программ неизбежно будут возникать критические ошибки, приводящие к аварийному завершению программы. Такие ошибки по английски называются Run-time errors - ошибки времени выполнения. Рассмотрим пока только наиболее часто встречающиеся арифметические ошибки:

Division by zero - код ошибки 200;

Arithmetic overflow - код ошибки 215;

Range check error - код ошибки 201;

Floating point overflow - код ошибки 205;

Invalid floating point operation - код ошибки 207.

Ошибка Division by zero - деление на ноль - возникает при выполнении операций DIV, MOD и /, когда делитель равен нулю.

Ошибка Arithmetic overflow - целочисленное переполнение - возникает при выполнении арифметической операции над целыми числами, когда результат операции выходит за границы соответствующего типа. Такая ошибка произойдет, например, при выполнении программы

  VAR a,b : Word;  c : Integer;  BEGIN a:=100; b:=200; c:=a-b; END.

Ошибка произошла, когда вычислилось значение выражения a-b, равное

-100. Мы знаем, что при выполнении операции над операндами типа Word результат будет иметь тип Word, а -100 не является допустимым значением этого типа. То обстоятельство, что это значение мы собирались присвоить переменной типа Integer, не имеет значения, т.к. ошибка произошла до присваивания. Интересно, что, если описать a и b как Byte, то ошибки не будет (см. таблицу 2 в главе 5).

Ошибка Range check error - ошибка проверки диапазона - происходит в двух случаях. Во-первых, при попытке присвоить целочисленной переменной недопустимое значение, и, во-вторых, при использовании недопустимого индексного выражения для элемента любого массива. Проиллюстрируем оба эти случая на простых примерах.

  VAR a,b,c : Word; BEGIN a:=$FFFF; b:=1; c:=a+b; END.

Мы попытались присвоить переменной типа Word значение 65536, которое не является допустимым для этого типа.

 VAR x : ARRAY[2..8] OF Real; i : Byte;

 BEGIN FOR i:=8 DOWNTO 1 DO x[i]:=Sqrt(i); END.

Ошибка произошла при обращении к первому элементу массива, который не существует. Фактически этот второй случай полностью аналогичен первому - мы попытались "присвоить" индексу массива, тип которого-2..8, значение 1.

Ошибка Floating point overflow - вещественное переполнение - возникает при выполнении операции над вещественными числами, когда результат операции слишком велик, или при попытке присвоить вещественной переменной слишком большое значение. Когда речь идет о вещественных числах, термин "слишком большое" следует понимать как большое по абсолютной величине - знак числа не имеет значения. Приведем пример программы, содержащей такую ошибку.

 VAR r : Real; BEGIN r:=-1E20; r:=Sqr(r); END.

При возведении в квадрат величины r мы получим слишком большое для типа Real число 1E40.

Ошибка Invalid floating point operation возникает в трех случаях:

1) при вычислении корня из отрицательного числа;

2) при вычислении логарифма неположительного числа;

3) при вычислении функций Trunc и Round от слишком большого (по абсолютной величине) вещественного числа. Эта ошибка довольно очевидна, и мы не станем ее иллюстрировать.

Как же должен поступать программист, когда при выполнении его программы возникают ошибки? Прежде всего нужно локализовать ошибку, то есть найти оператор, в котором она произошла. В этом вам может помочь среда Turbo Pascal, если в ней правильно установлены опции компилятора. Опции компилятора позволяют изменять режим компиляции и задаются в подменю Compiler меню Options среды Turbo Pascal. Пока нас будут интересовать лишь пять опций: Range checking, Stack cheking, I/O checking, Overflow checking, Debug information. Если они включены, то настройка среды благоприятна для отладки вашей программы. Если они выключены, то их обязательно следует включить, а еще лучше задать их непосредственно в тексте своей программы. Опции записываются в программе в виде:

      {$ буква + / - }

Каждой опции соответствует своя буква (эти буквы выделены в подменю Compiler цветом), символ "+" означает включить, а символ "-" - выключить. В программе можно задать одну опцию, например, {$R+} или несколько опций - {$R+,I-,S+} . Некоторые опции можно записывать только в самом начале программы, другие могут размещаться в любом ее месте.

Опция Range checking (R) отвечает за контроль ошибок Range check error, Overflow checking (C) - за контроль ошибок Ariphmetic overflow, I/O cheking (I) - за контроль ошибок ввода-вывода. Смысл опции Stack cheking (S) будет объяснен несколько позже, а опция Debug information (D) включает в код программы отладочную информацию, что позволяет среде Turbo Pascal при аварийном завершении программы показать курсором оператор, в котором произошла ошибка. Позаботьтесь, чтобы при отладке программы перед первым ее оператором была строка {$R+,C+,I+,S+,D+} - это поможет вам найти и устранить все ошибки. Некоторые неопытные программисты выключают эти опции, тогда программа не прерывается при некоторых ошибках, а продолжает выполняться, на этом основании делается вывод, что программа верна. Это самообман - программа выполняется, но выполняется неправильно и никак не сообщает об ошибках.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://elib.albertina.ru/

Дата добавления: 09.10.2008

База рефератов на портале KM.RU существует с 1999 года. Она пополнялась не только готовыми рефератами, докладами, курсовыми, но и авторскими публикациями, чтобы учащиеся могли использовать их и цитировать при самостоятельном написании работ.


Это популяризирует авторские исследования и научные изыскания, что и является целью работы истинного ученого или публициста. Таким образом, наша база - электронная библиотека, созданная в помощь студентам и школьникам.


Уважаемые авторы! Если Вы все же возражаете против размещения Вашей публикации или хотите внести коррективы, напишите нам на почту info@corp.km.ru, мы незамедлительно выполним Вашу просьбу или требование.


официальный сайт © ООО «КМ онлайн», 1999-2026 О проекте ·Все проекты ·Выходные данные ·Контакты ·Реклама
]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

Мультипортал KM.RU: актуальные новости, авторские материалы, блоги и комментарии, фото- и видеорепортажи, почта, энциклопедии, погода, доллар, евро, рефераты, телепрограмма, развлечения.

Карта сайта


Подписывайтесь на наш Telegram-канал и будьте в курсе последних событий.



Организации, запрещенные на территории Российской Федерации
Политика конфиденциальности
Согласие на обработку файлов cookie

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