O método chinês de depuração
O método chinês é uma técnica de depuração manual de algoritmos que consiste do acompanhamento e registro do estado das variáveis no papel.
Essa técnica é muito empregada no meio acadêmico quando os alunos de TI estão tendo o primeiro contato com algoritmos e códigos, mas também é bastante útil, por exemplo, quando estamos realizando provas escritas em concursos/processos seletivos.
Abaixo você pode ver um exemplo de aplicação do chinês em uma das questões da última prova de programação usada no processo seletivo para programador aqui da DevMedia:
![Questão Questão](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-01.jpg)
![Vamos aplicar o método chinês Vamos aplicar o método chinês](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-02.jpg)
![Primeiro passo: identificar as variáveis/valores Primeiro passo: identificar as variáveis/valores](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-03.jpg)
![Em seguida devemos preencher a tabela com os valores em passo do algoritmo Em seguida devemos preencher a tabela com os valores em passo do algoritmo](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-04.jpg)
![Linha 2: $i = 3 Linha 2: $i = 3](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-05.jpg)
![Linha 4: $i <= 5 é verdadeiro Linha 4: $i <= 5 é verdadeiro](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-06.jpg)
![Linha 5: $i % 2 vale 1 Linha 5: $i % 2 vale 1](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-07.jpg)
![Linha 8: a variável $i é decrementada em 1 Linha 8: a variável $i é decrementada em 1](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-08.jpg)
![Linha 4: $i <= 5 é verdadeiro Linha 4: $i <= 5 é verdadeiro](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-09.jpg)
![Linha 5: $i % 2 vale 0 Linha 5: $i % 2 vale 0](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-10.jpg)
![Linha 6: a variável $i é incrementada em 2 e passa a valer 4 Linha 6: a variável $i é incrementada em 2 e passa a valer 4](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-11.jpg)
![Linha 4: $i <= 5 é verdadeiro Linha 4: $i <= 5 é verdadeiro](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-12.jpg)
![Linha 5: $i % 2 vale 0 Linha 5: $i % 2 vale 0](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-13.jpg)
![Linha 6: a variável $i é incrementada em 2 e passa a valer 6 Linha 6: a variável $i é incrementada em 2 e passa a valer 6](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-14.jpg)
![Linha 4: $i <= 5 é falso Linha 4: $i <= 5 é falso](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-15.jpg)
![Linha 12: a variável $i é incrementada em 1 e passa a valoer 7 Linha 12: a variável $i é incrementada em 1 e passa a valoer 7](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-16.jpg)
![Finalmente, o valor impresso na linha 14 é 7 Finalmente, o valor impresso na linha 14 é 7](http://arquivo.devmedia.com.br/naoexclusivo/JoelRodrigues/DevCast-Chines/slide-17.jpg)
<?php
$i = 3;
while ($i<=5) {
if (($i%2)==0){
$i = $i+2;
}else{
$i--;
}
}
$i++;
echo $i;
?>
Vamos aplicar o Chinês para descobrir o resultado
Primeiro passo: identificar quais variáveis/valores serão avaliados
Em seguida devemos preencher a tabela com os valores em passo do algoritmo
Linha 2: $i = 3
Linha 4: $i <= 5 é verdadeiro
Linha 5: $i % 2 vale 1
Linha 8: a variável $i é decrementada em 1
Linha 4: $i <= 5 é verdadeiro
Linha 5: $i % 2 vale 0
Linha 6: a variável $i é incrementada em 2 e passa a valer 4
Linha 4: $i <= 5 é verdadeiro
Linha 5: $i % 2 vale 0
Linha 6: a variável $i é incrementada em 2 e passa a valer 6
Linha 4: $i <= 5 é falso
Linha 12: a variável $i é incrementada em 1 e passa a valor 7
Finalmente, o valor impresso na linha 14 é 7
Baseado nessa técnica você pode desenvolver variações e seguir a ideia para avaliar, por exemplo, seu modelo de dados. Para isso você pode gerar valores fictícios e colocar seu modelo à prova, fazendo questionamentos para saber se ele atende suas necessidades.
Além disso, saber fazer a depuração manual lhe ajuda a entender como usar os mecanismos de depuração presentes em IDEs como Delphi e Visual Studio.
E aí, o que achou? Você usa esse método no seu dia a dia? Compartilhe conosco suas experiências.