quinta-feira, 28 de maio de 2015

Aula 27–Operadores Lógicos

Olá pessoal vamos dar continuidade nesse ciclo de aulas que nos levarão a entender e dominar o conceito de tomada de decisão em Autolisp. Hoje aprenderemos três operadores que são essenciais quando o assunto é tomada de decisão, estou falando dos operadores lógicos  AND, OR e NOT.

Operador AND

Esse operador retornara o resultado como T (verdadeiro), quando todas as condições ou comparações retornarem verdadeiro.

Exemplos:

(and (= “casa” “casa”) (> 10 5)) retorna T

Esse exemplo retornará verdadeiro (T) porque (= “casa” “casa”)  é verdadeiro e (> 10 5)) também é verdadeiro, como as duas condições são verdadeiras o operador and retornara o valor T (verdadeiro).

(setq idade30)
(setq peso 90)
(and (> peso 80) (< idade 25)) retorna nil

Esse exemplo retornara falso (nil) porque (> peso 90) é verdadeiro como a variável peso é 90 e 90 é maior que 80 isso torna a condição verdadeira, porem (< idade 25) é falso porque a variável idade é 30 que é maior que 25 e não menor como manda a condição, como uma das condições é falsa isso torna toda a condição falsa, porque todas as condições dentro do operador logico AND tem que ser verdadeiras.

Operador OR

Esse operador retornara o resultado como T (verdadeiro), quando qualquer uma das condições ou comparações retornarem verdadeiro.

Exemplo:

(or (= “casa” “Armario”) (= 10 20) (> 3 1)) Retorna T

Nesse exemplo apenas a condição (> 3 1) é verdadeira, pois 3 é maior do que 1, as outras são falsas, porem o operador logico OR retornará verdadeiro, pois basta que apenas uma das condições seja verdadeira para que a condição seja verdadeira.

Operador NOT

O operador NOT inverte a verdade quando uma condição é falsa ele retorna verdadeiro e quando é verdadeira ele retorna falso.

Exemplo:

(not (= 1 2)) retorna T

Essa linha retornou verdadeiro porque o operador logico NOT inverteu a verdade, (= 1 2) 1 não é igual a 2 que retorna nil, porem o operador NOT alterou isso para T verdadeiro.
Embora pareça sem utilidade (e na verdade é bem isso mesmo) o operador not pode ajudar em alguns casos.

Podemos também juntar vários operadores lógicos e formar condições de decisão mais elaboradas, vamos ver alguns exemplo abaixo:

(setq n1 10)
(setq n2 20)
(setq n3 30)
(setq ok 1)
(setq cancel 0)
(or (and (> n3 n2) (> n2 n1)) (= ok 0))
(and (or (= ok 1) (= cancel 1)) (or (> n1 n2)(> n2 n3)))

Vamos analisar cada uma dessas condições e verificar se o resultado será um valor falso ou verdadeiro.

(or (and (> n3 n2) (> n2 n1)) (= ok 0))

Acima temos um operador logico OR, ele retornará verdadeiro se qualquer uma das condições for verdadeira, acima temos duas condições uma pintada de amarelo e outra pintada de verde.

Primeiro analisaremos a condição amarela, dentro dela temos uma função AND, então sabemos que para ela retornar verdadeiro todas as condições dentro dela devem ser verdadeiras. A primeira é (> n3 n2) que é verdadeira, pois n3 vale 30 e n2 vale 20, a segunda é (> n2 n1) que também retornara verdadeira, pois n2 vale 20 e n1 vale 10, portanto como ambas as condições são verdadeiras o operador AND retornara o valor verdadeiro.

Agora vamos analisar a condição em verde, (= ok 0), essa condição retornara falso por OK na verdade vale 1.

Temos agora dois resultado dentro da função OR uma verdadeiro e outro falso, portanto o resultado final será verdadeiro. Lembre-se que o operador OR retorna verdadeiro se qualquer uma das condições apresentadas for verdadeira.

Agora vamos ver o segundo exemplo.

(and (or (= ok 1) (= cancel 1)) (or (> n1 n2) (> n2 n3)))

Acima temos o operador lógico AND, de antemão sabemos que todas as condições terão que ser verdadeiras para que o operador AND retorne verdadeiro (T), caso contrario ele retornará falso (nil). Da mesma forma temos duas condições uma amarela e outra verde.

A  condição amarela é composta por um operador OR, que verificara duas condições de igualdade, (= ok 1) será verdadeiro (T), pois o valor de OK é realmente 1, e (= cancel 1) será falso (nil), porem o resultado disso será (T) verdadeiro porque pelo menos uma das condições foi verdadeira.

A condição verde também é comporta pelo operador OR e verificara se dois elementos são realmente maiores que que o elemento comparado, o primeiro é (> n1 n2), falso, pois n1 vale 10 e n2 vale 20, depois (> n2 n3), também falso, pois n2 vale 20 e n3 vale 30, portanto o valor retornado será (nil) falso, pois nenhuma das condições foi verdadeira.

Temos dois resultados das condições um verdadeiro e outro falso, portanto como o operador final é o AND o resultado será falso, pois o operador AND precisa que todas as condições por ela avaliada sejam verdadeiras.

Abaixo segue o link da vídeo aula no meu canal Manual de Cad no youtube.


Espero que tenham gostado.

Sergio Fernandes

Manual de Cad

Nenhum comentário:

Postar um comentário