Sie sind auf Seite 1von 14

4.

- PROGRAMACIN EN AUTOLISP

http://cadlisprutinas.blogspot.mx/p/programar-autolisp.html
Esto es muy importante ya que todo lo que puedo hacer con las herramientas basicas
y con secuencias de pasos, lo podemos programar, pero cuidado a lo mejor AutoCAD
ya tiene la herramienta que necesitamos y por no explorar el programa e incursionar
en la personalizacion no lo hemos descubierto, y estariamos dedicandole tiempo a lo
que ya esta hecho.
Tambien si echamos mano de algun navegador WEB y buscamos "rutinas" "autolisp"
"visualisp" "desarrolladores autocad" encontraremos que existe una gran variedad de
empresas que desarrollan software para complementar las herramientas de AutoCAD,
principalmente creadas para procesos especificos en las diferentes ramas de la
ingenieria, sin mencionar todas las aplicaciones que AutoDesk inc. ya tiene a la venta y
que cubren una gran gama de posibilidades.
Pero no todos contamos con las posibilidades de adquirir estas aplicaciones. Pero
necesitamos algunas ayudas extras para realizar alguna actividad de manera rapida,
facil y sobre todo con la confianza de que si es algun calculo matematico este no este
erroneo.

Iniciemos primero por saber que es la programacion.
Wikipedia.-
Un lenguaje de programacin es un idioma artificial diseado para expresar
computaciones que pueden ser llevadas a cabo por mquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento fsico y lgico
de una mquina, para expresar algoritmos con precisin, o como modo de
comunicacin humana.[1] Est formado de un conjunto de smbolos y reglas
sintcticas y semnticas que definen su estructura y el significado de sus elementos y
expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se
mantiene el cdigo fuente de un programa informtico se le llama programacin.

Tambin la palabra programacin se define como el proceso de creacin de un
programa de computadora, mediante la aplicacin de procedimientos lgicos, a travs
de los siguientes pasos:
El desarrollo lgico del programa para resolver un problema en particular.
Escritura de la lgica del programa empleando un lenguaje de programacin
especfico (codificacin del programa)
Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de
mquina.
Prueba y depuracin del programa.
Desarrollo de la documentacin.
Para ello necesitamos un lenguaje: Autolisp.
Wikipedia.- AutoLISP es un lenguaje de programacin derivado del lenguaje Lisp. Es
utilizado para generar rutinas orientadas al uso especfico de AutoCAD y sus derivados.
Permite desarrollar programas y funciones para el manejo de entidades del tipo
grfico.

Aqui lo interesante. No necesitamos ningun programa extra, aparte del AutoCAD y un
block de notas.
Muy bien pero ahora que programo.
Facil, Cual es la tarea repetitiva que se vuelve tediosa todos los dias?
Espero sus respuestas, algo facil.

Iniciamos con el Primer Paso, tomado de un comentario que realize en el Foro
http://www.hispacad.com/

Publicado: Dom 07 Nov, 2010 19:10 Asunto:
Solo quiero comentar lo siguiente, las rutinas creadas por los propios usuarios hechas en Lisp o
Vlisp o en otros lenguajes, por lo regular son bastantes pequeas, pero algunas debido a las
necesidades especificas de los mismos crecen cada vez mas, esto nos lleva a la necesidad de
ordenarlas. Para ello recomiendo la lectura y anlisis de las dos siguientes paginas de la
Wikipedia.
Recuerda que es mejor iniciar con un orden y un proceso lgico bien definido, sin importar que tan
pequea o grande sea la rutina, yo recomiendo que siempre se haga el diagrama de flujo con
todas las anotaciones necesarias y que lo guardes en electronico en la misma carpeta donde esta
tu rutina. Cuando tengas que modificar para corregir o ampliar tu rutina no pasaras horas
ejecutando la misma paso a paso para recordar como la programaste.


http://es.wikipedia.org/wiki/Diagrama_de_flujo
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

Modulo 1

Inicio:
Objetivo: El participante tendr una visin general del lenguaje AutoLISP.

Objetivo del lenguaje AutoLISP.
Mtodo de evaluacin del lenguaje.
Definicin de los trminos "T" o "nil".
Como crear un archivo en editor de texto.
Como configurar AutoCAD.
Objetivo del lenguaje AutoLISP.
AutoLISP ha existido durante mucho tiempo 1950s
Este curso explora gran cantidad de cdigo AutoLISP para AutoCAD utilizados en las industrias
dependientes de la actualidad.
AutoLISP es poderoso, es gratis y ofrece a los usuarios la capacidad de crear los comandos de
AutoCAD en minutos, utilizando el lenguaje grfico nativo.

Objetivo :
* CALIDAD

* RAPIDEZ
Mtodo de evaluacin del lenguaje
AutoLisp se basa en el manejo de listas
LISt Processor
(Procesador de Listas)
Esta es una lista: Otra Lista:
(* 5 (- (+ 5 6) 2)) (vl-file-copy (strcat ruta1 "\\") (strcat ruta2 "\\" ))
Definicin de los trminos "T" o "nil"
Existen unos valores de smbolos de AutoLISP predefinidos. Son los siguientes:Nos vemos en el
siguiente modulo...
PAUSE. (\) Es una cadena de texto que consta de un nico carcter contrabarra.
Se utiliza para interrumpir un comando de AutoCAD despus de haberlo llamado mediante la
funcin de AutoLISP COMMAND. Esto permite al usuario introducir algn dato.
T. Es el smbolo de True, es decir, cierto o verdadero (valor 1 lgico). Se utiliza para establecer que
determinadas condiciones se cumplen.
Por ltimo el valor de nada, vaco o falso (0 lgico) se representa en AutoLISP por nil. Este valor
aparece siempre en minsculas y no es propiamente un smbolo, ya que no est permitido acceder
a el.
Como crear un archivo en editor de texto
Lo primero es crear un archivo de texto y luego cambiarle la extension de *.txt a *.lsp

Transcribe los datos de la imagen
Ya tenemos nuestro primer archivo de AutoLisp

Como configurar AutoCAD
Recomiendo crear un directorio especificamente para los archivos que contendran las
aplicaciones.

Pueden seguir estos pasos:
1.- Crear en C:\ la carpeta Aplicaciones_Lisp
C:\\Aplicaciones_Lisp
2.- Dentro de Aplicaciones_Lisp crear otra que se puede llamar Suma
C:\\Aplicaciones_Lisp\\Suma
3.- Ahi guardaremos un archivo con extension "lsp". con nombre "archivo.lsp".
que es el creamos anteriormente.
4.- Ejecutamos AutoCAD y tecleamos el comando "options".
5.- En al pestaa "Files" abrimos la opcion "Support File Search Path" luego damos clic
en el boton "Add.." (agregar) y luego en el boton "Browse..." (buscar) se inicia un
buscador y selecionamos la carpeta " Aplicaciones_Lisp y damos clic en "OK".
6.- Repetimos el paso 5 para agregar la carpeta Suma.
7.- Luego del paso 5 y 6 damos clic en el boton "Apply" (aplicar) y luego en el boton
"OK".




PASOS DETALLADOS PARA LA INTRODUCCION DE LIPS AL AUTOCAD:
http://www.emagdalena.es/2012/10/05/introduccion-a-la-programacion-en-autocad-primeros-pasos-con-
autolisp/
Objetivos del curso
Se pretende acercar el lenguaje de programacin AutoLISP a los usuarios de AutoCAD, para que puedan
crear utilidades y pequeas aplicaciones que les ahorren tiempo y clculos en sus trabajos.Otro de los
objetivos del curso es el de ver a AutoCAD no como un programa de dibujo, sino como una potente base de
datos grficos. Y descubrir como funciona esa base de datos.








AutoLISP es un lenguaje sencillo de aprender y a diferencia de otros lenguajes de programacin se
pueden crear programas interesantes y realmente tiles casi desde el primer momento.
Muchas veces, la mayora del tiempo empleado en crear una macro o programa se emplea en depurar el
cdigo (corregir errores). La planificacin y el anlisis previo de la macro es de suma importancia para
evitarlo. El primer paso para escribir una macro consiste en escribir en un papel con un lenguaje simple lo que
se desea que realice el programa, a esto se le denomina pseudocdigo. Un mtodo algo ms avanzado y eficaz
es utilizar diagramas de flujo.
Cuando ya empieces a programar en AutoLISP por ti solo, te ser muy til reunir todas las anotaciones sobre
proyectos de aplicaciones y macros en una libreta o bloc de notas.
Interfaces de programacin
AutoCAD dispone varios entornos de programacin, la seleccin del tipo de interfaz a emplear para crear una
aplicacin depender de las necesidades de la aplicacin y de la experiencia o conocimientos del
programador/es:
AutoLISP es una adaptacin del lenguaje de programacin CommonLISP para AutoCAD. Es
sencillo de aprender y al mismo tiempo potente. AutoCAD cuenta con un intrprete interno de LISP
que permite introducir cdigo desde la lnea de comandos o cargar programas desde archivos
externos. Puedes utilizar AutoLISP para automatizar tareas repetitivas y crear nuevos comandos de
AutoCAD
AutoLISP aade al LISP algunas funciones especialmente diseadas para la manipulacin de las
entidades de AutoCAD.
AutoLISP es un lenguaje evaluado. El cdigo se convierte a lenguaje mquina (ceros y unos) y se almacena
en la memoria temporal. No es tan lento como los lenguajes interpretados, ni tan rpido como los compilados:
en los lenguajes interpretados, se va traduciendo el programa a cdigo mquina (el idioma de los
ordenadores) a medida que se ejecuta
en los lenguajes compilados, el cdigo fuente (texto) del programa se traduce a cdigo mquina
generando un archivo ejecutable (.EXE) que es el que ejecutar el programa
Una de las caractersticas ms importantes de AutoLISP es la posibilidad de acceder a la base de datos de
los dibujos de AutoCAD. Donde podemos acceder a las capas, estilos de texto, sistemas de coordenadas
personales (SCP) as como a todas las entidades del dibujo. Esta informacin se puede modificar, extraer e
incluso aadir ms entidades al dibujo o informacin adicional.
AutoLISP no es estrictamente un lenguaje orientado al objeto, pero contiene bastantes caractersticas
de estos tipos de lenguajes debido a que puede interactuar con los objetos contenidos en los dibujos.
AutoLISP permite crear nuevos comandos para AutoCAD, que se ejecuten como cualquier otra orden. Es
posible incluso redefinir los comandos de AutoCAD para que funcionen de forma distinta, por ejemplo
podramos redefinir el comando POLIGONO para que dibuje polgonos estrellados en lugar de los
regulares.
AutoLISP se ha mejorado con la creacin de Visual LISP que ofrece un entorno de desarrollo integrado
dentro de AutoCAD.
Visual LISP incluye un compilador, un depurador y diversas utilidades para facilitar la programacin.
Adems aade nuevos comandos para permitir la interaccin con objetos que utilizan ActiveX. Otra de las
novedades que aporta Visual LISP son los reactores de objetos que permiten que AutoLISP responda a
eventos.
En los dos primeros captulos del curso se trabajar desde la ventana de comandos de AutoCAD. A partir del
tercer captulo ya crearemos nuestras macros en archivos de texto utilizando el entorno de Visual LISP
proporcionado por AutoCAD.
Existen dos inconvenientes al emplear AutoLISP desde la ventana de comandos de AutoCAD:
en primer lugar el reducido espacio con el que se cuenta en la ventana de comandos de AutoCAD y
la dificultad que supone el no tabular el cdigo, es decir escribir el cdigo todo seguido. Esto es
debido a que cada vez que se pulsa Intro, AutoCAD evala lo que se ha escrito
en segundo lugar, al terminar la sesin de trabajo en AutoCAD se perdern todos los datos
almacenados en la memoria temporal
Expresiones y procedimientos de evaluacin
Un programa en AutoLISP consiste en una serie de expresiones del tipo (funcin argumentos).
Cada expresin comienza con un parntesis de apertura al que sigue el nombre de una funcin de
AutoLISP (o una funcin creada por el usuario) y una serie de argumentos (a veces opcionales) que
dependen de la funcin indicada y van separados por al menos un espacio en blanco. Cada expresin
termina con un parntesis de cierre, esto es muy importante pues el nmero de parntesis de apertura debe
ser igual al de cierre.
Cada expresin de AutoLISP devuelve un valor.
Un argumento tambin puede ser una expresin, crendose as una estructura formada por expresiones
(listas) anidadas unas dentro de otras; de modo que la ms interior devolver su resultado como un argumento
a la lista exterior.
Cuando existen listas anidadas (unas dentro de otras), primero se evalan las ms interiores.
Los primeros ejemplos que vamos a ver son sencillos y cortitos, as que puedes teclearlos directamente en la
ventana de comandos de AutoCAD.
Ejemplo:
(+ 1 2) Ejecuta la funcin + que realiza la suma de los argumentos 1 y 2 devuelve el resultado 3.
(+ 31 22 -3) Ejecuta la funcin + que realiza la suma de los argumentos 31, 22 y -3 devuelve el resultado 50.
Prueba tambin:
(- 17 2)
(+ 2.5 22.8)
(- 0.25 22.5)
(+ 12 -2 31 -7.5)
Ejemplo:
(+ (* 2 3) 2) devuelve 8. Recuerda que primero evala la lista interior y devuelve su resultado a la exterior.
(+ 7 (/ 5.0 2) -3) devuelve 6.5.
Qu sucedera si al escribir la expresin (+ 1 (/ 5.0 2)) nos olvidsemos de escribir el ltimo parntesis? Haz
la prueba, veras que AutoCAD te indica que falta 1 parntesis de cierre.
Si el interprete de comandos de AutoCAD encuentra un parntesis de apertura, supone que todo lo que vaya a
continuacin hasta el parntesis de cierre es una expresin de AutoLISP. De modo que enva esa expresin al
interprete de AutoLISP para que la evale.
En el siguiente captulo veremos algunas de las operaciones matemticas que se pueden realizar con
AutoLISP.
Tipos de objetos y datos
Los elementos de las expresiones de AutoLISP pueden ser smbolos, valores concretos y tambin otras
expresiones. Se pueden distinguir los siguientes tipos de elementos:
Smbolos: Cualquier elemento que no sea un valor concreto. Por ejemplo una variable, una funcin
Enteros: Nmeros enteros comprendidos entre -32000 y 32000
Reales: Nmeros reales (180 es un nmero entero, pero 180.0 es un nmero real)
Cadenas de texto: Texto con una longitud mxima de 132 caracteres
Descriptores de archivo: Representan un archivo de texto ASCII abierto
Nombres de entidades de AutoCAD: Nombre en hexadecimal de una entidad del dibujo
Conjuntos designados por el usuario: Conjuntos de entidades de AutoCAD
Funciones de usuario: Funciones definidas por el usuario
Funciones de AutoLISP: Funciones o comandos predefinidos de AutoLISP
Ejemplo:
(+ 5 2) devuelve 7.
(+ 5 2.0) devuelve 7.0.
En el primer caso todos los argumentos son nmeros enteros, y el resultado de su suma es un nmero
entero. En el segundo caso, tenemos un nmero real, as que el resultado es un nmero real. Para que
comprendas la importancia de esta distincin, realiza el siguiente ejemplo:
(/ 5 2)
(/ 5 2.0)
Una de las mayores virtudes de AutoLISP es que pueden ejecutarse expresiones en medio de un
comando de AutoCAD.
Ejemplo:
Ejecuta el comando LINEA e indica el primer punto, activa el forzado ortogonal (F8) y teclea
(+ 11 25) Esto devuelve el resultado de la suma al comando que se estaba ejecutando. Por eso dibuja
una lnea de 36 mm de longitud en la direccin que indicaba el cursor.
Prueba ahora indicando el radio de la circunferencia (- 70 25) al utilizar el comando llamado
CIRCULO (mal llamado, pues debera ser circunferencia).
Podemos emplear tambin la constante PI = 3.14159 para realizar clculos. Por ejemplo, ejecuta
de nuevo el comando CIRCULO y cuando pregunte el radio de la circunferencia, teclea (/ 6 (* 2
PI)). Obtendremos una circunferencia de permetro 6.
Notacin empleada
Para describir las funciones de AutoLISP que se expliquen a lo largo del curso se seguir la siguiente
notacin:
(FUNCIN Argumentos_necesarios [Argumentos_opcionales] )
Los nombres de las funciones de AutoLISP y el cdigo a teclear se mostrarn en negrita.
Convenciones recomendadas
En este apartado se indicarn una serie de convenciones recomendables a la hora de programar. Alguna de
ellas puede que an no las entiendas, pero no te preocupes porque las iremos recordando a medida que
avancemos en el curso.
para los comentarios incluidos en el cdigo, se recomienda utilizar el siguiente mtodo:
o ;;; Antes del cdigo de las funciones, explicando su funcionamiento
o ;; En medio del cdigo del programa
o ; Para explicar una lnea de cdigo. A diferencia de las anteriores, esta no se inserta en la
columna 1, se insertar al terminar el cdigo de la lnea que comenta
es muy recomendable utilizar un formato tabulado para el cdigo
evitar el uso de variables globales innecesarias
utilizar los comandos de AutoCAD y sus opciones en Ingls y precedidos por ._
no abusar de la funcin SETQ
no utilizar T, MIN, MAX, LAST como smbolos (nombres de variables y funciones)
recuperar el valor inicial de las variables de sistema de AutoCAD que han sido modificadas
aadir unas lneas al final del programa para indicar el nombre del nuevo comando, autor, etc.
no introducir demasiado cdigo en la funcin principal
incluir una funcin de tratamiento de errores
evitar que el usuario pueda introducir datos errneos
en general es recomendable que, tras ejecutar el nuevo comando, si se ejecuta el comando
DESHACER (H) se deshagan todos los cambios realizados por el comando
Convenciones utilizadas en el curso
El cdigo en AutoLISP se mostrar en negrita y con los siguientes colores:
o los parntesis de apertura y cierre se mostrarn en rojo ( )
o las funciones de AutoLISP se mostrarn en azul setq
o los nmeros se mostrarn en verde 125.6 12
o los textos se mostrarn en rosa /nDesigne un punto:
o los comentarios se mostrarn en prpura ;Esto es un comentario
o las funciones de usuario se mostrarn en maysculas (GAR 90.0)


2.- Las variables en AutoLISP
Qu es una variable?
No sabes qu es una variable? Recuerdas cuando en la escuela te decan Tengo 3 melones, le doy uno a
Juan y despus de comprar otros 2, me com uno porque tena hambre. Pues los melones son una variable.
Nosotros hacamos: 1 tengo 3 melones x=3 (x es nuestra variable). Luego le doy uno a Juan x = 3-1=2.
Compro otros dos x = 2+2=4 y me com uno x=4-1. As que x=3. x no es ms que un valor que vara (o
puede hacerlo) a lo largo del tiempo. Pero podamos haber llamado a la variable yo z, y por qu no
melones?
(SETQ Variable1 Valor1 [Variable2 Valor2 ... ] )
En el artculo anterior logramos dibujar una circunferencia de 6 mm de indicando el radio de la circunferencia
a travs de la expresin en AutoLISP (/ 6 (* 2 PI)). Pero que sucede si queremos utilizar el valor obtenido por
(/ 6 (* 2 PI)) para realizar otra operacin, tendremos que volver a teclear la expresin anterior.
Existe alguna opcin para almacenar en memoria los resultados de una operacin, tal como hace una
calculadora? Desde luego que si, AutoLISP permite almacenar miles de datos en variables, que se almacenan
en la memoria del ordenador.
La funcin de AutoLISP empleada para definir variables y asignarles un valor es SETQ y permite definir
varias variables en una misma expresin. La funcin SETQ devuelve el valor de la ltima variable definida.
Con respecto a los nombres utilizados para designar a los smbolos creados por el usuario (variables y
funciones):
no son sensibles a las maysculas. Es lo mismo bloque, BLOQUE y Bloque
no pueden contener espacios en blanco, ni los caracteres ( ) . ;
pueden contener nmeros, pero no estar formados nicamente por ellos
no utilizaremos nombres de variables que coincidan con los nombres de las funciones de AutoLISP
ni de las variables de sistema de AutoCAD
no existe lmite en cuanto al nmero de caracteres, pero es recomendable emplear nombre cortos y
descriptivos.
no es necesario declarar previamente las variables, como sucede en otros lenguajes de programacin.
En AutoLISP una misma variable puede contener primero un nmero entero, luego uno real, despus
una cadena de texto, etc.
Ejemplo:
(setq a 3) Esta expresin crea la variable a y le asigna el valor 3. Devuelve el valor de la variable a.
Que valor crees que devolver (setq b (+ 1 3) melones 23.0)? Fjate que se han definido dos variables b y
melones de valor 4 y 23.0 respectivamente. Como melones ha sido la ltima variable evaluada, la expresin
anterior devuelve su valor.
Si el interprete de comandos de AutoCAD recibe una palabra precedida por el signo de exclamacin !,
comprobar si ese termino ha sido empleado como un smbolo (nombre de variable o una funcin de usuario)
de AutoLISP. En cuyo caso devolver su valor y en caso contrario devolver nil, que es lo mismo que nada o
vaco. Por ejemplo: !a devuelve 3.
Prueba tambin las siguientes expresiones y comprueba los valores asignados a las variables:
(setq c (+ b 3)) Los valores de las variables tambin pueden utilizarse para realizar operaciones y asignar el
resultado de dichas operaciones a una variable.
(setq d b) Se puede definir una variable igual al valor de otra variable.
(setq a 3.5) Se puede modificar el valor asociado a una variable, por eso se llama variable.
(setq b 2.0) Qu sucede con el valor de la variable d? Tomar el nuevo valor asignado a la variable b o
seguir con el anterior? Al definir la variable d se le asigno el valor que tena la variable b en ese momento,
no se estableci ninguna relacin entre ambas variables.
Tambin se puede asignar valores no numricos a las variables. Por ejemplo, una cadena de texto. Las
cadenas de texto son secuencias de uno o ms caracteres encerrados entre comillas. Dentro de una cadena de
texto pueden insertarse una serie de carcteres de control:
\\ representa al smbolo \
\ representa al smbolo
\n representa un cambio de lnea (retorno del carro)
\t representa una tabulacin
(setq a \tBienvenido al Curso Introduccin a la programacin en AutoCAD )
En este caso adems, hay que notar que en la variable a primero se almacenaba un valor entero, luego uno
real y ahora una cadena de texto. La posibilidad de reutilizar variables con distintos tipos de datos puede ser
muy til, pues dota al programador de una gran flexibilidad al escribir el cdigo. Pero tambin supone que se
requiera ms cuidado para no pasar a una funcin una variable con un tipo de dato incorrecto. Por ejemplo: (+
a b) ya que ahora la variable a contiene una cadena de texto en lugar de un nmero.
Existen una serie de smbolos predefinidos:
T Representa al valor lgico Cierto o Verdadero.
nil Representa al valor lgico Falso.
(setq b T)
(setq c nil)
En este caso, a la variable a se le ha asignado una cadena de texto, a la variable b el valor Cierto o Verdadero
y a la variable c el valor Vaco o Falso.
Para almacenar el radio de la circunferencia de permetro 6 unidades en una variable podemos teclear:
(setq rad (/ 6 (* 2 PI)))
Podramos crear una circunferencia e indicar !rad a AutoCAD cuando nos pregunte por el radio deseado.
Ejemplo: Por qu las siguientes expresiones estn mal?
(setq 157 25)
(setq rad 5 Rad 4)
(setq b Curso de AutoLISP)
Por ltimo veamos porque no debemos emplear para los nombres de las variables los nombres de las
funciones de AutoLISP.
(setq + 23) En este caso asignamos a la variable + el valor 23.
Prueba (+ 5 2.5) Ahora + no representa a la funcin suma, sino a una variable de valor 23. De modo que el
primer termino de la expresin anterior ahora no es una funcin, por lo que da un error. Para recuperar el
modo habitual de trabajo de la funcin + es necesario cerrar la sesin actual de AutoCAD e iniciar una nueva
sesin.
3.- Operaciones matemticas bsicas
En los artculos anteriores ya vimos algn ejemplo de como funcionan las funciones matemticas bsicas
(suma, resta, divisin y multiplicacin). Ahora explicaremos su funcionamiento con mayor profundidad.
(+ [nmero1 nmero2 ... ] )
Suma los nmeros indicados como argumentos y devuelve el resultado de dicha suma. Si todos los nmeros
de la lista son enteros, el resultado tambin ser entero.
(+ 3 9) devuelve 12
(+ 3.0 9) devuelve 12.0
(setq a (+ 3 9 4)) devuelve 16 y lo almacena en la variable a
(+ 3.5 -1) devuelve 2.5
Prueba ahora la siguiente expresin:
(setq a (+ a 2.5)) devuelve 18.5
Hemos asignado a la variable a el resultado de una operacin en la que usamos el anterior valor asignado a la
variable a como uno de los argumentos de la operacin.
Si le pasamos a la funcin + un nico nmero como argumento, nos devuelve ese nmero.
(+ 12.5) devuelve 12.5
(+ -7.0) devuelve -7.0
Si ejecutamos la funcin suma sin argumentos, devuelve 0.
(+ ) devuelve 0
La expresin (+ .5 2) nos dar un error. Los nmeros reales siempre deben comenzar por un nmero entero,
incluso si es cero, seguido de la parte decimal.
(+ 0.5 2) devuelve 2.5
(+ 3 -0.6) devuelve 2.4
(- [nmero1 nmero2 ... ] )
Resta al primer nmero todos los siguientes nmeros pasados como argumentos. Si todos los nmeros de la
lista son enteros, el resultado tambin ser entero.
(- 11.0 5) devuelve 6.0
(- 11 5) devuelve 6
(setq a (- 12 5 4)) devuelve 3 y lo almacena en la variable a
(- 3.5 -1) devuelve -4.5
(setq a (- a 2.5)) devuelve 0.5 y lo almacena en la variable a.
Si le pasamos a la funcin - un nico nmero como argumento, nos devuelve ese nmero cambiado de signo.
(- 12.5) devuelve -12.5
(- -7.0) devuelve 7.0
En la expresin anterior, el primer signo - representa a la funcin resta, mientras que el segundo representa
el signo de un nmero negativo.
Si ejecutamos la funcin resta sin argumentos, devuelve 0.
(- ) devuelve 0
(* [nmero1 nmero2 ... ] )
Multiplica los nmeros indicados como argumentos y devuelve el resultado de dicho producto. Si todos los
nmeros de la lista son enteros, el resultado tambin ser entero.
(* 3 9) devuelve 27
(* 3.0 9) devuelve 27.0
(setq a (* 3 9 4)) devuelve 108 y lo almacena en la variable a
(* 3.5 -1) devuelve -3.5
Prueba ahora la siguiente expresin:
(setq a (* a 2.5)) devuelve 270.0
Si le pasamos a la funcin * un nico nmero como argumento, nos devuelve ese nmero.
(* 12.5) devuelve 12.5
(* -7.0) devuelve -7.0
Si ejecutamos la funcin * sin argumentos, devuelve 0.
(* ) devuelve 0
(/ [nmero1 nmero2 ... ] )
Divide el primer nmero entre el siguiente y devuelve el resultado. Si se pasan ms de dos nmeros como
argumentos, el primer nmero se dividir entre el producto de los restantes nmeros.
(/ 45 5 3) devuelve 3
(/ 11 5.5) devuelve 2.0
En esta funcin es muy importante recordar que si todos los nmeros de la lista son enteros, el resultado
tambin ser entero.
(/ 7 2) devuelve 3
(/ 7 2.0) devuelve 3.5
(setq a (/ 12.5 4 2)) devuelve 1.5625 y lo almacena en la variable a
(/ 3.5 -1) devuelve -3.5
(setq a (/ a 0.5)) devuelve 3.125 y lo almacena en la variable a
Si le pasamos a la funcin / un nico nmero como argumento, nos devuelve ese nmero.
(/ 12.5) devuelve 12.5
(/ -7.0) devuelve -7.0
Si ejecutamos la funcin / sin argumentos, devuelve 0.
(/ ) devuelve 0
(1+ <nmero> )
Esta funcin incrementa en una unidad el nmero indicado como argumento.
(1+ 5) devuelve 6. Ojo entre 1 y + no debe haber ningn espacio, ya que el nombre de la funcin es 1+.
(1+ 2.5) devuelve 3.5
(1+ 0) devuelve 1
(1+ -7) devuelve -6
Una aplicacin bastante habitual de esta funcin es la de incrementar ndices o contadores:
(setq i 1)
(setq i (1+ i)) devuelve 2
(1- <nmero> )
Esta funcin reduce en una unidad el nmero indicado.
(1- 5) devuelve 4. Ojo entre 1 y - no debe haber ningn espacio, ya que el nombre de la funcin es 1-.
(1- 2.5) devuelve 1.5
(1- 0) devuelve -1
(1- -1) devuelve -2

Das könnte Ihnen auch gefallen