Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПргЯВУ_ЛК_СтефановаИА.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
4.41 Mб
Скачать

16.14. Отладка

Тестирование – процесс проверки работоспособности программы, в процессе которой выявляются разного рода ошибки.

Процесс поиска и устранения ошибок называется отладкой.

Классификация ошибок

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

В процессе выполнения программы возникают ошибки следующих видов:

  • Синтаксические (ошибки времени компиляции),

  • Логические (алгоритмические – ошибочные рассуждения),

  • Динамические (ошибки времени выполнения) – исключительные ситуации.

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

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

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

Например, два выражения y=sin(x)/x+5 и y=sin(x)/(x+5) дадут разные результаты.

Поэтому при получении результата его надо анализировать. Составляются тесты и отлаживаются программы на тех значениях входных данных, результат при которых легко проверить путем подсчета его «вручную».

Например, при х=0 sin(x)= 0 и

результат первого выражения y=sin(x)/x+5 даст y=1+ 5 = 6,

а второго выражения y=sin(x)/(x+5) даст y=0/(0+5)=0 / 5 = 0

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

Исключительная ситуация (exception) представляет собой нарушение условий выполнения программы, вызывающее прерывание или полное прекращение ее работы.

Например, если пользователь в редактор textBox2 ввел букву, вместо цифры, то ИСР сгенерирует окно ошибки и проект будет закрыт.

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

Например:

После внесения изменения в textBox2 и нажатия кнопки «Вычислить» можно продолжить выполнение программы или прервать ее выполнение. Обработка исключительной ситуации состоит в нейтрализации динамической ошибки, вызвавшей ее.

Лекция 12

17.0. Ввод и вывод данных в Windows-Приложениях

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

int.Parse(s) Целое, изображением которого является строка s.

double.Parse(s) Вещественное, изображением которого является строка.

После расчёта полученный результат выводится в компоненты через их свойства «text» поэтому числовые значения необходимо преобразовать в их строковые отображения. Для этого используются следующие методы:

S.ToString() Строка, являющаяся изображением вещественного / целого числа s, в соответствии с заданным форматом.

String.Format(s,x) Строка, являющаяся изображением вещественного числа x с заданным форматированием s.

Строка формата задается методу String.Format в следующем виде:

{ N [ , M ] [ : formatString ] }

Здесь число N задает номер преобразуемого аргумента, передаваемого методу String.Format в качестве параметра. Необязательное число M задает ширину области текстовой строки (в символах), внутри которой необходимо поместить цифры преобразуемого значения. Если это число отрицательное, цифры числа выравниваются по левой границе данной области, а если положительное – по правой границе области.

Например,

int а = int.Parse(textBox1.Text); //преобразование текста-числа, введенного

// в textBox1 в целое число

double b = double.Parse(textBox1.Text); //преобразование текста-числа, введенного

// в textBox1 в вещественное число

label3.Text = S.ToString()+ " руб."; // преобразование числа S в строку

label1.Text =String.Format(“{0,5:d}”,x); преобразование целого числа x в строку, где d – количество (здесь 5) целых чисел в изображении числа в компоненте label1.Text.

label1.Text =String.Format(“{0:f 2}”,x); // преобразование вещественного числа x в строку c форматным выводом символов в компонент label1 через его свойство Text,

где 0 – индекс переменной, f – мантисса c 2 символами после запятой.

label1.Text =String.Format(“{0,8:f 3}”,x); // преобразование числа x в строку c форматным выводом символов в компонент label1, где 0 – индекс переменной, 8 – количество выводимых символов (включая зпт.), f – мантисса c 3 символами после зпт.

label1.Text =String.Format(“{0}”,x); // форматирование по умолчанию.