Дякую за роз'яснення. Підкажіть - оця конструкція ( try + catch) - використовується, щоб коректно опрацьовувати помилки? Бо в принципі варіант з if - цілком ефективно справляється з даним завданням. Для чого ускладнення?
Це в першу чергу це для того щоб зменьшити код якщо ви відловлюєте помилки за допомогою if+else. В коді їх може бути дуже і дуже багато. По друге це потрібно щоб вивести потрібний текст помилки і обробити цю помилку. Легше підтримувати код. Ну і if потрібен якщо ви точно знаєте що може трапитись при виклику функції або методу. try+catch допомагає обробити ті помилки про котрі ви не знаєте зовсім нічого. НАприклад чому не виділилась пам'ять або ще щось. У вас наприклад функція чомусь не справцювала, і ви не знаєте чому. А try+catch можна дізнатись чому і відштовхуючись від цього писати далі свій код
Порівнювати дійсні числа накшталт: double b; if(b == 0) --- це погано. Тому що тут може бути щось типу цього: b=0.00000000001; Так можна робити лише з цілими числами. А з дійсними треба так: if( (b-0)
Дякую за роз'яснення. Підкажіть - оця конструкція ( try + catch) - використовується, щоб коректно опрацьовувати помилки?
Бо в принципі варіант з if - цілком ефективно справляється з даним завданням.
Для чого ускладнення?
Це в першу чергу це для того щоб зменьшити код якщо ви відловлюєте помилки за допомогою if+else. В коді їх може бути дуже і дуже багато.
По друге це потрібно щоб вивести потрібний текст помилки і обробити цю помилку.
Легше підтримувати код.
Ну і if потрібен якщо ви точно знаєте що може трапитись при виклику функції або методу. try+catch допомагає обробити ті помилки про котрі ви не знаєте зовсім нічого. НАприклад чому не виділилась пам'ять або ще щось. У вас наприклад функція чомусь не справцювала, і ви не знаєте чому. А try+catch можна дізнатись чому і відштовхуючись від цього писати далі свій код
ОК 🎉 Дякую за роз'яснення
Порівнювати дійсні числа накшталт: double b; if(b == 0) --- це погано. Тому що тут може бути щось типу цього: b=0.00000000001; Так можна робити лише з цілими числами. А з дійсними треба так: if( (b-0)
@@kostiantyn.hermash точно. Дякую що нагадали
Вибач. Не знаю як це зробити
@artemnovichenko
Спробуй в себе:
#include
int main()
{
float f = 2.35f;
std::cout
@@artemnovichenko до чого ви це?
@@artemnovichenko , ну ось вам код на C.
#include
#include
int main()
{
double result = 0.0;
double a = 0.0;
double b = 0.0;
double c = 0.0;
double sinus_alpha = 0.0;
double cosinus_alpha = 0.0;
a = M_PI; // Катет 1
b = 8.42; // Катет 2
c = sqrt(a*a + b*b); // Гіпотенуза
sinus_alpha = b/c; // Синус кута альфа
cosinus_alpha = a/c; // Косинус кута альфа
result = pow(sinus_alpha, 2.0) + pow(cosinus_alpha, 2.0) - 1.0; // Має бути нуль
printf("result = %.30f;
", result);
}
Має бути нуль, чи не так? А ось вам результат роботи програми:
result = -0.000000000000000111022302462516;
Моя архітектура --- amd64, ОС --- Debian GNU/Linux.