Faça um script que imprime o resultado das seguintes expressões: Utilize as funções disp() e/ou fprintf() para formatar a saída explicando os resultados das expressões.
-1 && 2
-1 && 2
Passo 1
O enunciado pede que seja feito um script que imprime o resultado da expressão
usando as funções
Informações dadas:
disp() e/ou fprintf() para explicar o resultado.Informações dadas:
- A expressão a avaliar é
.
Passo 2
Entendendo o que a expressão significa (explicação passo a passo, sem assumir conhecimento prévio):
- Em muitas linguagens (incluindo MATLAB/Octave), operadores lógicos tratam números: o valor
é considerado lógico falso e qualquer número diferente de é considerado lógico verdadeiro. Ou seja, “truthiness” numérica: -
falso - qualquer
verdadeiro
-
- O operador
é o AND lógico com short-circuit (avaliado escalares em MATLAB): - Primeiro avalia-se o operando da esquerda.
- Se o da esquerda for falso (
), o resultado final já é falso e o operando da direita nem é avaliado (curto-circuito). - Se o da esquerda for verdadeiro (não-zero), então avalia-se o operando da direita; o resultado é verdadeiro somente se ambos (esquerda e direita) forem verdadeiros.
- Aplicando isso à nossa expressão:
- A esquerda é
. Como , isso é considerado verdadeiro. - Como a esquerda é verdadeira, o operador
avalia a direita: . Como , isso também é verdadeiro. - Como ambos são verdadeiros, o resultado do AND lógico é verdadeiro. Em MATLAB o resultado é um valor lógico representado por
(logical true).
- A esquerda é
Passo 3
Observações práticas e detalhes importantes que podem aparecer na prova:
- Em MATLAB/Octave o resultado será do tipo lógico (logical) e mostrado como
para true e para false. - O operador
exige escalares (não funciona elemento-a-elemento em vetores). Para operações elemento-a-elemento use . - Curto-circuito importa quando o segundo operando tem efeitos colaterais (funções, divisões, índices). Aqui isso não aparece, mas é útil saber.
Passo 4
Script sugerido (arquivo MATLAB/Octave). Este script calcula a expressão e imprime uma mensagem formatada com
fprintf. Também mostro uma versão com disp comentada.% arquivo: resultado_and.m
a = -1;
b = 2;
% calcula o AND lógico com short-circuit
res = a && b; % res será logical 1 (true) quando ambos a e b são não-zero
% imprime com fprintf, explicando o resultado
fprintf('Resultado de %d && %d: %d\n', a, b, res);
fprintf('Interpretação: %d e %d s\\~ao n\\~ao-zero, logo ambos verdadeiros → resultado = logical(%d)\\n', a, b, res);
% alternativa com disp (menos formatada)
% disp(['Resultado de ', num2str(a), ' && ', num2str(b), ': ', num2str(res)]);
% disp('Interpretação: valores não-zero são tomados como verdadeiro (logical 1).');
Explicando o que o script faz (para você entender linha a linha):
a = -1;eb = 2;atribuem os valores dados.res = a && b;avalia o AND lógico com curto-circuito — converte implicitamenteaebem verdadeiros/falsos conforme são não‑zero/zero.- O primeiro
fprintfimprime a expressão e o valor numérico do resultado. - O segundo
fprintfdá uma interpretação textual (explica por que o resultado é verdadeiro).
Passo 5
Como raciocinar rápido na prova (dica prática):
- Veja os operandos: se ambos são números diferentes de zero, imediatamente conclua que cada um é “true”. Então
true. - Lembre-se que em MATLAB/Octave o resultado será mostrado como
(logical true). Assim, sem calcular nada complicado, apenas verificando zero/não-zero chega-se ao resultado.
Resposta
Resultado de
:
Interpretação: e
são números não-zero, portanto verdadeiros; o AND lógico resulta em
Interpretação: