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
Abacaxi (discussão | contribs)
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:
 
<sourcesyntaxhighlight lang=c>
int main(int argc, char *argv[])
{
Linha 33:
return 0;
}
</syntaxhighlight>
</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:
 
<sourcesyntaxhighlight lang=c>
int main(int argc, char *argv[])
{
Linha 53:
return 0;
}
</syntaxhighlight>
</source>
 
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:
 
<sourcesyntaxhighlight lang=c>
for(...)
{
Linha 71:
}
}
</syntaxhighlight>
</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 é:
 
<sourcesyntaxhighlight lang=c>
for(...)
{ printf("Teste 1");
Linha 87:
}
}
</syntaxhighlight>
</source>
 
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:
 
<sourcesyntaxhighlight lang=c>
x=...
printf("primeira atribuicao de x eh %tipo", x);
Linha 104:
...
printf("A resposta eh %tipo", x);
</syntaxhighlight>
</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.
Linha 114:
*__PRETTY_FUNCTION__ = nome da função atual.
 
<sourcesyntaxhighlight lang=c>
...
printf("%d:%s:%s\n", __LINE__, __FILE__, __PRETTY_FUNCTION__);
...
</syntaxhighlight>
</source>
 
O trecho acima vai te dar uma saida para debug muito util com o seguinte conteudo:
 
<sourcesyntaxhighlight lang=c>
Exemplo:
3:hello.c:main
</syntaxhighlight>
</source>
 
==Tecle 1 para rodar==
Linha 137:
Com while:
 
<sourcesyntaxhighlight lang=c>
int main(int argc, char *argv[])
{
Linha 153:
return 0;
}
</syntaxhighlight>
</source>
 
Com do...while
 
<sourcesyntaxhighlight lang=c>
int main(int argc, char *argv[])
{
Linha 170:
return 0;
}
</syntaxhighlight>
</source>
 
Com o goto
 
<sourcesyntaxhighlight lang=c>
int main(int argc, char *argv[])
{
Linha 195:
return 0;
}
</syntaxhighlight>
</source>
 
{{AutoCat}}