FÓRUM

Convidado  

Welcome Guest, posting in this forum requires registration.

Páginas: [1]
Assunto: Questão 57, Informática - 2012
alexcastilhobr
alexcastilhobrMembro
Postagens: 17
Questão 57, Informática - 2012
on: 03/10/2012 - 13:49

Alguém pode me esclarecer a questão era a seguinte:


public class Codigo{

public static void main(String args[]){

int op, acumulador=0;

op=0;

while (op<9){

++op;

switch(op%3){

case 1:

acumulador += op;

case 2:

acumulador -= op;

break;

default:

continue;


}

acumulador += op;

}

System.out.println(acumulador);

}

}


Pedi pra um amigo meu rodar isso em uma arquitetura JAVA, e o resultado foi 12, se eu não me engano na prova era a letra E.


Eu fiz a mesma coisa em PHP:


$op = 0;

$acumulador = 0;

while ($op<9) {

++$op;

switch ($op%3) {

case 1: $acumulador+=$op;

case 2: $acumulador-=$op;

break;

default: continue;

}

$acumulador+=$op;

echo "Acumulador: ".$acumulador."<br/>";

echo "Op: ".$op."<br/>";

echo "<br/>";

}

echo $acumulador;


Reparem que eu coloquei até alguns echo´s que era pra aparecer oque estava mostrando em cada laço, e o resultado foi 30.


O que está havendo? Alguém sabe me dizer?


alexcastilhobr
alexcastilhobrMembro
Postagens: 17
Re: Questão 57, Informática - 2012
on: 03/10/2012 - 14:05

Resultado da saída em PHP:


Acumulador: 1

Op: 1


Acumulador: 1

Op: 2


Acumulador: 4

Op: 3


Acumulador: 8

Op: 4


Acumulador: 8

Op: 5


Acumulador: 14

Op: 6


Acumulador: 21

Op: 7


Acumulador: 21

Op: 8


Acumulador: 30

Op: 9


30


detrechi
Membro
Postagens: 14
Re: Questão 57, Informática - 2012
on: 03/10/2012 - 14:06

Na minha simulação no dia da prova o resultado deu 24, mas como não tinha eu marquei 12 mesmo. Mas acho que a questão deve ser anulada.


xramon
xramonMembro
Postagens: 15
Re: Questão 57, Informática - 2012
on: 04/10/2012 - 01:08

Dito por detrechi no October 3, 2012, 14:06

Na minha simulação no dia da prova o resultado deu 24, mas como não tinha eu marquei 12 mesmo. Mas acho que a questão deve ser anulada.


em C deu 12!


Bacharel em sistemas de informação, pela FACOMP no ano de 2010.

detrechi
Membro
Postagens: 14
Re: Questão 57, Informática - 2012
on: 04/10/2012 - 01:22

Testei em java. O resultado é 12 mesmo. Acertei por aproximação.


marcelossa
Membro
Postagens: 14
Re: Questão 57, Informática - 2012
on: 04/10/2012 - 02:01

Compilei aqui e o resultado deu 12 também. A questão está correta. Não creio que seja anulada.


alexcastilhobr
alexcastilhobrMembro
Postagens: 17
Re: Questão 57, Informática - 2012
on: 04/10/2012 - 19:35

Depois de analisar com calma, consegui descobrir.


No PHP existem níveis de continue, por exemplo o continue é usado para pular aquele laço específico. E se eu quiser pular mais de um laço (no caso de laço dentro de laço) vou usando continue 2, 3 e assim por diante de acordo com o nível.


No JAVA e C, existe APENAS continue para pular o laço e voltar pro início do laço.


Ou seja, ao usar o continue, ele não executa a ultima linha quando o op é 3 e 6.


O que ao meu ver está errado, já que o default é um conjunto de comandos e que deve ser tratado como um bloco de comandos, apesar de não possuir delimitador.


Concordo com o comportamento do PHP que trata o default como um bloco e usa o continue apenas para pular esse bloco específico.


Que coisa hein?


alexcastilhobr
alexcastilhobrMembro
Postagens: 17
Re: Questão 57, Informática - 2012
on: 04/10/2012 - 20:04

Aqui está o código correto em PHP equivalente ao comportamento JAVA:


<?php

$op = 0;

$acumulador = 0;

while ($op<9) {

++$op;

switch ($op%3) {

case 1: $acumulador+=$op;

case 2: $acumulador-=$op;

break;

default: continue 2;

}

$acumulador+=$op;

echo "Acumulador: ".$acumulador."<br/>";

echo "Op: ".$op."<br/>";

echo "<br/>";

}

echo $acumulador;

?>


Páginas: [1]
WP Forum Server by ForumPress | Lucid Crew
Version: 1.8.2; Page loaded in: 0.076 seconds.

 

Emanuel Peixoto

* Capitão do Exército Brasileiro (QCO/Informática/2011)
* Formado em Sistemas de Informação.
* Criador do blog “Rumo à EsFCEx”
* Chefe da Seção de Informática do Hospital Militar de Área de Recife
* Profissional com mais de 15 anos de experiência na área de TI,atuando como Engenheiro de Sistemas e DBA
* Microsoft Certified – MCDBA | MCSE | MCSA | MCITP | MCTS
* IBM Certified Developer – Cognos 8 BI Data Warehouses
* ITIL® V2 e V3
* Green IT Citizen
* ISO/IEC 27002

http://www.mycertprofile.com/Profile/1915602619
http://www.mycertprofile.com/Profile/1915602619

Facebook Twitter LinkedIn Google+ YouTube