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.
‘A’ < ‘a’
‘A’ < ‘a’
Passo 1
O que o enunciado pede e o que temos de dado:
- Pedem para criar um script que imprime o resultado da expressão
. - Devemos usar as funções disp() e/ou fprintf() para formatar a saída e explicar o resultado.
- A expressão a avaliar é exatamente
.
Passo 2
Entender o que significa comparar caracteres em MATLAB/Octave:
- Em MATLAB, comparar caracteres com operadores relacionais (por exemplo
, , ) equivale a comparar os seus códigos numéricos (valores inteiros que representam cada caractere). - A função que devolve esse código numérico é a função double(). Ou seja, ao fazer double(
) obtemos o código numérico associado ao caractere . - Para as letras latinas básicas, esses códigos coincidem com os valores ASCII. Em particular:
-
- Então, comparar
é o mesmo que comparar numericamente , que é verdadeiro. Em MATLAB esse verdadeiro aparece como o valor lógico .
Passo 3
Como vamos mostrar isso de forma amigável com disp() e fprintf():
- A função fprintf permite formatar texto com especificadores (por exemplo,
para inteiros, para strings, para caracteres) e inclui quebras de linha com . É ideal para mensagens formatadas. - A função disp simplesmente imprime uma expressão ou string sem formatação avançada; é útil para observações rápidas.
- Para escrever aspas simples dentro de uma string em fprintf, é preciso duplicá-las: por exemplo
dentro da string corresponde a mostrar ‘A’ no output.
Passo 4
Planejamento do script (o que o script fará, linha a linha, sem ainda mostrar o código completo):
- Avaliar a expressão e armazenar o resultado lógico numa variável chamada, por exemplo, result.
- Obter os códigos numéricos das duas letras com double(‘A’) e double(‘a’).
- Usar fprintf para imprimir:
- A expressão avaliada e o seu resultado lógico (mostrando
para verdadeiro ou para falso). - Os códigos numéricos de cada letra.
- Uma interpretação em texto dizendo por que a comparação deu verdadeiro ou falso (usando os códigos numéricos).
- A expressão avaliada e o seu resultado lógico (mostrando
- Usar disp para uma observação final explicando que comparações de caracteres usam seus códigos numéricos.
Passo 5
Dicas para o uso no exame / na prova:
- Se for perguntado por que
, explique que se converte os caracteres para seus códigos numéricos e compara os números: . - Lembre-se: letras maiúsculas têm códigos menores que as minúsculas no conjunto ASCII/Unicode para as letras latinas básicas, portanto muitas comparações lexicográficas simples obedecem a essa ordem numérica.
- Em uma resposta curta na prova, pode escrever: "
é verdadeiro porque ."
Resposta
% Script MATLAB/Octave que avalia ‘A’ < ‘a’ e explica o resultado
result = ‘A’ < ‘a’;
codeA = double(‘A’);
codea = double(‘a’);
result = ‘A’ < ‘a’;
codeA = double(‘A’);
codea = double(‘a’);
fprintf(‘Expressao: ‘‘A’’ < ‘‘a’’ --> %d\n’, result);
fprintf(‘Codigos numericos: ‘‘A’’ = %d, ‘‘a’’ = %d\n’, codeA, codea);
fprintf(‘Codigos numericos: ‘‘A’’ = %d, ‘‘a’’ = %d\n’, codeA, codea);
if result
fprintf(‘Interpretacao: ‘‘A’’ < ‘‘a’’ e verdadeiro porque %d < %d (codigos ASCII/Unicode).\n’, codeA, codea);
else
fprintf(‘Interpretacao: ‘‘A’’ < ‘‘a’’ e falso porque %d >= %d (codigos ASCII/Unicode).\n’, codeA, codea);
end
fprintf(‘Interpretacao: ‘‘A’’ < ‘‘a’’ e verdadeiro porque %d < %d (codigos ASCII/Unicode).\n’, codeA, codea);
else
fprintf(‘Interpretacao: ‘‘A’’ < ‘‘a’’ e falso porque %d >= %d (codigos ASCII/Unicode).\n’, codeA, codea);
end
disp(‘Observacao: comparacoes entre caracteres em MATLAB usam seus codigos numericos (função double).’)