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.
Passo 1
O enunciado pede um script que imprima o resultado da expressão
e que use as funções
As informações relevantes que temos:
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 é
. - Há duas comparações dentro dela:
e . - Depois as duas são somadas com o operador
+.
Passo 2
Avaliar a primeira comparação:
.
Explicação didática:
- Em MATLAB/Octave, o operador
==testa igualdade elemento a elemento e devolve um valor lógico:true(representado internamente como) se os operandos forem iguais, ou false(representado como) caso contrário. - Aqui estamos comparando os escalares
e . Eles não são iguais.
Portanto,
Passo 3
Entender a segunda comparação:
.
Primeiro observar o literal de caracteres
:
-
é uma cadeia de três caracteres: espaço, caractere zero, espaço. - Os códigos ASCII desses caracteres são:
- Logo o vetor de códigos de
é .
Agora a comparação
:
- 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
), e a comparação é feita elemento a elemento. - Então é feita a comparação entre o escalar
e cada elemento do vetor : - O resultado é um vetor lógico linha com três elementos.
Portanto,
Passo 4
Somar os resultados:
.
Relembrando:
-
(um escalar). -
(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
ou (há conversão implícita para doubleao fazer operações aritméticas).
Assim:
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);atribuia a. - A linha
b = (48==' 0 ');compara o escalar48com cada caractere de' 0 '(cujos códigos ASCII são) 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;dispmostra 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
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