SóProvas


ID
163603
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Programação
Assuntos

Abaixo são exibidas expressões na linguagem Java, nas quais a, b e c são variáveis do tipo boolean. Qual, dentre as expressões que, ao ser avaliada, resulta em um valor diferente das demais?

Alternativas
Comentários
  • Para os valores de a=V, b=F e c=F, temos:

    letra a) F, b) V, c) F, d) F e e) F

    Portanto, resposta letra b !

  • Essa é bem trabalhosa. A questão quer saber qual dentre as alternativas (a, b, c, d ou e) apresenta um valor diferente das demais, ou seja, qual das alternativas tem uma tabela verdade diferente das outras. Podemos deduzir então que, implicitamente, todas as outras 4 alternativas tem tabelas verdade exatamente iguais. Logo, para sabermos a alternativa que distoa basta que PELO MENOS uma linhas da tabela verdade seja diferente. Outra coisa que se pode observar é que a alternativa "a" e "d" são exatamente iguais, logo nenhuma das duas é a resposta que estamos procurando, podemos muito bem descartá-las para facilitar o trabalho.
     
    A forma clássica de resolver isso seria fazer uma tabela verdade das 3 variáveis com as 3 alternativas que sobraram, assim:
    A|B|C - b|c|e
    -+-+-----+-+- 
    V|V|V -  | | 
    V|V|F -  | | 
    V|F|V -  | | 
    V|F|F -  | |
    F|V|V -  | | 
    F|V|F -  | | 
    F|F|V -  | |
    F|F|F -  | |   
    Para preencher o resto das linhas de forma mais rápida temos que nos lembrar de dois truques básicos: 
     1. Numa expressão do tipo "OU" inclusivo quando um dos parâmetros é verdadeiro o resultado é verdadeiro;
     2. Numa expressão do tipo "E" quando um dos parâmetros é falso o resultado é falso.
     
    Aplicando os conceitos acima temos:
    - A alternativa "b" é falsa quando a variável B é falsa (conceito 1)
    - Na alternativa "c", quando A é verdadeira, tudo pode ser cortado e a expressão assume o valor de B (conceito 2)

    O resto deve ser clculado/simplificado usando a tabela verdade como referência. A tabela verdade final fica assim:
    A|B|C - b|c|e
    -+-+-----+-+- 
    V|V|V - V|V|V
    V|V|F - V|V|V
    V|F|V - F|F|F
    V|F|F - V|F|F
    F|V|V - V|V|V
    F|V|F - V|V|V
    F|F|V - F|F|F
    F|F|F - V|V|V                  
     
  • E ainda tinha que lembrar que o operador "^" é o XOR (ou exclusivo) em JAVA.
    Questão chata, a melhor forma de fazer é mesmo substituindo as variáveis por V ou F.
  • Excelente comentário do arthur.

    Para facilitar a visualização, segue abaixo em vermelho a relação inicial das variáveis ac.

    Em seguida, coloquei em azul as respostas de cada alternativa.

    Somente a alternativa B ficou com o resultado diferente na situação em que a variável a for verdadeira e as demais forem falsas.

     

    a    b   c   A   B   C   D   E

    V   V   V   V   V   V   V   V

    V   V   F   V   V   V   V   V

    V   F   V   F   F    F   F   F

    V   F   F   F   V    F   F   F

    F   V   V   V   V   V   V   V

    F   V   F   V   V   V   V   V

    F   F   V   F   F    F   F   F

    F   F   F   V   V   V   V   V