domingo, 18 de enero de 2015

Símbolos autoevaluados, símbolos sin evaluar, evaluación de un símbolo

Decíamos ayer (eso lo tomo prestado de fray Luis de León) que no escribierais una lista en la línea de comandos de AutoCAD, como hicimos con el entero y repetido con la cadena, que no funcionaría. ¿Por qué? Pues ahí va la explicación:

Dejadme aclarar primero que esta afirmación no es totalmente cierta. A veces funciona, sí, pero solo si la lista es una función válida de AutoLISP; con cualquier otra lista el intento fracasará. Cuando el evaluador de AutoLISP encuentra una lista examina su primer símbolo, si se trata de una función conocida la ejecuta, en caso contrario devuelve error. Es decir, para AutoLISP, en principio, una lista es una función y no un dato. Quedémonos de momento con la idea de que a menos que se trate de una lista sin evaluar, su primer término debe ser un nombre de función válido.

martes, 6 de enero de 2015

Números, cadenas y listas

Ya hemos dicho que AutoLISP admite como datos tanto números enteros (INT), como números en coma flotante con parte fraccionaria (REAL). Asimismo, admite, entre otros, cadenas (STR) y listas (LIST).

Números enteros y números en coma flotante

Las reglas de escritura que rigen para los números son bastante sencillas: AutoLISP asumirá como un número cualquier secuencia de dígitos conteniendo, o no, el punto decimal “.” o precedido, o no, por los signos de suma o resta “+ o –“ o con un marcador de exponencial “e”.

Se debe tener en cuenta que no se pueden utilizar números enteros cuando se necesite que el resultado sea un número real, esto debido a que AutoLISP truncará la parte decimal del resultado en consecuencia con los datos introducidos. Por ejemplo, para AutoLISP el resultado de dividir el entero 8 entre el entero 3 es 2. Pero basta con que uno de los dos números sea un real para que el resultado de la división sea correcto y se muestre en el resultado la parte fraccionaria, en este caso el 2.66667. Para escribir un entero como número real basta añadirle el punto decimal y un cero a la derecha.