С.А. Григорьев
Умея пользоваться массивами, условными операторами и операторами цикла, вы можете писать довольно серьезные программы. При выполнении этих программ неизбежно будут возникать критические ошибки, приводящие к аварийному завершению программы. Такие ошибки по английски называются 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+} - это поможет вам найти и устранить все ошибки. Некоторые неопытные программисты выключают эти опции, тогда программа не прерывается при некоторых ошибках, а продолжает выполняться, на этом основании делается вывод, что программа верна. Это самообман - программа выполняется, но выполняется неправильно и никак не сообщает об ошибках.
Другие работы по теме:
Итерационный метод решения проблемы собственных значений
Математическая сущность и природа итерационного метода решения проблемы собственных значений, особенности его использования к симметричной матрице. Описание программного обеспечения в среде МаtLab, реализующего рассматриваемый метод, его листинг.
Умения и навыки выполнения электромонтажных работ
Graphics Graphics Приобрести первичные профессиональные навыки на основании прохождения практики на конкретном предприятии Приобрести первичные профессиональные навыки на основании прохождения практики на конкретном предприятии Формирование умений и навыков в выполнении электромонтажных работ Закрепление и совершенствование знаний и практических навыков, полученных в процессе обучения Graphics
Логистика 6
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ ОДЕССКИЙ НАЦИОНАЛЬНЫЙ МОРСКОЙ УНИВЕРСИТЕТ Расчетно-графическое задание №1 «Оптимальное управление запасами на базе формулы Уилсона, опции «Поиск решения»
Мой учитель
Профессия учителя — очень тяжелая и ответственная. Учитель, как и врач, не может допускать ошибки, потому что в его руках — души его учеников. Добрая, справедливая, внимательная — такой я вижу свою учительницу русского языка и литературы Екатерину Ивановну. Она молодая, однако это очень хороший учитель.
Трансляция, компиляция, интерпретация, линкование
Технология программирования задач для операторных и функциональных языков программирования, разработка алгоритма и отладка программы. Трансляция исходного текста, компоновка программы, ее выполнение с целью определения логических ошибок и тестирование.
Создание простого HTTP-клиента
В этой статье будет написана программа, которая может считывать файлы из Internet по HTTP протоколу и записывать их на диск.
Когда прекращать тестирование программ?
Никто не сомневается в необходимости тестирования программ. Будь то небольшой учебный пример или целая информационная система. Вопрос только в том, сколько нужно тестировать и когда можно считать программу протестированной?
Программа "Учет выдачи и возврата книг"
Создание программы для учета выдачи и возврата книг. Методы создания четырех таблиц-справочников и основной таблицы. Создание базового, перекрестного, итогового запросов. Формирование форм. Формирование отчета по читателям и выданным книгам с итогами.
Динамическое распределение памяти
Модель памяти как набор опций компилятора, ее виды в BC++2.0, размеры и взаимное расположение. Назначение сегментных регистров в различных моделях памяти, порядок просмотра переменных. Основные и дополнительные функции динамических переменных в памяти.
Общая схема решения задачи на персональном компьютере
На этапе создания текста программы вы записываете алгоритм на языке программиро-вания. Один и тот же алгоритм можно запрограммировать множеством различных спосо-бов, но вы должны стремиться написать оптимальную программу.
Консольное приложение на Дельфи
Хоть и консольные приложения уже давно вышли из моды, с помощью них можно легко делать рутинные операции. Они занимают не так много места, не требовательны к ресурсам и быстро выполняются.
Компьютерная подготовка
РИСУНОК ИЗ DOOM 1 . И вы можете извлекать множество графических образов ( и засовывать их туда обратно ) при наличии нужного файла , к-рый вы можете получить совершенно безвозмездно , если звякнете мне :
Turbo Paskal Операции над матрицами
Государственный Комитет Российской Федерации по Высшему Образованию Санкт-Петербургский Государственный Электротехнический Университет «ЛЭТИ»
Bios
Введение Хорошо известно, что производительность Вашей материнской платы сильно зависит от временных установок для работы с памятью, выполняемых в BIOS Setup. Название пунктов Setup, в которых устанавливаются эти временные параметры может меняться в зависимости от чипсета и BIOS на Вашей матернской плате.
Паскаль. Отладка программ
ТурбоПаскаль7.0. Логические операторы и операторы цикла. Отладка программ. Укороченная форма оператора if. Управление вычислительным процессом.
Организация функции ПОИСК в Tmemo
Представленный ниже код я использовал при написании текстового редактора. Всё вроде работает. Итак, на форме должны быть TMemo (Editor), TFindDialog (FindDialog) и TButton (Button).
Обработка одномерных массивов в среде программирования Lazarus
Форма программы для ввода и вывода массива в программной среде Lazarus. Характеристика главных недостатков Lazarus. Цикл для пропуска пробелов между словами. Результат обработки текстового редактора memo.text. Листинг и экранные формы заданной программы.
Язык программирования высокого уровня С++
Характеристика основных разделов программирования, изучаемых в курсе программирования на языке С++. Описание внутренних переменных, входных и выходных данных. Особенности использования компилятора Microsoft Visual Studio 2008. Руководство пользователя.
Понятие и элементы массива
Массив - это коллекция переменных, которые имеют общее имя и базовый тип. Функциональные возможности, виды массивов и их характеристика. Основные требования к входным и выходным данным массива. Использование IF THEN для перехвата всех возможных ошибок.
Введение в программирование
Сущность отладки, условия ее выполнения. Ошибки при компиляции программы, создание и изменение исходных символьных файлов. Процесс преобразования кода в машинный. Первый программист, виды трансляторов, классификация и уровни языков программирования.
Отладка программ пользователя в Tubro Pascal
Turbo Pascal предлагает сверхусовершенствованную среду, с автоматическим управлением проектом, модульной организацией программ, высокой скоростью компиляции, с легко используемыми оверлеями.
Прогресс компьютерных технологий
Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования. Смысл появления такого языка – оснащенный набор вычислительных формул дополнительной информации, превращает данный набор в алгоритм. Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать.
Состав и назначение оболочки Borland C
Кафедра: Автоматика и информационные технологии СОСТАВ И НАЗНАЧЕНИЕ ОБОЛОЧКИ BORLAND ++3.1 СОДЕРЖАНИЕ Состав системы программирования Borland C++ 3.1 13
Описание языка Turbo Pascal
Язык Паскаль, названный в честь французского математика и философа Блеза Паскаля (1623-1662), был создан как учебный язык программирования в 1968-1971 годах швейцарским ученым Никлаусом Виртом на кафедре информатики Стэндфордского университета (Цюрих). Стандарт этого языка был утверждён позже, он считался более совершенным и удобным для работы, чем широко распространённые в то время языки программирования Алгол, Фортран, Бейсик.
Настройка параметров приложения
Санкт-Петербургский Государственный Политехнический университет Лабораторная работа №1 санкт-петербург 2009 год Настройка параметров приложения
База данных предприятия
Министерство образования Российской Федерации. Сибирский межрегиональный колледж строительства и предпринимательства. Курсовой проект По дисциплине:
Управление проектом Delphi
Содержание Обзор Проект Delphi Пункт меню “File” Управление проектом Обзор других пунктов меню Edit Search View Compile Пункт меню Options | Project Forms
Двумерная графика системы Maple
Кафедра: Информационные Технологии Лабораторная работа На тему: " Двумерная графика системы Maple " Москва, 2008 Цели работы: знать команды, используемые для построения графиков функций одной переменной (двумерная графика);
Турбо Паскаль 7.0
ТЕМА: ТурбоПаскаль7.0 Логические операторы и операторы цикла. Отладка программ. Укороченная форма оператора if В операторе if часть, начинающаяся словом else, может отсутствовать. Часть, следующая за словом then, выполняется, если логическое условие, стоящее после слова if, имеет значение true.