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.
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.
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.
07.Atribuição
de valores negativos a inteiros sem sinal:
Cuidado com esse erro, principalmente
em funções.
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.
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.
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.
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
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
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.
Qualquer dúvida ou sugestão, entre
em contato conosco:
Enrique Ortega ortega@fea.unicamp.br
Daniel Kitawara Wada dkw@fea.unicamp.br