Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: DarkSorcerer en 10 Mayo 2014, 05:32 am



Título: [LISP] Necesito ayuda para programar en Lisp
Publicado por: DarkSorcerer en 10 Mayo 2014, 05:32 am
Dentro del curso es aprender Lisp, pero el lenguaje fue propuesto, es decir, tengo que investigarlo y exponerlo en una presentación.

Por ahora, solamente me he propuesto empezar desde lo mas sencillo, con la ayuda de la pagina "compileonline" para ver mis resultados, por lo que ahora lo único que quiero hacer es un programa que resuelva las 4 operaciones básicas matemáticas, como lo es la suma, resta, multiplicación y división, me ha costado un poco por que es muy difícil encontrar información de LISP y aún más en español.

Mi gran problema es el uso de funciones, me gustaría poder imprimir por pantalla los resultados que devuelven las funciones, o sea, en una funcion se hace una operación matemática, y este lo devuelve para que pueda ser desplegada por pantalla, pero no puedo lograrlo, no lo encuentro como si fuera Java o C++ donde tengo experiencia, en Lisp no puedo entender aún el uso de las funciones.

Bueno, directo al grano, pondré mi código, lo que yo espero de mi programa es que pueda imprimir por pantalla los resultados de las operaciones básicas, algo que no puedo lograr aún.
También pondré lo que sala en la pantalla de consola.

Código
  1. ;Este programa prueba las 4 operaciones matematicas basicas, utilizando ademas
  2. ;seleccian de variables y funciones.
  3.  
  4. ;Asignando valores enteros a las variables X e Y.
  5. (defvar x 5)
  6. (defvar y 10)
  7.  
  8. ;Definiendo las funciones.
  9. (defun saludar() (write-line "Bienvenidos a mi programa.")) ;Saluda al usuario.
  10. (defun instruir() (write-line "Mi programa calcula las 4 operaciones matematicas.")) ;Explica al usuario de que trata el programa.
  11. (defun espaciar() (write-line "") (write-line "")) ;Crea espaciado en el texto.
  12. (defun despedirse() (write-line "Hasta pronto!"))
  13. (defun valordeX() (write-line "El valor de X es: 10"))
  14. (defun valordeY() (write-line "El valor de Y es: 5"))
  15. (defun sumar(x y) (+ x y))
  16. (defun restar(x y) (- x y))
  17. (defun multiplicar(x y) (* x y))
  18. (defun dividir(x y) (/ x y))
  19.  
  20. ;Iniciando el programa con un saludo al usuario.
  21.  
  22. (saludar)
  23. (espaciar)
  24. (instruir)
  25. (espaciar)
  26. (valordeX)
  27. (valordeY)
  28. (espaciar)
  29.  
  30. ;Resolviendo las 4 operaciones matematicas basicas.
  31.  
  32. (write-line "La suma de los 2 numeros es: ")
  33. (print (sumar (x y)))
  34. (espaciar)
  35.  
  36. (write-line "La resta de los 2 numeros es: ")
  37. (print (restar (x y)))
  38. (espaciar)
  39.  
  40. (write-line "La multiplicacion de los 2 numeros es: ")
  41. (print (multiplicar (x y)))
  42. (espaciar)
  43.  
  44. (write-line "La division de los 2 numeros es: ")
  45. (print (dividir (x y)))
  46. (espaciar)
  47.  
  48. ;Antes de cerrar, el programa se despide del usuario.
  49.  
  50. (despedirse)

Y esto es lo que se ve por pantalla cuando ejecuto mi programa, o sea, falla cuando llega el momento de usar las operaciones matemáticas.

Código:
Executing the program....
$clisp main.lisp
Bienvenidos a mi programa.


Mi programa calcula las 4 operaciones matemáticas.


El valor de X es: 10
El valor de Y es: 5


La suma de los 2 numeros es:
*** - EVAL: undefined function X