Após quebrar a cabeça um pouquinho mais, creio que consegui fazer e entender esse exercicio.
O código seria esse:
var contador = 30
while(contador <= 40){
if (contador == 33) {
contador = contador + 1
}
if (contador == 37){
contador = contador + 1
}else {
mostra(contador)
contador = contador + 1
}
}
mostra("FIM");
Gostaria de saber se compreendi de maneira certa pois quando o contador recebia o valor 33 ou 37 entrava nas condições if e dentro dessas condições é feita a somatória porém não estava conseguindo entender por que dentro dessas condições ifs já não chamava a função mostra() com o valor do contador atual, depois de quebrar a cabeça um pouquinho e usar o caderno para literalmente escrever o código creio que cheguei a um entendimento e gostaria de saber se está correto:
Quando o contador recebe o valor 33 irá entrar no primeiro if(contador ==33) como é verdadeiro essa condição, será feita a soma desse valor com +1 que irá retornar 34 porém com esse novo valor irá entrar novamente na condição while, ou seja, agora irá verificar se:
while(34<=40){ // bloco de código }
Como essa condição irá retornar verdadeira irá ser verificado a primeira condição if(contador ==33) como nesse caso irá retornar falso pois 34 não é igual a 33,será verificado no segundo if(contador ==37) que também irá retornar falso e como os dois ifs o retorno foi falso,vai entrar no else onde está sendo chamado a função mostra() tendo como parametro a variavel contador e logo em seguida a soma do contador. então quando sair de algum dos ifs com o resultado da soma,não irá entrar logo em seguida no condição else para ser mostrado na tela mas sim irá retornar novamente para a condição while para ser verificado se é verdadeiro ou se é falso, caso seja verdadeiro o bloco de código dentro do while será executado e quando for falso vai direto para o final,onde tem a função mostra com o parametro "FIM".
Seria mais ou menos assim a lógica nesse caso? Ou compreendi de forma errada?.