Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Министерство образования Российской Федерации
Уфимский государственный нефтяной технический университет
Кафедра вычислительной техники и инженерной кибернетики.
ОБРАБОТКА ИСКЛЮЧЕНИЙ
Отчет по лабораторной работе № 1
Вариант 16
Выполнил студент группы ПО-05-01 ______________
Принял преподаватель ______________ С.
Уфа – 2007
1. Постановка задачи.
1. Испытать отлаженные программы по обработке исключений в консольном режиме MS Visual Studio C++ отлаженные программы try1.cpp, try2.cpp и try3.cpp
Для функции f(x) сформировать исключения для критических значений аргумента x = xкр. Испытать программу критических значениях xкр как без, так и с генератором исключения.
Разработать два варианта программы: с ловушкой внутри функции F(x) (как try1.cpp) и с ловушкой в главной программе (как try3.cpp).
2. Анализ задачи.
Мне была дана функция: y= arcos(0.2 x) +tg(3x);И значения переменной x, x>5 при которых достигались критические значения.
2. Испытал отлаженные программы по обработке исключений в консольном режиме MS Visual Studio C++ отлаженные программы try1.cpp, try2.cpp и try3.cpp.
3. Разработал два варианта программы: с ловушкой внутри функции F(x)
(как try1.cpp) и с ловушкой в главной программе (как try3.cpp).
3. Текст программы:
//Файл try1.cpp Processing of exceptions
#include <iostream. h>
#include <stdlib. h>
#include <conio. h>
#include <math. h>
float ProEx(float x){ //Конторолируемый блок и генерация исключений
float y;
try{
if (x>5) throw "\n WARNING!";
return y=acos(0.2*x)+tan(3*x);
}
catch (const char *report){ // обработка исключений
cerr << report <<" x= "<<x<<" y= "<<y<<endl;
return 0;
}
}
void main(){
cout<<"\n normal ProEx(5)= "<<ProEx(5);
cout<<"\n anormal ProEx(6)= "<<ProEx(6);
cout<<"\n anormal ProEx(7)= "<<ProEx(7);
}//---
Результаты работы программы try1.cpp
normal ProEx(5)=-0.855993
WARNING!
x=6 y=-1.#IND
anormal ProEx(6)=0;
WARNING!
x=7 y=-1.#IND
anormal ProEx(7)=0
Press any key to continue
//Файл try3.cpp Processing of exceptions
// Исключения глообального пользовательского типа
#include <iostream. h>
#include <stdlib. h>
#include <conio. h>
#include <math. h>
struct DATA{ // Global klass
float n;
char *s;
DATA(float x, char *c) {n=x; s=c;}
};//
float ProEx(float x){
float y; //Конторолируемый блок и генерация исключений
if (x>5) throw DATA(x,"\n WARNING!");
return y=acos(0.2*x)+tan(3*x);
}//---
void main(){
try {
cout<<"\n normal ProEx(5)= "<<ProEx(5);
cout<<"\n anormal ProEx(6)= "<<ProEx(6);
cout<<"\n anormal ProEx(7)= "<<ProEx(7);
}
catch (DATA d) // обработка исключений
{ cerr << d. s <<" x= "<<d. n<<endl;
}
}
Результаты работы программы try3.cpp
normal ProEx(5)=-0.855993
WARNING!
x=6
Press any key to continue
7. Вывод.
Я понял и провёл операцию обработки исключений на примере арксинуса от аргумента превышающего единицы. Я испытал два варианта программы обработки исключений с ловушкой внутри функции ProEx(x) и с ловушкой в главной программе. Программы с ловушкой в главной программе полезно использовать если не понятно где именно происходит ошибка. Т. к. try блок находиться в main, то переменные будут недоступны – поэтому используется класс
struct DATA{
float n;
char *s;
DATA(float x, char *c) {n=x; s=c;}
};
Чтобы генератор мог передать полезную информацию за пределы локальной фун6кции.
Основные порталы (построено редакторами)
