Operadores en LISP

Los operadores son la base de cualquier lenguaje de programación. Por lo tanto, la funcionalidad del lenguaje de programación LISP está incompleta sin el uso de operadores. Podemos definir operadores como símbolos que nos ayudan a realizar cálculos matemáticos y lógicos específicos sobre operandos. En otras palabras, podemos decir que un operador opera los operandos. 

Diferentes tipos de operadores en LISP

  • Operadores aritméticos
  • Operadores de comparación
  • Operadores logicos
  • Operadores bit a bit

Operador aritmético:

Los operadores aritméticos se utilizan para realizar operaciones matemáticas como suma, resta, multiplicación y división.

Operador  Descripción  Sintaxis
Operador de suma (+) suma los dos numeros (+ num1 num2)
Operador de sustracción (-)  Resta el segundo número del primer número (- num1 num2)
Multiplicación(*) Multiplicar dos números (* num1 num2)
División(/) Dividir los dos números (/num1 numero2)
Módulo (mod)  Obtener el resto de dos números (MOD num1 num2)
Incremento(incf) Incrementar número por valor dado (incf num1 num2)
Decremento(decf) Decrementar número por valor dado (decf num1 num2)

Ejemplo: operadores aritméticos 

Lisp

;set value 1 to 300
; set value 2 to 600
(setq val1 300)
(setq val2 600)
  
;addition operation
(print (+ val1 val2))
  
;subtraction operation
(print (- val1 val2))
  
;multiplication operation
(print (* val1 val2))
  
;division operation
(print (/ val1 val2))
  
;modulus operation
(print (MOD val1 val2))
  
;increment a by 10
(print (incf val1 val2))
  
;decrement b by 20
(print (decf val1 val2))

Producción :

900  
-300  
180000  
1/2  
300  
900  
300 

Operador de comparación:

Estos operadores se utilizan para comparar números tomando dos o más operandos.

Operador  Descripción  Sintaxis
= Este operador verifica si los valores de los operandos son todos iguales o no, si es así, devolverá T (Verdadero), de lo contrario, NIL (= número1 número2)
/= Este operador verifica si los valores de los operandos no son iguales, si es así, devolverá NIL, de lo contrario T (Verdadero) (/= núm1 núm2)
> Este operador verifica si los valores del operando 1 son mayores que el operando 2, si es así, devuelve True, de lo contrario, NIL (> num1 num2)
< Este operador verifica si los valores del operando 1 son menores que el operando 2, si es así, devuelve True, de lo contrario, NIL (< número1 número2)
>= Este operador verifica si los valores del operando 1 son mayores o iguales que el operando 2, si es así, devuelve True, de lo contrario, NIL (>= número1 número2)
<= Este operador verifica si los valores del operando 1 son menores o iguales que el operando 2, si es así, devuelve True, de lo contrario, NIL (<= número1 número2)  
máximo Este operador devuelve el valor máximo. (máx. num1 num2) 
min Este operador devuelve el valor mínimo. (mínimo num1 num2)

Ejemplo: Operadores de comparación

Lisp

;set value 1 to 100
; set value 2 to 200
(setq val1 100)
(setq val2 200)
  
;check val1 is equal to val2 or not
(print (= val1 val2))
  
;check val1 is not equal to val2 or not
(print (/= val1 val2))
  
;check val1 is greater than val2 or not
(print (> val1 val2))
  
;check val1 is less than val2 or not
(print (< val1 val2))
  
;check val1 is greater than or equal to val2 or not
(print (>= val1 val2))
  
;check val1 is less than or equal to val2 or not
(print (<= val1 val2))
  
;get maximum number among val1 and val2
(print (max val1 val2))
  
;get minimum number among val1 and val2
(print (min val1 val2))

Producción:

NIL  
T  
NIL  
T  
NIL  
T  
200  
100 

Operador lógico:

Common LISP admite 3 tipos de operadores lógicos en valores booleanos

Operador  Descripción  Sintaxis 
y

Este operador toma dos números que se evalúan de izquierda a derecha. Si todos los números se evalúan como no nulos, se devuelve el valor del último número.

 De lo contrario, se devuelve nil.

(y num1 num2)
o Este operador toma dos números que se evalúan de izquierda a derecha. Si algún número se evalúa como no nulo, se devuelve el valor del último número. De lo contrario, se devuelve nil. (o num1 num2)
no Este operador toma un número y devuelve T (verdadero) si el argumento se evalúa como NIL (no num1)

Ejemplo de Operadores Lógicos

Lisp

;set value 1 to 50
; set value 2 to 50
(setq val1 50)
(setq val2 50)
  
;and operator
(print (and val1 val2))
  
;or operator
(print (or val1 val2))
  
;not operator with value1
(print (not val1))
  
;not operator with value2
(print (not val2))

Producción:

50  
50  
NIL  
NIL 

Operador bit a bit:

Estos operadores se utilizan para realizar la manipulación de bits individuales de un número.

Operador  Descripción  Sintaxis
registro El operador devuelve AND lógico bit a bit de dos números  (logand num1 num2)
logior El operador devuelve OR inclusivo bit a bit de dos números (logior num1 num2)
registro El operador devuelve OR exclusivo bit a bit de dos números (logxor num1 num2)
lognor El operador devuelve bit a bit NO de dos números (lognor num1 num2)
logeqv El operador devuelve NOR exclusivo bit a bit de dos números (logeqv num1 num2)
conteo de registros El operador devuelve el número de unos en la representación binaria de un entero (recuento de registros num1)
ceniza Desplaza los bits a la izquierda si el conteo es positivo de lo contrario a la derecha (número de cenizas)

Ejemplo: operadores bit a bit

Lisp

;set value of variable val1 to 10
(setq val1 10)
;set value of variable val2 to 5
(setq val2 5)
  
;; logand operator
(print (logand val1 val2))
  
;; logior operator
(print (logior val1 val2))
  
;; logxor operator
(print (logxor val1 val2))
  
;; lognor operator
(print (lognor val1 val2))
  
;; logeqv operator
(print (logeqv val1 val2))
  
;; logcount operator
(print (logcount val2))
  
; arithmetic left shift
(print (ash val1 val2))   
  
; arithmetic right shift 
(print (ash val1 (- val2))) 

Producción :

0 
15 
15 
-16 
-16 
2 
320 
0 

Publicación traducida automáticamente

Artículo escrito por aniruddhashriwant y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *