Olá novamente, Rodrigo!
Vamos analisar passo a passo o primeiro código que você mandou:
var contador = 30
while (contador <= 40) {
contador = contador + 1
if (contador != 33 && contador != 37) {
mostra('O próximo número é ' + contador)
}
}
pulaLinha()
mostra('FIM')
Primeiro será executada a instrução var contador = 30. Logo depois entraremos no bloco while pela primeira vez, sendo feita a verificação contador <= 40, que será satisfeita. Em seguida, é executada a instrução contador = contador + 1, fazendo com que contador fique com valor 31.
Depois entramos na verificação if (contador != 33 && contador != 37), que será satisfeita, já que 31 não é igual a 33 e também não é igual a 37!
Veja bem, para que a expressão inteira dentro desse if seja verdadeira, precisamos que as expressões contador != 33 e contador != 37 sejam ambas verdadeiras! Uma expressão com o operador de desigualdade != é avaliada como true (verdadeira) se os números que estão sendo comparados forem, de fato, diferentes!
Então, como nós sabemos que 31 é diferente de 33 e que 31 também é diferente de 37, a expressão será avaliada de acordo com o seguinte passo a passo:
(contador != 33 && contador != 37)(true && true)(true)
Dessa forma, a expressão inteira é avaliada como true e o código dentro do bloco if é executado! Ou seja, será executada a instrução mostra('O próximo número é ' + contador) e será imprimido na página "O próximo número é 31".
Assim, chegamos ao fim do bloco while e retornamos a verificar a condição contador <= 40, e assim por diante para todos os próximos números. Apenas quando a variável contador tiver valor 33 ou 37, o código dentro do bloco if não será executado!
Por exemplo, digamos que contador esteja com valor 33, a condição do bloco if será avaliada assim:
(contador != 33 && contador != 37)(false && true)(false)
Já que a expressão contador != 33 não pôde ser satisfeita, então o código dentro do if não será executado e não será mostrada a frase "O próximo número é 33"!
Agora analisando o último código que você mandou:
while (contador <= 40) {
contador = contador + 1
mostra('O próximo número é ' + contador)
if (contador != 33 && contador != 37) {
}
}
A primeira coisa que podemos observar é que temos um bloco if com nenhum código dentro! Então ele não está fazendo diferença ali, pois mesmo que a condição (contador != 33 && contador != 37) seja satisfeita, não haverá nenhum código para ser executado. E se a condição não for satisfeita, o if é simplesmente ignorado. Então o código acima é o equivalente ao abaixo:
while (contador <= 40) {
contador = contador + 1
mostra('O próximo número é ' + contador)
}
Ou seja, você está apenas fazendo um loop normal! Serão mostrados na tela os números 31 a 41!
Espero ter tirado suas dúvidas! Se ainda tiver ficado com alguma, pode nos chamar! Bons estudos! :)