Ao terminar esta aula, você vai conseguir
- Distinguir intenção de algoritmo executável
- Mapear entrada, processamento e saída
- Escrever pseudocódigo antes de traduzir para JavaScript
Um problema descreve uma necessidade; um algoritmo descreve os passos capazes de atendê-la. Nesta aula, você vai transformar “calcular o troco” numa sequência que outra pessoa consegue revisar antes que a sintaxe entre na conversa.
O resultado esperado é simples: para compra de 3.740 centavos e pagamento de 5.000, o programa informa 1.260 centavos. Também precisamos dizer o que acontece quando o pagamento é menor. Sem esse segundo caminho, temos uma demonstração feliz, não uma solução completa.
Pense numa receita entregue a um cozinheiro literal. Ingredientes representam entradas, ações representam processamento e prato representa saída. A analogia termina quando o software mantém estado e reage a eventos; aqui ela serve somente para lembrar que “faça do jeito certo” não é um passo definido.
Resolva no papel primeiro
Comece com pseudocódigo. Ele não precisa obedecer a JavaScript, mas precisa ter verbos, dados e fim:
RECEBER total da compra em centavos
RECEBER valor pago em centavos
SE valor pago for menor que total
INFORMAR pagamento insuficiente
SENÃO
CALCULAR troco como valor pago menos total
INFORMAR troco
FIM SE
ENCERRARLeia cada linha como uma pessoa que não conhece a loja. As unidades estão declaradas, os dois caminhos produzem saída e existe término. Esse é o critério antes da tradução.
Separe entrada, processamento e saída
As entradas são total e pago. O processamento compara os valores e, quando possível, subtrai. A saída é uma mensagem. Não confunda mostrar com calcular: o valor do troco deve existir antes de ser formatado.
Agora traduza sem alterar a regra:
function calcularTroco(total, pago) {
if (pago < total) return 'pagamento insuficiente';
const troco = pago - total;
return `troco: ${troco} centavos`;
}
console.log(calcularTroco(3740, 5000));
console.log(calcularTroco(3740, 3000));No Node v26.3.0, as saídas são troco: 1260 centavos e pagamento insuficiente. Cada uma corresponde a uma seta do pseudocódigo. Se a execução difere, compare linha por linha em vez de acrescentar comandos por tentativa.
Faça uma mudança controlada
Troque somente o pagamento de 5.000 para 4.000 e preveja 260. Depois troque para 3.739 e preveja a mensagem de insuficiência. A mudança controlada revela o limite exato da condição.
No laboratório, o código percorre uma lista de passos. Adicione uma quarta etapa entre execução e conferência. O critério é ela aparecer com número três, empurrar a conferência para quatro e manter “algoritmo encerrado” no final.
Erro comum: pressupor contexto
“Receber o valor” não diz se é texto, reais ou centavos. “Calcular” não diz qual operação. “Se der errado” não nomeia a condição. O computador não completa essas lacunas com experiência.
Quando uma instrução parece óbvia, peça a alguém para simulá-la. Toda pergunta revela uma decisão que ainda está na cabeça de quem escreveu. A missão termina quando a pessoa executa sem improvisar e consegue apontar entrada, processamento e saída.
Leve essa disciplina para a próxima aula. Variáveis darão nomes aos dados, mas nomes bons não salvam um algoritmo ambíguo. Primeiro o papel, depois a tradução, por fim a execução e a explicação do resultado.
Laboratório ao vivo
Sequência de preparo sem lacunas
O sandbox roda no navegador. Leia primeiro o pseudocódigo comentado, complete a lista de passos e confirme que a saída mantém a ordem definida.
Pare e pense
O que torna uma lista de instruções um algoritmo executável?
A linguagem é uma tradução posterior. O algoritmo precisa declarar ações, sequência e fim sem depender de quem já conhece a tarefa.
Faça sem copiar
Escreva o algoritmo de preparar uma mochila, peça para outra pessoa simular e revise toda linha que provocar uma pergunta. Termine sem ambiguidade.
Fontes para consultar
Terminou a missão?
Marque apenas quando você conseguir explicar o conceito e concluir o desafio. O progresso fica salvo somente neste navegador.
Próxima: Modele o estado com variáveis e tipos de dado →