1
resposta

[Projeto] Desafio: resultado do teste

Nessa situação, o resultado desse SCRIPT será 'EXPRESSAO VERDADEIRA' ou 'EXPRESSAO FALSA' ?

DECLARE @IDADE_ALUNO INT;
DECLARE @FORMADO_INGLES BIT;
DECLARE @FORMADO_ALEMAO BIT;

SET @IDADE_ALUNO = 17;
SET @FORMADO_INGLES = 1;
SET @FORMADO_ALEMAO = 0;

IF ((@IDADE_ALUNO >= 18 OR @FORMADO_INGLES = 1) OR (@IDADE_ALUNO < 18 AND @FORMADO_ALEMAO = 1))
  PRINT 'EXPRESSAO VERDADEIRA';
ELSE
  PRINT 'EXPRESSAO FALSA';
  

O resultado desta condição é verdadeira. O conceito 'OR' na tabela verdade diz que: se 1 condição for verdadeira, todo o resultado será verdadeiro

Tabela Verdade 'OR'

Condição 1Condição 2Resultado
VVV
VFV
FVV
FFF
1 resposta

Olá, Alex. Tudo bem?

Muito obrigado por compartilhar a sua solução aqui com a gente.

Você está correto em seu raciocínio sobre a operação 'OR' na lógica booleana. No seu script, a expressão dentro do comando IF é composta por duas condições unidas por um 'OR'.

A primeira condição é (@IDADE_ALUNO >= 18 OR @FORMADO_INGLES = 1). Como o valor de @IDADE_ALUNO é 17 e @FORMADO_INGLES é 1 (verdadeiro), essa condição é verdadeira, pois na operação 'OR' se pelo menos uma das condições for verdadeira, o resultado é verdadeiro.

A segunda condição é (@IDADE_ALUNO < 18 AND @FORMADO_ALEMAO = 1). Nesse caso, @IDADE_ALUNO é menor que 18, mas @FORMADO_ALEMAO é 0 (falso), portanto, essa condição é falsa, pois na operação 'AND' ambas as condições precisam ser verdadeiras para o resultado ser verdadeiro.

No entanto, como as duas condições são unidas por um 'OR', e a primeira condição é verdadeira, o resultado final da expressão é verdadeiro. Portanto, o script irá imprimir 'EXPRESSAO VERDADEIRA'.

Parabéns pelo desafio. Bons estudos!