Логическая ошибка (программирование) (Lkincyvtgx konQtg (hjkijgbbnjkfguny))
- Эта статья о логической ошибке в программировании. Об ошибках, связанных с нарушением логической правильности рассуждений, см. Логическая ошибка.
В программировании логической ошибкой называется баг, который приводит к некорректной работе программы, но не к краху программы.
Логические ошибки могут происходить как в компиляторах, так и в интерпретаторах. В отличие от синтаксических ошибок, программы с логическим изъяном являются правильными программами, хотя в большинстве случаев ведут себя не так, как задумано первоначально[1].
Существование данного вида ошибок связано с неправильными действиями на этапе принятия решений.
В C++ логической ошибкой также называется особое исключение (logic_exception).
Общие причины
[править | править код]Ошибки могут быть связаны как с простейшими опечатками в написании операторов, так и в запутанном выборе веток алгоритма. Существует также масса других причин: некорректное приведение типа, использование переменной вне её области видимости, отсутствие фрагмента кода и ошибочное понимание разработчиком требований.
Отладка логических ошибок
[править | править код]Одним из способов поиска этого типа ошибки является распечатка списка переменных в программе (во внешний файл или на экран). Хотя этот способ не работает, если ошибка заключается в вызове не той функции, он всё же является самым простым в случае неправильной реализации математического алгоритма.
Примеры
[править | править код]В этом примере задачей функции является возвращение среднего для двух переданных чисел. Ошибка кроется в неучёте приоритета операторов (деление в выражении вычисляется до операции сложения) и отсутствии по этой причине скобок.
int average(int a, int b)
{
return a + b / 2; /* правильная запись (a + b) / 2 */
}
См. также
[править | править код]- Синтаксическая ошибка (программирование)
- Ошибка на единицу
- Runtime error detection[англ.]
- Compilation error[англ.]
Примечания
[править | править код]- ↑ Знайте свои ошибки. Три типа ошибок в программировании . Microsoft. Дата обращения: 5 января 2017. Архивировано 6 января 2017 года.