Студопедия — В ПРОГРАММЕ
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

В ПРОГРАММЕ






В разработанной программе мы не учли возможные ошибки ввода данных. Во-первых, пользователь может ввести последовательность символов, которая не является числом. Во-вторых, пользователь может ввести значение коэффициента a = 0, что приведет к попытке деления на ноль в операторах, вычисляющих корни уравнения. Обе эти ситуации называются исключительными. Примерами других исключительных ситуаций являются переполнение, попытка открыть несуществующий файл и т.п. Для контроля за подобными ситуациями в системе C++ Builder существует так называемый механизм обработки исключительных ситуаций. При возникновении исключительной ситуации программа генерирует так называемое исключение и выполнение дальнейших вычислений в данном блоке прекращается. Исключение – это объект специального вида, характеризующий возникшую в программе исключительную ситуацию. Особенностью исключений является то, что это сугубо временные объекты. Как только они обрабатываются каким-либо обработчиком, они разрушаются. Если это исключение нигде не перехвачено в программе, то оно обрабатывается стандартным методом Tapplication.HandleException. Данный метод обеспечивает выдачу пользователю краткой информации в окне сообщений и уничтожение экземпляра исключения.

Наиболее кардинальный способ борьбы с исключениями – обработка их с помощью логических блоков try и catch:

try

{

//операторы, которые могут вызвать возникновение исключительной //ситуации

}

catch (Тип &e)

{

// команды, обрабатывающие данную исключительную ситуацию

}

Здесь Тип – это тип (класс) исключения.

В С++ Builder определен целый ряд классов исключений. Рассмотрим два из них, нужных в нашей программе: класс EConvertError, связанный c ошибкой преобразования строк или объектов (в частности, в функции StrToFloat), класс EZeroDivdide, связанный с попыткой деления на нуль числа с плавающей запятой.

Измените текст функции Button1Click в соответствии с приведенным ниже текстом.

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

float a,b,c,d,x1,x2;

try

{

a=StrToFloat(Edit1->Text);

b=StrToFloat(Edit2->Text);

c=StrToFloat(Edit3->Text);

}

catch(EConvertError &e)

{

ShowMessage("Ошибочные данные!");

return;

}

d=b*b-4*a*c;

if (d>=0)

{

try

{

x1=(-b-sqrt(d))/(2*a);

x2=(-b+sqrt(d))/(2*a);

}

catch(EZeroDivide &e)

{

ShowMessage("Коэффициент а не может быть равен нулю!");

return;

}

Edit4->Text=FloatToStr(x1);

Edit5->Text=FloatToStr(x2);

}

else

ShowMessage("Действительных корней нет");

}

 

Сохраните изменения в тексте модуля и проверьте отсутствие ошибок.

 

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







Дата добавления: 2015-09-04; просмотров: 347. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

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

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

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Этапы трансляции и их характеристика Трансляция (от лат. translatio — перевод) — процесс синтеза белка из аминокислот на матрице информационной (матричной) РНК (иРНК...

Условия, необходимые для появления жизни История жизни и история Земли неотделимы друг от друга, так как именно в процессах развития нашей планеты как космического тела закладывались определенные физические и химические условия, необходимые для появления и развития жизни...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия