TA345/531 TP257 - Erros mais freqüentes na Programação em C

01.Warnings (advertências) e errors (erros) do compilador
02.Ponto-e-vírgula na diretiva #include
03.Confusão com os parâmetros de scanf()
04.Esquecimento dos parâmetros de printf()
05.Ponto-e-vírgula na definição de uma função
06.Confusão na atribuição com o operador de teste de igualdade
07.Atribuição de valores negativos a inteiros sem sinal
08.Operações matemáticas com tipos de dados diferentes
09.Instruções com else "pendurado"
10.Laços infinitos
11.Ponteiros
12.Ponto-e-vírgula em macros
13.Erro de índice em matrizes
14.Declaração de matrizes multidimensionais



 
01.Warnings(advertências) e errors (erros) do compilador:
    Após a compilação o C pode acusar a presença de warnings e/ou errors. Warnings são advertências, porém não impossibilita que o programa rode. É aconselhável que o programador faça o devido aprimoramento no programa com base nos warnings. Já os errors são erros que impossibilitam que o programa rode; deve-se necessariamente corrigi-los. Atente para o fato de que nem sempre os warnings e erros são apontados nas linhas corretas; às vezes deve-se corrigir a linha acima ou abaixo de onde o compilador os apontou. Qualquer dúvida consulte o Help do BorlandC.

Volta ao menu inicial



 
02.Ponto-e-vírgula na diretiva #include:
    A diretiva #include não deve ser terminada com um ponto-e-vírgula, assim como a diretiva #define.

Volta ao menu inicial



 
03.Confusão com os parâmetros de scanf():
    Deve-se atentar para a sintaxe da função scanf() e os parâmetros corretos de formato das variáveis. Não deixe espaço entre o símbolo & e o nome da variável.

Volta ao menu inicial


04.Esquecimento dos parâmetros de printf():
    Não se esqueça de fornecer um parâmetro para cada especificador de formato presente no primeiro argumento de printf(), nem forneça um argumento de tipo diferente do especificado. Isto normalmente acontece quando há muitos especificadores e o programador fornece os argumentos fora de ordem.

Volta ao menu inicial


05.Ponto-e-vírgula na definição de uma função:
    Não se coloca ponto-e-vírgula após o fecha-parênteses da definição da função. Na definição da função, após o fecha-parênteses deve aparecer um abre-chaves.

Volta ao menu inicial


06.Confusão na atribuição com o operador de teste de igualdade:
    Um erro comum dos iniciantes, particularmente programadores Pascal aprendendo C, é usar o operador de atribuição, =, em lugar do operador relacional, = =. A maior parte dos compiladores C não fornece ao programador nenhum meio de detecção de tal erro lógico.

Volta ao menu inicial


07.Atribuição de valores negativos a inteiros sem sinal:
    Cuidado com esse erro, principalmente em funções.

Volta ao menu inicial


08.Operações matemáticas com tipos de dados diferentes:
    Muitas vezes não se percebe este erro, pois na maioria das operações o programa executa os cálculos com exatidão. Porém, há funções que só aceitam alguns tipos de dados (por exemplo log()) e dados de mesmo tipo.

Volta ao menu inicial


09.Instruções com else "pendurado":
    O else associa-se ao if mais interno. Atente para o uso de chaves. Para evitar confusões, aconselha-se o uso do fluxograma, pois acompanhando-o, a probabilidade de ocorrer erros de programação é bastante reduzida.

Volta ao menu inicial


10.Laços infinitos:
    Um perigo potencial em qualquer laço é que a expressão de controle nunca termine o laço. De tal laço se diz ser "infinito". Para evitá-lo, assegure-se que a variável índice possa atingir um valor pré-determinado.

Volta ao menu inicial


11.Ponteiros:
    Se for retornado por uma função um ponteiro que aponte para o endereço de uma variável automática, existe sério perigo. O armazenamento para todas as variáveis automáticas é desalocado quando a função é deixada. Por conseguinte, o endereço retornado pode, logo em seguida, ser reutilizado pelo sistema, e a informação armazenada em tal endereço é destruída pela gravação de novas informações. A solução para este problema é lembrar-se de nunca retornar o endereço de uma variável automática

Volta ao menu inicial


12.Ponto-e-vírgula em macros:
    Macros não devem ser terminadas com ponto-e-vírgula. O pré-processador substitui o nome da macro pelo seu valor literal. Se houver um ponto-e-vírgula na macro ele será mantido na expansão

Volta ao menu inicial
  


 13.Erro de índice em matrizes:
    O maior perigo associado às matrizes são os erros de índice. Estes ocorrem quando seu código tenta atribuir a, ou acessar um endereço de memória que não foi alocado. A conseqüência de um erro de índice pode ser um resultado errado ou a destruição completa do sistema. Se se esquecer de alocar espaço para uma matriz declarada como ponteiro para algum tipo, então todas as tentativas de atribuir ou acessar dados da matriz conduzem a erros de índice. Atente para o fato de que a primeira fileira e a primeira coluna são definidas com índice 0 (zero) e não 1 (um).
 
Volta ao menu inicial
 


14.Declaração de matrizes multidimensionais:
    Ao declarar matrizes multidimensionais, é importante lembrar-se de que as exigências de armazenamento podem tornar-se excessivas. Por exemplo, a matriz tridimensional declarada como:
   double dados [50] [50] [50];
exige armazenamento para 125000*sizeof(double) baites, ou 1.000.000 de baites.

Volta ao menu inicial



Retornar à HomePage
Retornar ao Menu Aulas
 
Página preparada em 05 de janeiro de 1998.
Última atualização: 14 de janeiro de 1998.

Qualquer dúvida ou sugestão, entre em contato conosco:
Enrique Ortega ortega@fea.unicamp.br
Daniel Kitawara Wada dkw@fea.unicamp.br