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.
(3==2)+(48==' 0 ')

Passo 1

O enunciado pede um script que imprima o resultado da expressão
(3==2)+(48==' 0 ')
e que use as funções disp() e/ou fprintf() para formatar a saída e explicar o porquê dos resultados.
As informações relevantes que temos:
  • A expressão inteira é (3==2)+(48==' 0 ').
  • Há duas comparações dentro dela: (3==2) e (48==' 0 ').
  • Depois as duas são somadas com o operador +.

Passo 2

Avaliar a primeira comparação: (3==2).
Explicação didática:
  • Em MATLAB/Octave, o operador == testa igualdade elemento a elemento e devolve um valor lógico: true (representado internamente como 1) se os operandos forem iguais, ou false (representado como 0) caso contrário.
  • Aqui estamos comparando os escalares \,3 e \,2. Eles não são iguais.
Portanto,
(3==2)=0.

Passo 3

Entender a segunda comparação: (48==' 0 ').
Primeiro observar o literal de caracteres ' 0 ':
  • ' 0 ' é uma cadeia de três caracteres: espaço, caractere zero, espaço.
  • Os códigos ASCII desses caracteres são: \text{ASCII}(' ') = 32,\qquad \text{ASCII}('0') = 48.
  • Logo o vetor de códigos de ' 0 ' é [32\; 48\; 32].
Agora a comparação (48==' 0 '):
  • Em MATLAB, comparar um número escalar com um vetor de caracteres faz com que o vetor de caracteres seja tratado pelo seus códigos numéricos (por exemplo '0' \mapsto 48), e a comparação é feita elemento a elemento.
  • Então é feita a comparação entre o escalar \,48 e cada elemento do vetor [32\;48\;32]: 48==32 \;\rightarrow\; 0,\qquad 48==48 \;\rightarrow\; 1,\qquad 48==32 \;\rightarrow\; 0.
  • O resultado é um vetor lógico linha com três elementos.
Portanto,
(48==' 0 ') = [0\; 1\; 0].

Passo 4

Somar os resultados: (3==2)+(48==' 0 ').
Relembrando:
  • (3==2)=0 (um escalar).
  • (48==' 0 ')=[0\;1\;0] (vetor linha de três elementos lógicos).
Regras de MATLAB relevantes:
  • Somar um escalar com um vetor resulta em soma elemento a elemento, o escalar é somado a cada elemento do vetor.
  • Valores lógicos participam de operações aritméticas como se fossem 0 ou 1 (há conversão implícita para double ao fazer operações aritméticas).
Assim:
(3==2)+(48==' 0 ') = 0 + [0\;1\;0] = [0\;1\;0].

Passo 5

Script exemplo (MATLAB/Octave) que imprime o resultado e explica passo a passo usando disp e fprintf:
% script_expressao.m

% calcular os termos
a = (3==2);          % a é 0
b = (48==' 0 ');     % b é [0 1 0]
soma = a + b;        % soma é [0 1 0]

% mostrar explicações com fprintf
fprintf('Avaliação de (3==2): %d (0 = false, pois 3 ~= 2)\n', a);
fprintf('Avaliação de (48=='' 0 ''): [ %d %d %d ] (comparação com os códigos ASCII [32 48 32])\n', b);
fprintf('Resultado de (3==2)+(48=='' 0 ''): [ %d %d %d ]\n', soma);

% alternativa usando disp para mostrar o vetor resultado sem formatação
disp('Resultado (com disp):');
disp(soma);
Comentando o script (passo a passo):
  • A linha a = (3==2); atribui 0 a a.
  • A linha b = (48==' 0 '); compara o escalar 48 com cada caractere de ' 0 ' (cujos códigos ASCII são [32\;48\;32]) e produz o vetor lógico [0 1 0].
  • A soma soma = a + b; soma o escalar com cada elemento do vetor, resultando em [0 1 0].
  • fprintf é usado para imprimir a explicação formatada; disp mostra o vetor de forma mais direta.

Passo 6

Exemplo do que o script imprime (saída esperada):
Avaliação de (32): 0 (0 = false, pois 3 ~= 2)
Avaliação de (48
’ 0 ‘): [ 0 1 0 ] (comparação com os códigos ASCII [32 48 32])
Resultado de (32)+(48’ 0 '): [ 0 1 0 ]
Resultado (com disp):
0 1 0

Resposta

[0\;1\;0]

Exercícios relacionados