modelado de inteligencia artificial que sirve para crear algoritmos recursivos para manipular estructuras de datos dinmicas. Para este tutorial se utilizara el programa Lispworks Personal Edition 5.0.1 Hay dos tipos de datos importantes: tomos (Valores elementales que no comienzan con dgitos y no contienen espacio entre letras) Listas (Secuencia de tomos) Operaciones aritmticas bsicas Se realiza una notacin prefija |<operador> <operando1> <operando2>|, en el Lisp se puede realizar las operaciones aritmticas bsicas manera mltiple. Cabe resaltar que las operaciones respetan el tipo de dato usado (entero o real) y trabajan con el dato ms especfico como referencia. Adems de ello se debe recordar que las acciones se realizan de izquierda a derecha (No es lo mismo (/ 4 2) que (/ 2 4) dado que el primero te sale 2 y el segundo 0.5). Suma
Resta
Multiplicacin
Divisin
Definicin de variables Para asignar un valor numrico a una variable se utiliza el comando setq
El comando setf asigna un valor nuevo a uno ya existente, para el ejemplo se usa el comando car que devuelve el primer valor de lista (Sea complejo o atmico)
Operaciones aritmticas no basicas La raz cuadrada de un nmero se obtiene mediante la funcin sqrt
Operaciones lgicas La comparacin se denota como =
Se debe hacer notar que T equivale a verdad y NIL es falso
eq compara si 2 listas son iguales o no
equal compara si dos listas ingresadas son iguales o no
listp verifica si la lista ingresada es un tomo no, si es lista se obtiene un T y si es atomo se obtiene NIL
atom indica si el valor obtenido es atmico (T) o lista (NIL)
Operaciones sobre listas cons: Aade un valor al inicio de una lista
list: construye una lista a partir de elementos
car/ first: devuelve el primer valor de una lista
cdr/ rest: devuelve toda la lista menos el primero
last: Devuelve el ltimo elemento de una lista
length: devuelve el tamao de una lista
append: devuelve la concatenacin de dos listas
reverse: muestra los elementos de una lista de forma inversa
Combinaciones de operaciones sobre listas caar = car(car<lista o atomo>) Indica el primer elemento del primer elemento de una lista
cadr = car(cdr<lista o atomo>) Devuelve el carcter que sigue de separar el primer elemento de la lista (devuelve el segundo elemento)
cdar = cdr(car<lista o atomo>) Devuelve del primer elemento de una lista, todo menos su primer subelemento
cddr = cdr(cdr<lista o atomo>) Devuelve el resto de haber separado el primer elemento de una lista dos veces (desde el 3ro hasta el ltimo)
Funciones lgicas and: Evalua los elementos y si no hay un NIL devuelve el ultimo valor
or: Evalua si todos los elementos son NIL y si no lo son devuelve el primer elemento
not: devuelve T si va con NIL y NIL para algn valor
Funciones para string format: Asigna na cadena de texto en la pantalla y usa el argumento t
Para dar formato de siguiente lnea se usa ~%, imprime un carcter ascii con ~A, notacin decimal con ~D y notacin real con ~F
Funciones defun: define una funcin a especificar (defun nombrefuncion(<argumento(s)>) comentarios (cuerpo))
Funciones iterativas if: condicional con dos alternativas (if(<condicin>)<consecuencia><alternativa>)
cond: Ejecuta un flujo de control dependiendo si la condicin es cierta o no, utiliza la T como opcin final por defecto
let: declara variables locales
dotimes: Evala la forma del cuerpo X veces cambiando su ndice de 0 a X-1 y regresando el resultado
dolist: // do: Permite asignar varias variables (como LET), hacer pasos de iteracin como uno quiera y especificar la condicin de terminacin