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

o meu n usei igual e deu certo

a minha duvida é na resolução desse exercicio , eu coloquei assim e deu certo , então se eu n colocar o ultimo else, teria algum problema , se fosse mais complexo ou mais dados?


meta charset="UTF-8">

<script>

    function pulaLinha() {
        document.write("<br><br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

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

    }

   </script> ``
2 respostas
solução!

Bom dia Wadih, tudo certo?

A parte do código do professor

        else if(contador == 37) {    
            contador = contador + 1;
        }

"Equivale" ao seu

        } else {
            if(contador==37){
                contador=contador+1;
            }

Porém é recomendado utilizar else if por boas práticas. Caso queira uma observação melhor sobre os else ifs acesse esse tópico que respondi ontem, talvez possa te dar uma visão mais clara sobre o por que utilizar o else if .

Já o que acontece quando você não coloca o mesmo else do professor, é que em seu código o contador = contador + 1; sempre está sendo executado, entende que quando as afirmações contador == 33 ou contador == 34 são true, o contador delas também irão funcionar? ou seja você está somando no contador no IF e no final do While, o que faz com que o contador some 2 de uma vez ( pule uma casa) quando as afirmações são verdadeiras:

Exemplos:

Vamos considerar que no exemplo o contador já começa com 33

    var contador= 33;
    while(contador<=40){
        if(contador==33){
            contador=contador+1 # Irá executar
        } else {
            if(contador==37){
                contador=contador+1;
            }
        }
        mostra (contador);
        contador=contador+1; # Irá executar também

Contador se começasse com 30:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

No caso do professor:

    var contador = 33;
    while(contador <= 40) {

        if( contador == 33 ) {
        contador = contador + 1; # irá executar
        }
        else if(contador == 37) {    
            contador = contador + 1;
        }
        else {
        mostra(contador);
        contador = contador + 1;  # não irá executar pois isso só executaria caso o primeiro if e o segundo if ( else if) não fosse true
        }
      }

Contador se começasse com 30 :

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Assim conseguimos visualizar que o seu contador está pulando um número quando alguma de suas afirmações é true algo que não aconteceria se o código:

        mostra(contador);
        contador = contador + 1; 

estivesse dentro de um else pois ele só executaria se os ifs fossem falsos

saquei economiza memoria de resolucao, para um programa grande ia poupar tempo e memoria do programna

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software