Programar em C/Dicas de programação em C: diferenças entre revisões
[edição verificada] | [revisão pendente] |
Conteúdo apagado Conteúdo adicionado
Desfeita a edição 258226 de 201.9.115.0 (Discussão) |
m <source> -> <syntaxhighlight> (phab:T237267) |
||
Linha 22:
Por exemplo, suponha um programa no qual várias funções e rotinas são executadas. Algo como:
<
int main(int argc, char *argv[])
{
Linha 33:
return 0;
}
</syntaxhighlight>
Digamos que o programa tenha sido compilado com sucesso, mas ocorra algum erro durante sua execução. Podemos usar o printf para detectar o erro da seguinte maneira:
<
int main(int argc, char *argv[])
{
Linha 53:
return 0;
}
</syntaxhighlight>
Isto permite o programador determinar até que ponto o programa roda antes de dar erro, facilitando muito a detecção deste.
Linha 59:
Outro exemplo de como o printf é útil na detecção de problemas. Suponha um programa cheio de laços aninhados. Tal como:
<
for(...)
{
Linha 71:
}
}
</syntaxhighlight>
Caso durante a execução o programa entre em um loop infinito, uma forma de detectar em qual dos laços está o problema é:
<
for(...)
{ printf("Teste 1");
Linha 87:
}
}
</syntaxhighlight>
A impressão que se repetir eternamente é aquela dentro do laço problemático.
Linha 93:
Um último exemplo de detecção de problemas por meio do printf. Suponha que a resposta dada por um programa não é a esperada, que a resposta consiste na impressão de uma variável x, a qual recebe diversas atribuições ao longo do programa. Podemos identificar o erro dando um printf em x após cada uma de suas atribuições:
<
x=...
printf("primeira atribuicao de x eh %tipo", x);
Linha 104:
...
printf("A resposta eh %tipo", x);
</syntaxhighlight>
Caso o valor de x dependa do valor de outras variáveis que não são impressas, imprimi-las pode ajudar na detecção do problema.
Linha 114:
*__PRETTY_FUNCTION__ = nome da função atual.
<
...
printf("%d:%s:%s\n", __LINE__, __FILE__, __PRETTY_FUNCTION__);
...
</syntaxhighlight>
O trecho acima vai te dar uma saida para debug muito util com o seguinte conteudo:
<
Exemplo:
3:hello.c:main
</syntaxhighlight>
==Tecle 1 para rodar==
Linha 137:
Com while:
<
int main(int argc, char *argv[])
{
Linha 153:
return 0;
}
</syntaxhighlight>
Com do...while
<
int main(int argc, char *argv[])
{
Linha 170:
return 0;
}
</syntaxhighlight>
Com o goto
<
int main(int argc, char *argv[])
{
Linha 195:
return 0;
}
</syntaxhighlight>
{{AutoCat}}
|