Tag: Teste de Mesa

Você já ouviu falar de Teste de Mesa?

 

Antes de entrar para a faculdade eu nunca tinha ouvido falar desse termo, nem mesmo no ensino técnico. Porém, esse simples teste pode te ajudar e muito no desenvolvimento do seu programa. Fazer um teste de mesa correto, vai te poupar muito tempo na hora do desenvolvimento.

Confesso que nunca dei tanta importância para esse teste, mesmo porque eu não via necessidade nisso. Mas por que eu não via necessidade nisso? Nem eu sei responder…É um teste que  mesmo feito no papel, pode te ajudar a entender a lógica do que você está querendo fazer. E não se pode negar a importância nisso como um todo.

 

Teste de Mesa: Imagem ensinando como fazer um simples teste de mesa

Bom, recentemente em uma matéria de Estrutura de Dados, me deparei novamente com o tão dispensável por mim, Teste de Mesa.

Em um pequeno teste em sala de aula, me vi diante de três exercícios em java, utilizando array(vetor) o qual eu supostamente deveria fazer o teste de mesa e mostrar na resposta qual exercício compilaria e qual não compilaria.

E o que aconteceu? Bom, eu apenas congelei na hora. O mínimo que eu sabia sobre teste de mesa, foi o que eu apliquei na hora da resolução dos exercícios. Não posso dizer que eu não sabia muito, pois semestre passado eu tive aula com um professor excelente que ensinou toda a sala a fazer da maneira mais fácil possível, não posso culpar o professor por eu ter achado que o teste de mesa não era tão importante e não ter estudado tanto quanto eu precisava. É questão de discernimento (capacidade de compreender situações, de separar o certo do errado).

Sem mais delongas, vou mostrar aqui apenas um exercício que entre todos, foi o que mais me confundiu e que depois do teste em sala, foi o que me tirou horas de sono e horas do feriado para entender realmente o que eu deveria fazer.

O exercício é o seguinte:

Teste de Mesa de Vetor - Programa Java

Eu demorei para entender, o que de fato, não era tão complicado assim. Talvez o medo de não conseguir aprender tenha sido maior do que a minha fé na capacidade que tenho de aprendizado. Entre tantas outras pesquisas na internet sobre array, vetor, loop for, contador, teste de mesa… Fiz uma pergunta no stackoverflow sobre…

Enquanto isso eu continuava a gastar as folhas do meu caderno fazendo teste de mesa atrás de teste de mesa tentando chegar ao resultado que o professor disse ser o certo. O resultado seria:  3, 4, 5, 6, 7.

Depois de muitas folhas rabiscadas com meus testes errados, encontrei a luz do fim do túnel.

Segue abaixo o teste de mesa do código postado anteriormente:

Resolução Teste de Mesa Java - Vetor

 

Para melhor visualização, resolvi passar o teste que fiz a mão para uma planilha em excel, mas eu altamente recomendo fazer o teste a mão, caso queira realmente aprender.

Como eu resolvi o Teste de Mesa:

aux.length: 5

aux[counter]++ é a mesma coisa que aux[counter] = aux[counter] + 1. Ou seja, você vai pegar o valor do aux que está na posição do seu vetor.

Exemplo:

Se o seu vetor está na posição 0, então qual número que esta na posição 0 do aux? Só olhar na tabela ali em cima que você vai ver que é o número 1. Porém, você não vai salvar na variável apenas o número 1, você vai fazer 1 = 1 + 1, que então vai ser 2. O valor que vai ser salvo na variável é o 2.

  • No 1° FOR, o counter vai valer 0. Dai você vai se perguntar: O valor do counter é menor que o tamanho do seu vetor (aux.length)? Sim, porque nesse caso o counter é 0 e o tamanho do seu vetor é 5. Então 0 é menor que 5. Já que isso é verdade, você não vai incrementar na primeira vez, pois a sua primeira pergunta já foi verdade. Você vai passar direto para dentro do laço. Então, como explicado acima, você vai salvar na variável aux[counter]++ o número 2. Se você não entendeu o porquê, leia o paragrafo acima desse aqui. Você vai fazer esse procedimento de voltar no loop quantas vezes você puder, porém quando você chegar no valor 5 do counter, você vai se perguntar se 5 do counter é menor que 5 que é o valor do aux.length. Essa resposta vai ser falsa, é quando você sabe que o programa está no fim.
  • No 2° FOR, você vai entrar com o valor 0 normalmente e vai fazer a mesma sequencia do for 1. (Lembrando que quando o counter é 0, ele não incrementa, ele já entra direto no for).  Porém, aqui no segundo for, você já não vai mais guardar o valor na variável, você vai imprimir. O ++array[counter] significa que você deve primeiro somar 1 a  sua variável array que está na posição do counter.

 

A pagina “Vida de Programador” fez uma tirinha sobre teste de mesa, então segue ela aqui para descontrair um pouco todo esse tema.

Tirinha da página Vida de Programador sobre Teste de Mesa

O que estava me confundindo no final das contas, não era o teste de mesa em si, mas trabalhar com vetor(array) e loop estava me deixando com os cabelos em pé. HAHA’

Nesse site ~Lista de exercícios sobre vetor – Java~ você encontra lista de exercício pronta apenas para estudo do teste de mesa. Por favor, não copiei o exercício senão você estará apenas adiando seus estudos, estude teste de mesa em cima desses exercícios que você se dará bem.

De qualquer modo, assim como eu tive todas essas dúvidas, outras pessoas também podem ter. Se eu ajudar pelo menos uma pessoa, já fico feliz.

Bons estudos. ;) <3

Revisão do texto: Dener Carvalho: Github e Stackoverflow.