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:
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 :
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