sábado, 14 de março de 2009

Tutorial Scilab - 5 [Operações Lógicas]

[English version here.]

Como eu acredito que a maioria dos leitores conhece algo sobre operações lógicas, não vamos dar uma aula sobre o assunto. Porém, é bom revisar algo.

Operações lógicas são usadas para analisar situações do tipo:
  • 2 é maior que 3? - falso
  • o vetor [1 2 3 4] é maior que o vetor [1 3 5]? - verdadeiro
  • a palavra 'casa' é menor que 'cachorro'? - falso

As operações lógicas são aplicadas para manipular os resultados destas situações, por exemplo:

Eu tenho 22 anos, meu pai tem 52 e minha irmã tem 19.

Quem de nós é o mais velho?

Vamos criar uma solução geral para o problema.

  • Se eu sou mais velho que meu pai e minha irmã então eu sou o mais velho.
  • Se meu pai é mais velho que eu e minha irmã então ele é o mais velho.
  • Se minha irmã é mais velha que eu e meu pai então ela é a mais velha.

O conector e é uma operação lógica.

Os operadores lógicos são usados com variáveis lógicas, estas por sua vez são variáveis que só assumem os valores verdadeiro ou falso.

As operações lógicas básicas são as seguintes: {não, ou, e}, em inglês: {not, or, and} (vamos usar a notação em inglês porque esta é a adotada na literatura em português, inclusive brasileiro).

A operação not é unária e as demais são binárias.

Vamos ver agora os resultados de cada operação.

NOT
  • not(verdadeiro) = false
  • not(false) = verdadeiro

AND
  • falso and falso = falso
  • falso and verdadeiro = falso
  • verdadeiro and falso = falso
  • verdadeiro and verdadeiro = verdadeiro

OR
  • falso or falso = falso
  • falso or verdadeiro = verdadeiro
  • verdadeiro or false = verdadeiro
  • verdadeiro or verdadeiro = verdadeiro

Agora um pequeno exemplo.

Se eu preciso de uma raquete e uma bola mas só tenho a raquete então eu não estou satisfeito. Porém, se eu preciso de uma bola de basquete ou de vôlei mas eu só tenho a de vôlei então eu já estou satisfeito.

Sobre os operadores no Scilab:

O operador '~' é o not.

O operador '|' é o or.

O operador '&' é o and.

As operações and e or podem ser aplicadas em vetores com as funções or(.) e and(.).

Agora os scripts:

-->x = 10;

-->y = 15;

-->z = x + y
z =

25.

-->(x > y) & (z > x) // x é menor que y então a primeira operação é falso
ans =

F

-->(x > y) | (z > x) // z é maior que x então a segunda operação é verdadeiro
ans =

T

-->~((x > y) & (z > x)) // o resultado é o inverso do primeiro resultado
ans =

T

-->~((x > y) | (z > x)) // o resultado é o inverso do segundo resultado
ans =

F


Os resultados são F (false - falso) ou T (true - verdadeiro) porque operações logicas fornecem resultados lógicos.

Se for necessário usar os valores lógicos diretamente:

-->r1 = %F
r1 =

F

-->r2 = %T
r2 =

T

-->and([r1 r2])
ans =

F

-->or([r1 r2])
ans =

T


Para fechar o post, se você usar operadores lógicos com variáveis numéricas, o Scilab interpreta 0 (zero) como falso e qualquer coisa diferente de zero como verdadeiro.

-->x = 0;

-->y = 2;

-->z = -5;

-->x | y | z
ans =

T

-->x & y & z
ans =

F

-->x & z
ans =

F

-->x & y
ans =

F

-->y & z
ans =

T

Nenhum comentário: