Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Todos o números entre 30 a 40, exceto 33 e 37!

Acho que o critério do while ( contador >= 30 && contador <= 40 ) não ser o ideal, pois como o contador já é iniciado pelo número 30, bastava apresentar como critério até onde ele teria que ir, não é?

Solução proposta:

var contador = 30;
    while(contador >= 30 && contador <= 40) {
        if( contador != 33 && contador != 37) {
                mostra(contador);
        }
        contador = contador + 1; 
    }

Solução que acho mas correta:

    var cont = 30;
    while (cont<=40) {
        if (cont != 33 && cont != 37) {
            mostra(cont);
        }
        cont = cont + 1;
    }
6 respostas
solução!

Fabio, boa noite. Neste caso, realmente a sua solução é uma solução viável, porém não é a ideal. E te explico o porque.

Quando se trabalha com variáveis, faz parte de um cenário mais ideal possível evitar o uso de HardCode. Mas o que é HardCode? HardCode é quando se tem o dado de uma variável incorporado diretamente no código-fonte, ao invés de obter ele por algum processamento ou input. O HardCode neste exemplo é feito na declaração

var contador = 30;

Percebe que este dado sempre será iniciado com 30 e nunca por um input de usuário? Agora imagine que esta variável passe a receber um input de usuário. Com a sua solução, o código irá funcionar como deve, mas não quando ele deve funcionar, ou seja, ele irá considerar também os valores abaixo de 30. Percebe? Esse é um curso introdutório para criar a lógica de programação, porém, com o costume, este tipo de lógica já se torna automático pra você.

Caso não tenha sido claro ou não tenha entendido, por favor, avise-nos.

Boas aulas :)

Yuri, valeu pela interação.

Muito interessante esta informação sobre HardCode, ainda não tinha ouvido falar

Apesar do contator e a lógica não permitirem que o valor seja inferior a 30, o código while(contador >= 30 && contador <= 40) , anula um erro anterior seja no código ou em uma entrada incorreta pelo usuário. Foi isso que intendi que você quis passar. Correto?

Muito obrigado pelas explicações.

Exatamente! Dessa maneira nós minimizamos o erro.

Ah, e parabéns por conseguir entender a lógica do raciocínio, sinal de que está aprendendo bastante com os cursos; é assim que se começa :).

tinha uma duvida mas ja entendi :)

Olá! Eu não entendi a lógica do raciocínio. Podem me ajudar?

if(numero != 33 && numero != 37) {
            mostra(numero);    
        }
        numero = numero + 1;

Daniel S vou tentar ver se consigo explicar.

while(contador >= 30 && contador <= 40) {
        if( contador != 33 && contador != 37) {
                mostra(contador);
        }
        contador = contador + 1; 
    }

Aqui é o seguinte: Enquanto o contador for maior que 30 e menor que, 40 e se o contador for diferente de 33 e 37 ele deve imprimir contador. Em seguida incrementar no valor do contador + 1. O incremento deve ficar fora do IF e dentro do While.