Um erro lógico no código do programa é um erro que não faz com que o programa trava ou produz uma mensagem de erro, mas resulta no programa que produz uma saída incorreta ou inesperada. É uma falha no design ou algoritmo do programa, levando a raciocínio ou cálculos defeituosos.
Diferentemente dos erros de sintaxe (que impedem o código de compilar ou executar) ou erros de tempo de execução (que fazem com que o programa trave durante a execução), os erros lógicos são sutis e mais difíceis de detectar porque o programa parece ser executado normalmente. O erro está no *o que *o programa faz, não o *como *.
Aqui estão alguns exemplos para ilustrar:
* cálculo incorreto: Um programa destinado a calcular a média de três números pode adicioná -los em vez de resumir e depois dividir por três. O programa é executado, mas o resultado está errado.
*
Erro fora por um: Um loop pode iterar uma vez muitas ou poucas, levando a resultados incorretos ou acessar dados fora dos limites da matriz (embora este último possa se manifestar como um erro de tempo de execução, dependendo do idioma e do ambiente).
*
Lógica condicional incorreta: Uma instrução `if` pode ter uma condição que não reflita com precisão a lógica pretendida. Por exemplo, o uso de `>` em vez de `> =` pode levar a excluir um caso necessário.
*
loop infinito: Um loop que nunca termina porque sua condição de saída nunca é atendida. Embora isso possa parecer um erro de tempo de execução, é fundamentalmente um erro lógico no design do loop.
*
Uso da variável incorreta: Usar a variável errada ou sobrescrever acidentalmente uma variável de valor prematuramente, pode levar a resultados inesperados.
Os erros lógicos geralmente são o tipo de bug mais difícil de encontrar e corrigir, porque exigem examinar cuidadosamente o algoritmo e o fluxo do programa para identificar a fonte do raciocínio defeituoso. Técnicas de depuração como o uso de instruções de impressão (para inspecionar valores variáveis em vários pontos) ou usar um depurador (para passar pela linha a linha) são essenciais para encontrar e resolver erros lógicos.