No que se refere à programação Java e Java Script, julgue os...
Se o código HTML/Java Script mostrado abaixo for executado em um navegador Internet compatível com Java Script, o resultado obtido será viva mais.
<html>
<script>
var i=5;
var j=10;
do {
document.write(i % j ? " viva " : "
mais ");
j=2;
i++;
}
while (i<=6);
</script>
</html>
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - certo
Para compreender o motivo pelo qual a resposta correta é 'C - certo', é necessário analisar o trecho de código HTML/JavaScript fornecido e entender os conceitos de JavaScript envolvidos, principalmente relacionados à estrutura de repetição 'do...while' e à operação de módulo '%'.
Primeiramente, o código inicia a execução declarando duas variáveis, 'i' e 'j', com os valores 5 e 10, respectivamente. A estrutura de repetição 'do...while' garante que o bloco de código dentro dela seja executado pelo menos uma vez, independentemente da condição especificada na cláusula 'while'.
Dentro do bloco 'do', o código utiliza o método 'document.write()' para escrever na página HTML. A expressão 'i % j ? " viva " : "mais "' é um operador ternário, que funciona como uma versão compacta de uma instrução 'if...else'. A questão aqui é verificar o resultado do módulo de 'i' por 'j', que é uma operação que retorna o resto da divisão de 'i' por 'j'.
Na primeira passagem pelo loop, 'i' é 5 e 'j' é 10. O resultado de 'i % j' é 5, pois 5 dividido por 10 não tem quociente inteiro e tem resto 5. Como 5 é verdadeiro (qualquer valor diferente de zero em JavaScript é considerado verdadeiro), a expressão 'i % j ? " viva " : "mais "' retorna " viva ". Após isso, 'j' é atualizado para 2 e 'i' é incrementado para 6.
Agora, a condição 'while (i <= 6)' ainda é verdadeira, pois 'i' é exatamente 6. O loop executa mais uma vez, e agora 'i % j' é '6 % 2', que é 0, pois 6 é divisível por 2. Neste caso, o resultado do operador ternário é "mais ", já que o resto é 0, que é considerado falso.
Após esta execução, 'i' é incrementado para 7, tornando a condição 'while (i <= 6)' falsa e finalizando o loop. O resultado escrito na página é " viva mais ", que corresponde ao resultado esperado pelo enunciado da questão.
A resposta correta é, portanto, 'C - certo', pois quando o código é executado, ele escreve " viva mais " na página HTML do navegador.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O funcionamento do operador ternário (condição)?(operação 1):(operação 2) é o seguinte: a condição é avaliada se for verdadeira - valores diferentes de 0 - a (operação 1) é executada, caso contrário, a (operação 2) será executada.
Assim, na primeira iteração do fluxo do i%j ==> (5%10) tem resto 5 gerando verdadeiro como resposta do operador, daí será escrito "viva", na sequência, i++ = 6 e j=2, agora a operação i%j ==> (6%2) será 0, enviando uma resposta de falso ao operador que escreverá "mais".
Questão correta. Mas achei estranho o ponto no meio das tags < . html>
bem, eu rodei no meu navegador isso, e sabe o que deu?
<.html> <.script> var i=5; var j=10; do { document.write(i % j ? " viva ":" mais "); j=2; i++; } while (i<=6); <./script> <./html>
código copiado e colado em documento *.html. Saida:
"<.html> <.script> var i=5; var j=10; do { document.write(i % j ? " viva ":" mais "); j=2; i++; } while (i<=6); <./script> <./html>"
Questão ERRADA!!!!! ponto final....
Para o código rodar devem ser retirados os "." das tags html...
Se o código da questão for executado no navegador, o resultado, de fato não será "viva mais" mas sim a impressão de todo o código na pagina, portanto, a questão está errada e isso se dá pela presença do ".' (ponto) antes dos marcadores html e script.
Na prática, para que o código javascript funcione basta retirar o (.) do trecho ".script" e "./script" e para que o somente texto "viva mais" seja exibido, basta retirar o (.) do trecho ".html" e "./html", portanto, se não houve erro no momento de trazer esta questão da prova para este site a questão está totalmente errada!
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo