Programar em C/Dicas de programação em C: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
m cat
m formatação: <source lang=c>; index: autocat
Linha 9:
Por exemplo, suponha um programa no qual várias funções e rotinas são executadas. Algo como:
 
<source lang=c>
int main(int argc, char *argv[])
{
Linha 19 ⟶ 20:
return 0;
}
</source>
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:
 
<source lang=c>
int main(int argc, char *argv[])
{
Linha 37 ⟶ 40:
return 0;
}
</source>
 
Isto permite o programador determinar até que ponto o programa roda antes de dar erro, facilitando muito a detecção deste.
Linha 42 ⟶ 46:
Outro exemplo de como o printf é útil na detecção de problemas. Suponha um programa cheio de laços aninhados. Tal como:
 
<source lang=c>
for(...)
{
Linha 53 ⟶ 58:
}
}
</source>
 
Caso durante a execução o programa entre em um loop infinito, uma forma de detectar em qual dos laços está o problema é:
 
<source lang=c>
for(...)
{ printf(“Teste 1”);
Linha 67 ⟶ 74:
}
}
</source>
 
A impressão que se repetir eternamente é aquela dentro do laço problemático.
Linha 72 ⟶ 80:
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:
 
<source lang=c>
x=...
printf(“primeira atribuicao de x eh %tipo”, x);
Linha 82 ⟶ 91:
...
printf(“A resposta eh %tipo”, x);
</source>
 
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.
 
Para uso como debug, a linguagem C apresenta duas macros que quando utilizadas junto com o printf s&atilde;osão otimosótimos recursos.
*__FILE__ = nome do arquivo.
*__LINE__ = numero da linha de execu&ccedil;&atilde;ão.
Linha 91 ⟶ 101:
*__PRETTY_FUNCTION__ = nome da fun&ccedil;&atilde;o atual.
 
<source lang=c>
...
printf("%d:%s:%s\n", __LINE__, __FILE__, __PRETTY_FUNCTION__);
...
</source>
 
O trecho acima vai te dar uma saida para debug muito util com o seguinte conteudo:
 
<source lang=c>
Exemplo:
3:hello.c:main
</source>
 
 
==Tecle 1 para rodar==
Linha 111 ⟶ 124:
Com while:
 
<source lang=c>
int main(int argc, char *argv[])
{
Linha 126 ⟶ 140:
return 0;
}
</source>
 
Com do...while
 
<source lang=c>
int main(int argc, char *argv[])
{
Linha 141 ⟶ 157:
return 0;
}
</source>
 
Com o goto
 
<source lang=c>
int main(int argc, char *argv[])
{
Linha 164 ⟶ 182:
return 0;
}
</source>
 
{{AutoCat}}
[[Categoria:Programar em C|{{SUBPAGENAME}}]]