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)
(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)))
(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