let cont = contPar = contImpar = 0;
do {
cont % 2 == 0 ? contPar++ : contImpar++;
cont++;
} while (cont <= 100);
console.log("Pares:", contPar);
console.log("Impares:", contImpar);
let cont = contPar = contImpar = 0;
do {
cont % 2 == 0 ? contPar++ : contImpar++;
cont++;
} while (cont <= 100);
console.log("Pares:", contPar);
console.log("Impares:", contImpar);
Olá, Luis! Como vai?
Parabéns pela resolução da atividade!
Observei que você explorou o uso do laço do...while para realizar a contagem de números com JavaScript, utilizou muito bem o operador ternário para separar pares e ímpares e ainda compreendeu a importância da incrementação para controlar corretamente o fluxo da repetição.
Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.
Uma dica interessante para o futuro é simplificar a lógica utilizando o for. Assim:
let contPar = 0;
let contImpar = 0;
for (let i = 0; i <= 100; i++) {
i % 2 === 0 ? contPar++ : contImpar++;
}
console.log("Pares:", contPar);
console.log("Ímpares:", contImpar);
Isso faz a contagem de forma mais direta e legível, mantendo o mesmo resultado.
Fico à disposição! E se precisar, conte sempre com o apoio do fórum.
Abraço e bons estudos!
Fala, Luis! Bom código pra puxar um debate.
Vou cutucar dois pontos aqui, tá? Sem maldade — é pra gente pensar junto.
1) Ternário como "fazedor de coisas"
Esse é o tipo de código que funciona, passa no teste, mas vai fazer alguém no code review levantar a sobrancelha. O ternário foi pensado pra retornar um valor, não pra executar side effects. Quando você escreve:
cont % 2 == 0 ? contPar++ : contImpar++;
Você tá basicamente usando um if/else disfarçado de expressão. E aí a gente cai naquela pergunta: "funcionar" é o mesmo que "ser legível"?
Um if/else aqui deixa a intenção explícita — "se for par, incrementa um; senão, incrementa outro". O ternário esconde isso atrás de uma sintaxe que o cérebro pode associar com "me devolve um valor".
Ternário brilha quando você tá atribuindo:
const tipo = cont % 2 === 0 ? 'par' : 'ímpar';
Percebe a diferença? Aqui o ternário tá cumprindo o papel dele: escolher um valor.
2) A armadilha silenciosa do let
Essa aqui é mais traiçoeira:
let cont = contPar = contImpar = 0;
Parece que tá declarando três variáveis com let, né? Mas não. Só cont ganha o let. As outras duas (contPar e contImpar) vazam pro escopo global como variáveis implícitas. Em "use strict" isso estoura um ReferenceError na sua cara.
O seguro é:
let cont = 0, contPar = 0, contImpar = 0;
Ou, se preferir deixar mais claro:
let cont = 0;
let contPar = 0;
let contImpar = 0;
O código funciona? Funciona. Mas a gente que tá aprendendo (e quem já tá no mercado também) precisa treinar esse olhar de "funciona, mas será que comunica bem?". Código a gente escreve uma vez e lê quinhentas.
Bora trocar ideia!
Perfeito! Agradeço demais e levo de coração todo o aprendizado! Obrigado pelo feedback... Eu mesmo não tinha atentado para o caso de usar o ternário em atribuições e foi bom ter isso em mente e nem para o bug quando encadeei as declarações das variáveis. Apesar de ser intuitivo, deixei passar!
A princípio eu usei o ternário por 3 motivos:
1 - É um código muito simples.
2 - O objetivo é mais didático que funcional.
3 - Todos resolveram com IF, então não teria muito sentido psotar mais um código igual.
Apesar de para mim ser um código claro de entendimento! Posso, claro, em códigos maiores facilitar a clareza com estruturas mais intuitivas.
Valeu Vinny por chegar sempre junto nas dúvidas e exclarecimentos. Continje assim!
Corrige meu novo código:
let cont = contPar, contImpar = 0;
do {
cont % 2 == 0 ? contPar++ : contImpar++;
cont++;
} while (cont <= 100);
console.log("Pares:", contPar);
console.log("Impares:", contImpar);