Exercícios Resolvidos de Expressões e precedência

Ver Teoria

Enunciado

João escreveu uma expressão onde y = 2 x 2 quando x > 0 , e y = - 2 x 2 - x 15 quando x ≤ 0 . A expressão ficou dessa forma:

y = x > 0 * 2 * x * x + x < = 0 * ( - 2 * x * x - x / 15 )

Sabendo que x e y são variáveis do tipo double responda:

Demonstre a ordem que as expressões serão executadas.

Mostre que y = 2 quando x = 1 .

Mostre que y = - 1 quando x = - 3 .

Passo 1

Vamos lá. Essa é uma questão de precedência e associatividade. Então vamos tirar um tempinho pra lembrar da nossa tabela:

Passo 2

A gente sempre deve começar pelos parêntesis mais internos. Nesse caso é a expressão destacada em vermelho:

Agora temos 4 parêntesis externos. Todos tem a mesma precedência, mas pela regra de associatividade devemos analisá-los da esquerda para direita

Depois que os parêntesis estão resolvidos, temos que calcular as multiplicações. Temos duas multiplicações, então, pelas regras de associatividade, devemos analisar da esquerda pra direita.

Depois é calculada a soma:

E por fim o valor resultado é guardado na variável y :

Passo 3

Belezinha. Agora vem comigo que vamos colocar essa sequência de passos em prática

Primeiro, onde tiver x vamos substituir por 1 :

y = 1 > 0 * 2 * 1 * 1 + 1 < = 0 * ( - 2 * 1 * 1 - 1 / 15 )

Em seguida, vamos resolvemos o parêntese mais interno:

y = 1 > 0 * 2 * 1 * 1 + 1 < = 0 * ( - 3 / 15 )

Na sequência, resolvemos os parêntesis externos

y = t r u e * 2 + f a l s e * ( - 3 / 15 )

A gente sabe que t r u e = 1 e f a l s e = 0 , vamos substituir:

y = 1 * 2 + 0 * ( - 0.2 )

Agora vamos resolver as multiplicações:

y = 2 + 0

E por fim a soma:

y = 2

Passo 4

Legal né?!

Vamos fazer o mesmo passo a passo, mas para x = - 3 :

y = - 3 > 0 * 2 * - 3 * - 3 + - 3 < = 0 * ( - 2 * - 3 * - 3 - - 3 / 15 )

Primeiro resolvemos o parêntese mais interno:

y = - 3 > 0 * 2 * - 3 * - 3 + - 3 < = 0 * ( - 15 / 15 )

Agora os parêntesis externos

y = f a l s e * 18 + t r u e * ( - 15 / 15 )

Sabemos que t r u e = 1 e f a l s e = 0 , então vamos substituir:

y = 0 * 18 + 1 * ( - 15 / 15 )

Agora vamos resolver as multiplicações:

y = 0 + - 1

E por fim a soma:

y = - 1

Resposta

Ei, a resposta está no passo a passo :)