Considere os seguintes comandos da linguagem Java:boolean f,...

Próximas questões
Com base no mesmo assunto
Q719382 Programação

Considere os seguintes comandos da linguagem Java:


boolean f, g, h;

int b = 1, a = 2, c = 10, d = 5 ;

f = ! ((a + c) ! = (d + d + a)) ;

g = ((a + d) < = (c - d) || (c - d) > (a * d)) ;

h = ! ((c/d-b*a) < (a+d) && (c/a) > (a+b)) ;

Os valores que serão armazenados nas variáveis f, g e h são, respectivamente,

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a C - true, false e false. Vamos entender o porquê dessa alternativa ser a correta através da análise das expressões dadas na linguagem Java. É importante destacar que, para resolver esse tipo de questão, o aluno deve ter uma compreensão sólida sobre operadores lógicos, operadores relacionais e precedência de operadores em Java.

Primeiramente, vamos calcular as expressões atribuídas a cada variável booleana f, g e h, utilizando os valores das variáveis a, b, c e d fornecidos.

1. Cálculo de f:

f = ! ((a + c) != (d + d + a));

Substituindo os valores, temos f = ! ((2 + 10) != (5 + 5 + 2));, que simplifica para f = ! (12 != 12);. Como 12 é igual a 12, a expressão dentro dos parênteses é false. O operador lógico de negação ! inverte o valor, então f = !false; resulta em f = true;.

2. Cálculo de g:

g = ((a + d) <= (c - d) || (c - d) > (a * d));

Aqui temos duas expressões conectadas pelo operador lógico || (OU). Vamos avaliá-las separadamente:

(a + d) <= (c - d) se torna (2 + 5) <= (10 - 5), que simplifica para 7 <= 5, o que é false.

(c - d) > (a * d) se torna (10 - 5) > (2 * 5), que simplifica para 5 > 10, o que também é false.

Como ambas as expressões são false, e estamos utilizando o operador lógico OU, g será false.

3. Cálculo de h:

h = ! ((c/d-b*a) < (a+d) && (c/a) > (a+b));

Aqui temos duas expressões conectadas pelo operador lógico && (E). Vamos avaliá-las separadamente:

(c/d-b*a) se torna (10/5-1*2), que simplifica para (2-2), resultando em 0.

(a+d) se torna (2+5), que é 7. Portanto, 0 < 7 é true.

(c/a) se torna (10/2), que é 5.

(a+b) se torna (2+1), que é 3. Portanto, 5 > 3 é true.

Como ambas as expressões são true e estão conectadas pelo operador lógico E, a expressão dentro dos parênteses é true. Aplicando a negação !, h será !true, ou seja, false.

Portanto, a resposta correta para os valores de f, g e h é true, false e false, correspondendo à alternativa C.

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

Pessoal eu coloquei essas expressoes pra rodar e me retornou true true false, façam o teste.

A primeira expressão é:

f = ! ((a + c) ! = (d + d + a)) ;

f = ! ((2+ 10) != (5 + 5 + 2)) => f = ! (12 != 12)) => verdadeiro, é só observar a negação
 

A segunda expressão é:

g = ((a + d) < = (c - d) || (c - d) > (a * d)) ;

g = ((2 + 5) < = (10 - 5) || (10 - 5) > (2 * 5)) => g = ((7 < = 5) || (5 > 10)) => falso, é só ver que os valores dentro de cada expressão e depois computar o 'ou'

 

A terceira expressão é:

h = ! ((c/d-b*a) < (a+d)  &&  (c/a) > (a+b)) ;

h = ! ((10/5-1*2) < (2+5)  &&  (10/2) > (2+1))  => h = ! ((2-2) < (7)  &&  (5) > (3))  => h = ! ((0 < 7)  &&  (5 > 3)) => falso, é só ver que os valores dentro de expressão e observar a negação após a resolução interna da expressão

    boolean f, g, h;

    int  b  = 1, a  = 2, c  = 10, d  = 5 ;

    f = ! ((a + c) != (d + d + a)) ;

    g = ((a + d) <= (c - d) || (c - d) > (a * d)) ;

    h = ! ((c/d-b*a) < (a+d)  &&  (c/a) > (a+b)) ;
    
    System.out.println("F: "+f);
    System.out.println("G: "+g);
    System.out.println("H: "+h);

F: true
G: false
H: false

Letra C) 

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo