DifícilFase 3
Exercício Difícil — FizzBuzz com Contadores
O clássico exercício de entrevista técnica: combina for, if/else encadeado, operador de resto e continue.
FerramentasVS CodeTerminalNode.js
O FizzBuzz é provavelmente o exercício de lógica mais usado em entrevistas de programação no mundo inteiro — e é uma síntese perfeita de tudo o que viste nesta fase.
Passos a realizar
- Cria fizzbuzz.js na pasta fase3.
- Usa um for que corra de 1 até 30.
- Para cada número: se for divisível por 3 e por 5 ao mesmo tempo, imprime "FizzBuzz". Se for divisível só por 3, imprime "Fizz". Se for divisível só por 5, imprime "Buzz". Caso contrário, imprime o próprio número.
- Usa o operador de resto da divisão (%) para testar divisibilidade — um número é divisível por outro se o resto da divisão for 0.
- Depois de teres a versão base a funcionar, adiciona um contador separado que conte quantas vezes "Fizz" apareceu sozinho (sem contar os "FizzBuzz"), e imprime esse total no fim, fora do loop.
- Usa continue para saltar a impressão do número nos casos em que já imprimiste Fizz, Buzz ou FizzBuzz (evita imprimir duas vezes por engano).
Fluxo de funcionamento
- 1i de 1 a 30
- 2Divisível por 3 e 5? FizzBuzz
- 3Só por 3? Fizz / Só por 5? Buzz
- 4Senão, imprime o número
Código de exemplo
fizzbuzz.js
let contadorFizz = 0;
for (let i = 1; i <= 30; i++) {
if (i % 3 === 0 && i % 5 === 0) {
console.log("FizzBuzz");
} else if (i % 3 === 0) {
console.log("Fizz");
contadorFizz++;
} else if (i % 5 === 0) {
// completa aqui: imprime "Buzz"
} else {
console.log(i);
}
}
console.log("Fizz sozinho apareceu", contadorFizz, "vezes.");Dicas
- A ordem importa: testa sempre "divisível por 3 e por 5" antes de testar cada um sozinho — senão o caso combinado nunca é alcançado (o mesmo erro do exercício da faixa etária).
- Se o teu contador de "Fizz sozinho" não bater certo, confirma se estás a incrementá-lo só dentro do ramo certo do if/else e não do FizzBuzz.
Erros comuns
- Usar dois if separados em vez de if / else if, fazendo com que um número como 15 imprima "Fizz" e depois "Buzz" em vez de "FizzBuzz".
- Comparar com == 0 usando um número de divisão errado (dividir por 5 quando queria testar por 3, por exemplo) — um erro fácil de cometer a copiar e colar condições.