PROGRAMACIÓN AUTOLISP

Tamaño: px
Comenzar la demostración a partir de la página:

Download "PROGRAMACIÓN AUTOLISP"

Transcripción

1 Departamento de Ingeniería Geográfica y Técnicas de Expresión Gráfica PROGRAMACIÓN AUTOLISP (PERSONALIZACIÓN DE AUTOCAD P Pa a/2 cenp a/2 ceng T a/3 a a/2 a/3 cen T a/2 a/12 a a/12 a/12 Sistema de rectas paralelas Figura 1: Definición geométrica P Figura 2: Mosaico Pa Formas homotéticas cen a/3 a/3 rad MILAGROS CANGA VILLEGAS JOSÉ ANDRÉS DÍAZ SEVERIANO

2 No basta el recuerdo Cuando aún queda tiempo (Luis Cernuda El hoy es malo, pero el mañana... es mío (Antonio Machado

3 i

4 INDICE: 1. PRESENTACIÓN GENERAL DE AUTOLISP 1 2. ELEMENTOS DEL LENGUAJE Y TIPOS DE DATOS Números Cadenas Listas Símbolos y variables Conjuntos de selección Nombres de entidad Descriptores de archivo Subrutinas 4 3. EXPRESIONES DE AUTOLISP 5 4. RECOMENDACIONES INICIALES PARA LA CODIFICACIÓN DE UNA RUTINA LISP 6 5. FUNCIONES AUTOLISP FUNCIONES ARITMÉTICAS FUNCIONES DE ASIGNACIÓN FUNCIONES PARA MANEJAR CADENAS DE TEXTO FUNCIONES PARA GESTIÓN DE LISTAS CREACIÓN DE LISTAS EXTRACCIÓN DE ELEMENTOS DE UNA LISTA MANIPULACIÓN DE LISTAS FUNCIONES MONOLÍNEA FUNCIONES DE CONVERSIÓN Y TRANSFORMACIÓN FUNCIONES DE RELACIÓN FUNCIONES DE CONDICIÓN FUNCIONES PARA GESTIÓN DE CICLOS FUNCIÓN PARA CREAR FUNCIONES DE USUARIO FUNCIONES GRÁFICAS FUNCIONES DE ENTRADA INTERACTIVA FUNCIONES PARA GESTIÓN DE FICHEROS FUNCIONES DE LECTURA Y ESCRITURA ESCRITURA LECTURA FUNCIONES DE ORDENACIÓN FUNCIONES DE CONTROL DE PANTALLA OTRAS FUNCIONES DE UTILIDAD FUNCIONES AVANZADAS DE PROGRAMACIÓN AUTOLISP OBJETIVOS Y ENTORNO DE LA PROGRAMACIÓN AutoLISP CONCEPTOS BÁSICOS FORMA DE TRABAJO Y FUNCIONES UTILIZADAS DESCRIPCIÓN DE LAS FUNCIONES CÓDIGOS Y MENSAJES DE ERROR DE AUTOLISP ÍNDICE DE FUNCIONES BIBLIOGRAFÍA BÁSICA 63 ii

5 1. PRESENTACIÓN GENERAL DE AUTOLISP AutoLISP es una adaptación del lenguaje de programación LISP y forma parte integral del paquete AutoCAD. Autolisp es un pequeño subconjunto del CommonLISP, y por ello se ajusta muy estrechamente a la misma sintaxis y convenciones, pero consta de muchas funciones específicas de AutoCAD. AutoLISP es la más potente herramienta para optimizar la ejecución de AutoCAD. Le habilita para «automatizar» AutoCAD incluso más allá de lo que puede llevar a cabo usando macros. Las rutinas AutoLISP tienen aplicaciones como: - La creación de nuevas y únicas órdenes AutoCAD. - La inserción de funciones especiales para dibujar y para calcular. - Análisis detallados de gráficos y de dibujos dentro del editor de dibujos de AutoCAD. Con AutoLISP, se pueden escribir programas y generar funciones de macros con un lenguaje potente y de alto nivel, apropiado para las aplicaciones de gráficos. AutoLISP es flexible y fácil de aprender y utilizar para los no-programadores, quienes al aprender AutoLISP sólo necesitan conceptos básicos de programación, tales como: - Almacenar datos durante el proceso con variables de memoria; - Procesar datos en una serie de pasos secuenciales; - Organizar etapas dentro de una rutina definiendo nuevas funciones; - Elegir entre pasos alternativos (ramificar - Repetir una secuencia de pasos hasta que se encuentre una condición específica (bucles. - Específicamente: Acceder a los datos de la base de datos geométrica El código de AutoLISP no se compila 1, se puede teclear el código en la línea de comandos y ver los resultados inmediatamente haciéndose más sencilla la introducción a este lenguaje para los no iniciados. En un segundo nivel de aprendizaje resulta mucho más fácil realizar pruebas y depurar cuando este código se carga desde un archivo, en lugar de volverlo a escribir cada vez que se realiza alguna modificación. El código de AutoLISP se almacena en archivos de texto ASCII con la extensión *. lsp. La sintaxis de las expresiones de AutoLISP escritas en los archivos es básicamente la misma que se utiliza para escribirlas en la solicitud de comando. 1 Se trabaja a este nivel docente sin compilar. Se recomienda consultar los manuales de VisualLISP de la versión 2000 de AutoCad o superior. 1

6 2. ELEMENTOS DEL LENGUAJE Y TIPOS DE DATOS El evaluador de AutoLISP procesa las expresiones de acuerdo con el orden y el tipo de datos del código. Este código se caracteriza especialmente porque aparece entre paréntesis. Para poder utilizar plenamente AutoLISP, es necesario entender las diferencias entre los distintos tipos de datos y el modo en que deben utilizarse. Los elementos del lenguaje y sus convenciones son las siguientes: 2.1. Números Números enteros Los enteros son números sin coma decimal. Los enteros de AutoLISP son números de 32 bits con signo cuyos valores están comprendidos entre (2 31 y Aunque AutoLISP utiliza internamente valores de 32 bits, los que se transmiten de AutoLISP a AutoCAD y viceversa están limitados a 16 bits. Por tanto, no pueden transmitirse a AutoCAD valores superiores a (2 15 ni valores inferiores a Los enteros que se utilizan de forma explícita en expresiones de AutoLISP se conocen como constantes. Números como 2, -56, y son enteros válidos de AutoLISP. Números reales Los números reales son aquellos que contienen la coma decimal. Los comprendidos entre -1 y 1 deben empezar por cero. (No se admiten formatos como.2 ó 2. Los números reales se almacenan en formato de coma flotante de doble precisión, lo cual proporciona una precisión mínima de 14 dígitos significativos, aunque el área de comandos de AutoCAD muestra sólo 6. Los números reales pueden expresarse en notación científica, que consta de una e o E opcional seguida por el exponente del número (por ejemplo, es lo mismo que 4.1e-6. Los números reales que se utilizan de forma explícita en expresiones de AutoLISP se conocen como constantes. Números como 3,1, 0,23, -56,123, y son números reales válidos de AutoLISP Cadenas Las cadenas son grupos de caracteres delimitados por comillas. Dentro de las cadenas que aparecen entre comillas: la contrabarra (\ permite incluir caracteres de control (o códigos de escape: \\ para el carácter \ \e para el carácter ESC \n para el salto de línea \r para RETURN \t para tabulador Las cadenas individuales tienen una limitación de 132 caracteres. Las cadenas entre comillas que se utilizan de forma explícita en expresiones de AutoLISP se conocen como cadenas de texto o constantes de cadena. Ejemplos de cadenas válidas son "cadena 1" y "\nprimer punto: ". 2

7 2.3. Listas Las listas de AutoLISP son grupos de valores relacionados, separados por espacios en blanco (uno o varios se interpretan como uno sólo e incluidos entre paréntesis. Las listas proporcionan un método eficaz para almacenar numerosos valores relacionados. AutoCAD expresa los puntos 3D como una lista de tres números reales. Ejemplos de listas son: ( , ("éste" "ése" "aquél" y (1 "UNO" Símbolos y variables AutoLISP utiliza símbolos para almacenar los datos. En los nombres de símbolos no se distingue entre mayúsculas y minúsculas, pudiendo emplearse cualquier secuencia de caracteres alfanuméricos, siempre que no contenga a alguno de los siguientes: - Paréntesis ( Reservado para lista y expresiones - Punto. Punto decimal - Apostrofo ' Abreviatura de la Función QUOTE - Comillas " Reservado a las cadenas de caracteres. - Punto y coma; Para comenzar una línea de comentarios. Un nombre de símbolo no puede estar compuesto sólo por caracteres numéricos. Las aplicaciones de AutoLISP hacen uso de símbolos o valores constantes, como cadenas, números reales o enteros, y variables, empleadas para almacenar datos generados durante las ejecución de los programas. AutoCAD proporciona tres variables predefinidas que pueden emplearse en las aplicaciones de AutoLISP: - PAUSE: está definida como una cadena compuesta que consta sólo de una contrabarra (\. Esta variable se emplea con la función command para que el programa espere a que el usuario escriba datos. - PI: está definida como la constante p (pi. Su valor aproximado es T: está definida como la constante T. Se emplea como valor distinto de nil. - Nil: símbolo que en Lisp significa nada o vacío. Es posible cambiar el valor de estas variables con la función setq. Sin embargo, otras aplicaciones podrían considerar que sus valores son fiables; por tanto, se recomienda no modificar estas variables. A estas tres variables, junto con los nombres de funciones del lenguaje y los nombres de funciones definidas por el usuario, las denominaremos palabras reservadas del lenguaje Los valores asignados a las variables pueden usarse como respuesta a las solicitudes de comando de AutoCAD. Esto proporciona una forma de almacenar y reutilizar nombres o números complejos. Si se desea utilizar el valor de una variable como respuesta a una solicitud de AutoCAD, basta escribir el nombre de la variable precedido por un signo de admiración (! Conjuntos de selección Los conjuntos de selección son grupos compuestos por uno o varios objetos (entidades. Las rutinas de AutoLISP permiten añadir o suprimir de forma interactiva objetos de los conjuntos de selección. 3

8 2.6. Nombres de entidad Un nombre de entidad es un identificador numérico asignado a los objetos de un dibujo. En realidad, se trata de un puntero a un archivo mantenido por AutoCAD, en el que AutoLISP puede encontrar el registro de la base de datos de objetos A este identificador pueden hacer referencia las funciones de AutoLISP con el fin de permitir la selección de objetos para un posterior empleo de maneras varias Descriptores de archivo Los descriptores de archivo son identificadores alfanuméricos asignados a archivos abiertos por AutoLISP. Cuando sea necesario que una función de AutoLISP lea o escriba en un archivo, debe hacerse referencia a su identificador Subrutinas Es un símbolo con el nombre de una función predefinida por Autolisp. Pueden ser: - Internas, cuando pertenecen al conjunto base de Autolisp, incluidas las definidas por el usuario. - Externas, las que se han definido mediante otras aplicaciones ligadas a Autocad. 4

9 3. EXPRESIONES DE AUTOLISP Las instrucciones contenidas en una rutina LISP se ejecutan secuencialmente; trabajan unas sobre lo realizado por otras, los resultados de las instrucciones anteriores son usadas para llevar a cabo las instrucciones subsiguientes. Todas las expresiones de AutoLISP tienen, básicamente, el siguiente formato: (función argumentos Cada expresión comienza con un paréntesis abierto y se compone de un nombre de función seguido de una lista ordenada de argumentos para dicha función, cada uno de los cuales puede constituir una expresión por sí mismo. La expresión termina con un paréntesis cerrado. Cada expresión devuelve un valor que puede ser empleado por una expresión circundante (Anidacion de expresiones; en caso de que no haya ninguna, AutoLISP devuelve el valor a la línea de comando de AutoCAD. Por ejemplo, el siguiente código incluye tres funciones. (fun1 (fun2 argumentos(fun3 argumentos La primera función, fun1, tiene dos argumentos, mientras que las otras dos, fun2 y fun3, tienen un argumento cada una. Las funciones fun2 y fun3 están delimitadas por la función fun1, por lo que sus valores pasan a fun1 como argumentos. La función fun1 evalúa estos dos argumentos y devuelve el valor a la línea de comando. Si se escribe una expresión de AutoLISP en la solicitud de comando de AutoCAD, AutoLISP la evalúa y muestra el resultado, tras lo cual vuelve a aparecer la solicitud de comando. El siguiente ejemplo ilustra el uso de la función *(multiplicación, que acepta uno o más números reales como argumentos. Comando: (* Dado que este ejemplo no tiene expresión circundante, devuelve el resultado a la línea de comando. Las expresiones anidadas en otras expresiones devuelven sus resultados a la expresión circundante. El siguiente ejemplo utiliza el resultado de la función + (suma como uno de los argumentos de la función * (multiplicación. Comando: (* 2 ( El formato completo que estudiaremos para cada función Autolisp es el siguiente: (función argumentos...[ Argumentos opcionales... ] Los puntos suspensivos significan que el último argumento puede repetirse un número cualquiera de veces. Cuando AutoCAD recibe algún código de AutoLISP, lo transmite al intérprete de AutoLISP, cuyo núcleo contiene el evaluador. El evaluador lee una línea de código, la evalúa y devuelve el resultado. El código puede leerse de un archivo o como datos tecleados por el usuario desde la línea de comando, pero en cualquier caso deberá tener el formato de una expresión de AutoLISP. Al respecto, hay que decir que: - Una expresión puede ser más larga que una línea. - Varios espacios en blanco se interpretan como uno sólo. - Una línea que se inició con ; no es interpretada. Se trata de una línea de comentarios. - Se puede responder a las solicitudes de comando de AutoCAD con expresiones de AutoLISP. 5

10 4. RECOMENDACIONES INICIALES PARA LA CODIFICACIÓN DE UNA RUTINA LISP - Conocer la sintaxis y las reglas del lenguaje. - Saber de qué funciones dispone el lenguaje. - Describir exactamente cuál es el objeto de la rutina LISP. Los programadores se refieren a esta versión de una rutina como pseudocódigo. - Recorrer el proceso manualmente desde el teclado, si es posible. Este procedimiento de verificación a priori, ayudará a reconocer rápidamente los problemas en el proceso de desarrollo. - Tomar notas de cada paso. - Anotar qué cálculos tuvieron lugar y en qué figuras se basaron. - Escribir el código lo más ordenado posible, distinguiendo entre: - Función principal (que será la que se invoca al utilizar el programa. Suele incluir la definición de un nuevo comando Autocad. - Funciones intermedias, según la estructura que el programar decida. - Utilizar nombres de funciones y variables fácilmente identificables, limitando el empleo de estas últimas a aquellas que sean estrictamente necesarias. - Escribir líneas de comentarios. - Utilizar funciones creadas en otros programas. Hacer Bibliotecas de funciones de usuario. - Sangrar el texto del código para facilitar la interpretación posterior. 6

11 5. FUNCIONES AUTOLISP Las funciones proporcionadas por el lenguaje se pueden clasificar de la siguiente manera: FUNCIONES BÁSICAS FUNCIONES ARITMÉTICAS,... 8 FUNCIONES DE ASIGNACIÓN, FUNCIONES PARA MANEJAR CADENAS DE TEXTO, FUNCIONES PARA GESTIÓN DE LISTAS, FUNCIONES MONOLÍNEA, FUNCIONES DE CONVERSIÓN Y TRANSFORMACIÓN, FUNCIONES DE RELACIÓN, FUNCIONES DE CONDICIÓN, FUNCIONES PARA GESTIÓN DE CICLOS, FUNCIÓN PARA CREAR FUNCIONES DE USUARIO, FUNCIONES GRÁFICAS, FUNCIONES DE ENTRADA INTERACTIVA, FUNCIONES PARA GESTIÓN DE FICHEROS, FUNCIONES DE LECTURA Y ESCRITURA, FUNCIONES DE ORDENACIÓN, FUNCIONES DE CONTROL DE PANTALLA, OTRAS FUNCIONES DE UTILIDAD, FUNCIONES AVANZADAS 7

12 5.1. FUNCIONES ARITMÉTICAS + Suma números Sintaxis: (+ <n1> <n2>... Valor retornado: Suma de todos los argumentos numéricos. Ningún argumento devuelve Nil (+ 1 2 devuelve 3 ( devuelve 10.5 ( devuelve Sustrae n números Sintaxis: (- <n1> <n2>... Valor retornado: La diferencia entre el primer argumento y la suma de los restantes argumentos. Ningún argumento devuelve Nil ( devuelve 10 ( devuelve 10.0 ( devuelve 7.5 (- 8 devuelve -8 * Multiplica números Sintaxis: (* <n1> <n2>... Valor retornado: Producto de todos los argumentos numéricos. Ningún argumento devuelve Nil (* 2 3 devuelve 6 (* devuelve 6.0 (* devuelve 24.0 (* devuelve (* 3 devuelve 3 / Divide números Sintaxis: (/ <n1> <n2>... Valor retornado: El cociente del primer argumento dividido por el producto de los demás argumentos. (/ devuelve 50 (/ devuelve 50.0 (/ devuelve 2 (/ devuelve 2.5 (/ 4 devuelve 4 (/ 1 2 devuelve 0 (/ 4 (/ 1 2 devuelve ERROR (/ 4 (/ devuelve 8.0 Devuelve el operador NOT binario (complemento de -1 del argumento Sintaxis: ( <entero> Valor retornado = -1 - <entero>. (~ 3 devuelve -4 (~ 100 devuelve -101 (~ -4 devuelve 3 8

13 1+ Incrementa un número en uno Sintaxis: (1+ <n> Valor retornado = 1+n (entero o real según n sea entero o real. (1+ 5 devuelve 6 ( devuelve Disminuye en uno un número. Sintaxis: (1- <n> Valor retornado = n-1 (entero o real según n sea entero o real. (1-5 devuelve 4 ( devuelve ABS Convierte un número a su valor absoluto Sintaxis: (ABS <n> Valor retornado = el valor absoluto de n. (abs 100 devuelve 100 (abs -100 devuelve 100 (abs devuelve ATAN Calcula el arcotangente Sintaxis: (ATAN <n1> [n2], donde los argumentos n1 y n2 se convierten en números reales antes de calcular el valor del arco tangente. Valor retornado = Arco tangente de n1/n2. Valor en radianes entre -π/2 y π/2. (atan 0.5 devuelve (atan 1.0 devuelve (atan -1.0 devuelve (atan devuelve (atan devuelve (atan devuelve (atan 1 2 devuelve (atan (/ 1 2 devuelve 0.0 COS Calcula el coseno de un ángulo expresado en radianes Sintaxis: (COS <ang> Valor retornado = El coseno de ang (cos 0.0 devuelve 1.0 (cos pi devuelve -1.0 (cos (/ pi 3 devuelve 0.5 SIN Calcula el seno de un ángulo expresado en radianes Sintaxis: (SIN <ang> Valor retornado = El seno de ang (sin 1.0 devuelve (sin 0.0 devuelve 0.0 (sin (/ pi 6 devuelve 0.5 9

14 EXP Calcula el antilogaritmo neperiano de un numero Sintaxis:(EXP <n> Valor retornado: número real igual a e n (exp 1.0 devuelve (exp 2.2 devuelve (exp -0.4 devuelve EXPT Calcula el resultado de elevar un número a una potencia Sintaxis:(EXPT <base> <potencia> Valor retornado: número real o entero (expt 2 4 devuelve 16 (expt devuelve 9.0 GCD Calcula el máximo común denominador de dos enteros Sintaxis: (GCD <n1> <n2> Valor retornado = El valor del máximo común denominador. (gcd devuelve 3 (gcd devuelve 4 LOG Calcula el logaritmo neperiano de un número real Sintaxis: (LOG <n> Valor retornado = Un número real. (log 4.5 devuelve (log 1.22 devuelve (log devuelve 1.0 MAX Extrae el mayor valor de una serie de números Sintaxis: (MAX <n1> <n2> <n3>.. Valor retornado = El mayor valor encontrado. (max devuelve 4.07 (max devuelve 19 (max devuelve 8.0 MIN Extrae el menor valor de una serie de números Sintaxis: (MIN <n1> <n2> <n3>.. Valor retornado = El menor valor encontrado. MINUSP (min devuelve (min devuelve 2 (min devuelve 2.0 Comprueba si un número es menor que 0 Sintaxis: (MINUSP <n> Valor retornado = T si el argumento n es un número y es negativo y nil en caso contrario. (minusp -1 (minusp (minusp devuelve T devuelve T devuelve nil 10

15 REM Calcula el resto de la división entre dos números Sintaxis: (REM <n1> <n2> Valor retornado: El resto de dividir n1 entre n2. (rem devuelve 6 (rem devuelve 12.0 (rem 26 7 devuelve 5 (rem 5 2 devuelve 1 (rem devuelve 1 SQRT Calcula la raíz cuadrada de un número Sintaxis: (SQRT <n> Valor retornado = Un número real, raíz cuadrada de n (sqrt 4 devuelve 2.0 (sqrt 2.0 devuelve ZEROP Comprueba si un número es 0 Sintaxis: (ZEROP <elemento> Valor retornado: T si el elemento es 0 y nil en caso contrario. (zerop 0 (zerop 0.0 (zerop devuelve T devuelve T devuelve nil. NUMBERP Comprueba si la evaluación de una función es un número Sintaxis: (NUMBERP <expresión> Valor retornado: T si la expresión evaluada es un numero y nil en caso contrario. (setq a 123 b 'a (numberp 4 (numberp (numberp "Hola" (numberp a (numberp b (numberp (eval b devuelve T devuelve T devuelve nil devuelve T devuelve nil devuelve T 11

16 5.2. FUNCIONES DE ASIGNACIÓN SETQ Liga el nombre de símbolos al valor de una expresión Sintaxis: (SETQ < Símbolo> <exp> < Símbolo> <exp> Valor retornado: El devuelto por el último argumento de la función. (setq a 5.0 devuelve 5.0 y define el símbolo (variable a como 5.0. (setq b 123 c 4.7 devuelve 4.7 y define los símbolos (variables: b como 123 y c como 4.7 (setq s "el" devuelve "el" (setq x '(a b devuelve (A B SETVAR Cambia el valor de variables del sistema. Sintaxis: (SETVAR <"nombre de la variable"> <nuevo valor> La variable del sistema no podrá ser sólo de lectura y el nuevo valor asignado será de los que el sistema pueda aceptar. Valor retornado: El nuevo valor de la variable del sistema. (setvar "blipmode" 0 (setvar "pdmode" 34 (setvar "pellipse" 3 Devuelve 0 y desactiva las marcas auxiliares. Devuelve 34 y establece un tipo de punto Error: AutoCAD rechazó la función TYPE Extrae el tipo de dato de un argumento. Sintaxis: (TYPE <elemento> Valor retornado: El tipo de dato como una cadena en mayúsculas REAL: numero entero FILE: descriptor de fichero STR: cadenas INT: numero entero. SYM: símbolos LIST: listas y funciones de usuario SUBR: funciones internas PICKSET ENAME... Conjuntos de selección Nombres de entidades Los elementos que dan como resultado nil (como un símbolo no asignado devuelven nil. (setq a 123 r 3.45 s "Hola!" x '(a b c (setq f (open "nombre" "r" entonces: (type 'a (type a (type f (type r (type s (type x (type + (type nil devuelve SYM devuelve INT devuelve FILE devuelve REAL devuelve STR devuelve LIST devuelve SUBR devuelve nil 12

17 5.3. FUNCIONES PARA MANEJAR CADENAS DE TEXTO READ Extrae datos de una cadena de caracteres Sintaxis: (READ <"cadena"> Valor retornado: El primer ítem de una cadena de caracteres o la primera lista si la cadena contiene listas. STRCASE Convierte los caracteres de una cadena a minúsculas o mayúsculas Sintaxis: (STRCASE <"cadena"> [modo] - conversión a minúsculas: modo /= nil - conversión a mayúsculas : modo = nil o no se presenta. Valor retornado: La cadena convertida. (strcase "Ejemplo" (strcase "Ejemplo" T devuelve "EJEMPLO" devuelve "ejemplo" STRCAT Empalma (concatena dos o más cadenas Sintaxis: (STRCAT <"cadena1"> ["cadena2"]... Valor retornado: Una sola cadena empalmada. (strcat "a" "cerca" (strcat "a" "b" "c" (strcat "a" "" "c" devuelve "acerca" devuelve "abc" devuelve "ac" STRLEN Cuenta los caracteres de una cadena Sintaxis: (STRLEN <"cadena">... Valor retornado: Un número entero. Si se especifican varios argumentos cadena, la función devuelve la suma de las longitudes de todos los argumentos. Si éstos se omiten o se escribe una cadena vacía, el resultado es 0 (cero. SUBSTR (strlen "abcd" devuelve 4 (strlen "ab" devuelve 2 (strlen "uno" "dos" "tres" devuelve 10 (strlen devuelve 0 (strlen "" devuelve 0 Extrae una porción de una cadena de caracteres. Sintaxis: (SUBSTR <"cadena"> <inicio>[ long ] inicio: número entero que indica la posición del primer carácter a extraer. long: longitud de la subcadena a extraer ( si no se da proporciona la subcadena desde la posición inicial hasta el final Valor retornado: La subcadena extraída. (substr "abcde" 2 (substr "abcde" 2 1 (substr "abcde" 3 2 (substr "abcde" 3 7 (substr "hola" 5 devuelve "bcde" devuelve "b" devuelve "cd" devuelve "cde" devuelve "" (cadena vacía 13

18 VL-PRINC-TO-STRING Devuelve la representación en cadena de caracteres de cualquier objeto Lisp como si fuera presentada mediante la función princ. Sintaxis: (VL-PRINC-TO-STRING <dato> Valor retornado: Una cadena de caracteres que contiene la representación del dato tal y como la mostraría la función princ. (vl-princ-to-string 120 devuelve 120 (vl-princ-to-string devuelve (vl-princ-to-string abc devuelve abc (vl-princ-to-string (10 20 devuelve (10 20 VL-LIST->STRING Concatena los caracteres representados en una lista por sus códigos numéricos ASCII. Sintaxis: (VL-LIST->STRING (entero Valor retornado: Una cadena formada por los caracteres cuyos códigos ASCII se incluyen en la lista pasada como argumento. ((vl-list->string ( devuelve abcd VL- STRING->LIST Convierte una cadena de caracteres en una lista de los códigos numéricos ASCII correspondientes. Sintaxis: (VL-STRING->LIST <cadena> Valor retornado: Una lista con los códigos ASCII correspondientes a los caracteres que integran la cadena. ((vl-string->list abcd devuelve (

19 5.4. FUNCIONES PARA GESTIÓN DE LISTAS CREACIÓN DE LISTAS LIST Crea una lista a partir de un número de expresiones Sintaxis: ( LIST <expresión>... Valor retornado: Una lista de los argumentos de la función. (setq L1 (list 'a 'b 'c devuelve (A B C (setq L2 (list 'a '(b c 'd devuelve (A (B C D (setq L3 (list devuelve ( (setq L3 '( equivale a (list (setq a 10 b 20 c 30 L4_1 (list a b c devuelve ( (setq La (list a Lb (list b Lc (list c L4_2( La Lb Lc devuelve ((10(20(30 Como alternativa a utilizar LIST, se puede indicar una lista de forma explícita con la función QUOTE si la lista no contiene variables ni opciones sin definir. El carácter de comilla ( ' se define como la función QUOTE. APPEND CONS Funde varias listas en una Sintaxis: (APPEND <lista>... Valor retornado: Una lista única. (setq L5 (append '(a b '(c d devuelve (A B C D (setq L6 (append '((a(b '((c(d devuelve ((A(B(C(D (setq L7 (append L3 L4_1 devuelve ( (setq L8 (append L4_2 L4_1 devuelve ((10 (20 ( (setq L9 (append La Lb Lc devuelve ( Añade al principio de una lista como primer elemento una expresión Sintaxis: (CONS <expresión> <lista> Valor retornado: La nueva lista. (cons 'a '(b c d devuelve (A B C D (cons '(a '(b c d devuelve ((A B C D La función CONS también acepta un átomo en lugar del argumento lista, en cuyo caso construye una estructura denominada pares punteados. En los pares punteados, AutoLISP incluye un punto entre el primer y el segundo elemento. Un par punteado es un tipo especial de lista, por lo que algunas funciones que utilizan listas normales no los aceptan como argumento. LENGTH (cons 'a 2 devuelve (A. 2 Cuenta los elementos de una lista Sintaxis: (LENGTH <lista> Valor retornado: El número entero correspondiente. (length '(a b c d devuelve 4 (length '(a b (c d devuelve 3 (length '( devuelve 0 15

20 EXTRACCIÓN DE ELEMENTOS DE UNA LISTA CAR CDR Extrae el primer elemento de una lista. Sintaxis: (CAR <lista> Valor retornado: El primer elemento de la lista. Si lista está vacía, CAR devuelve nil. (car '(a b c devuelve A (car '((a b c devuelve (A B (car '( devuelve nil (car (cons 'a 2 devuelve a Extrae una nueva lista donde están todos los elemento de la lista menos el primero. Sintaxis: (CDR <lista> Valor retornado: la nueva lista. Si lista está vacía, CDR devuelve nil. (cdr '(a b c devuelve (B C (cdr '((a b c devuelve (C (cdr '( devuelve nil Para obtener el segundo átomo de un par punteado, se puede utilizar la función CDR. (cdr '(a. b (cdr '(1. "Texto" devuelve B devuelve "Texto" FUNCIONES ANIDADES DE CAR Y CDR AutoLISP permite concatenar las funciones CAR y CDR hasta en cuatro niveles. Las siguientes son funciones válidas. CAAAAR CADAAR CDAAAR CDDAAR CAAADR CADADR CDAADR CDDADR CAAAR CADAR CDAAR CDDAR CAADAR CADDAR CDADAR CDDDAR CAADDR CADDDR CDADDR CDDDDR CAADR CADDR CDADR CDDDR CAAR CADR CDAR CDDR Cada a representa una llamada a CAR y cada d representa una llamada a CDR. Por ejemplo: (caar x es equivalente a (car (car x (caar L4_2 devuelve 10 (cdar x es equivalente a (cdr (car x (cadar x es equivalente a (car (cdr (car x (cadr x es equivalente a (car (cdr x (cadr L4_2 devuelve (20 (cddr x es equivalente a (cdr (cdr x (caddr x es equivalente a (car (cdr (cdr x En AutoLISP, CADR suele utilizarse para obtener la coordenada Y de un punto 2D ó 3D (el segundo elemento de una lista de dos o tres números reales. De igual modo, CADDR puede utilizarse para obtener la coordenada Z de un punto 3D. Por ejemplo, dadas las asignaciones: (setq pt2 '( un punto 2D (setq pt3 '( un punto 3D (car pt2 devuelve 5.25 (cadr pt2 devuelve 1.0 (caddr pt2 devuelve nil (car pt3 devuelve 5.25 (cadr pt3 devuelve

21 (caddr pt3 devuelve 3.0 (car (cons 'a 2 devuelve A (cdr (cons 'a 2 devuelve 2 LAST Extrae el último elemento de una lista Sintaxis: (LAST <lista> Valor retornado: el último elemento de la lista. (last '(a b c d e devuelve E (last '(a b c (d e devuelve (D E (last pt3 devuelve 3.0 (last L4_2 devuelve (30 NTH Extrae un elemento de una lista a partir de especificar su posición en ella (pos Sintaxis: (NTH <pos> <lista> Las posiciones dentro de la lista son numeradas de izquierda a derecha empezando por la posición 0. Valor retornado: El elemento encontrado, o un nulo si no se encontró. (nth 3 '(a b c d e devuelve D (nth 0 '(a b c d e devuelve A (nth 5 '(a b c d e devuelve nil (nth 0 L4_2 devuelve (10 (nth 0 (car L4_2 devuelve 10 ASSOC Localiza sublistas en una lista de asociaciones utilizando elemento como palabra clave, y donde éste puede ser cualquier expresión válida susceptible de aparecer como primer elemento de una de las sublistas. Lista de asociaciones: ( (clave1 inf1 (clave2 inf2... (clave3 inf3... Sintaxis: (ASSOC <elemento> <lista de asociaciones> Valor retornado: La primera sublista encontrada. Si la clave no aparece devuelve nil (setq pieza '((nombre CAJA (ancho 3 (largo (alto 5 (assoc 'largo pieza devuelve (largo (assoc 'peso pieza devuelve nil Las listas de asociaciones se suelen utilizar para almacenar los datos a los que puede acceder mediante una clave. La función SUBST proporciona un medio apropiado para sustituir el valor asociado con una clave en una lista de asociaciones. 17

22 MANIPULACIÓN DE LISTAS MEMBER Busca la primera aparición de una expresión en una lista y devuelve el resto de la lista a partir de la expresión encontrada. Sintaxis: (MEMBER <expresión><lista> Valor retornado: una lista donde el primer elemento es la expresión encontrada y el resto, el resto de la lista hasta el final. Si no se encuentra la expresión devuelve nil. (member 'c '(a b c d e devuelve (C D E (member 20 L4_1 devuelve (20 30 (member '(30 L4_2 devuelve ((30 (member 'q '(a b c d e devuelve nil REVERSE Invierte un lista Sintaxis: (REVERSE <lista> Valor retornado: La lista con sus miembros en orden inverso. (reverse '((a b c devuelve (C B (A LISTP Comprueba si un argumento es una lista Sintaxis: (LISTP <expresión> Valor retornado: T si la expresión es una lista, nil en caso contrario. (listp L8 (listp "hola" devuelve T devuelve nil SUBST Busca en una lista un miembro especificado y sustituye cada aparición de éste por otro especificado Sintaxis: (SUBST <elemento nuevo> <elemento viejo> <lista> Valor retornado: La lista modificada. (setq ejemplo '(a b (c d b (subst 'qq 'b ejemplo devuelve (A QQ (C D QQ (subst 'qq 'z ejemplo devuelve (A B (C D B (subst 'qq '(c d ejemplo devuelve (A B QQ B (subst '(qq rr '(c d ejemplo devuelve (A B (QQ RR B (subst '(qq rr 'z ejemplo devuelve (A B (C D B Cuando se utiliza conjuntamente con assoc, subst proporciona una forma útil de sustituir el valor asociado a una clave de una lista de asociaciones. (setq lista '((a 10 (b 20(c 30 devuelve ((a 10 (b 20(c 30 (setq sublvieja (assoc 'b lista define sublvieja como (b 20 sublnueva '(b 50 define sublnueva como (b 50 (setq lista (subst sublnueva sublvieja lista devuelve ((a 10 (b 50(c 30 18

23 FOREACH Procesa uno a uno los elementos de una lista y evalúa cada expresión para cada uno de los elemento de la lista Sintaxis: (FOREACH <nombre-var> <lista> <expresión>... Nombre-var: variable de memoria a la que FOREACH ligará secuencialmente los valores de la lista suministrada y que normalmente será usada en la expresión. Valor retornado: El resultado de la última expresión evaluada. Avanza por la lista, asignando un nombre-var a cada elemento y evalúa cada expresión para todos los elementos de la lista. Se pueden especificar tantas expresiones como se desee. La función FOREACH devuelve el resultado de la última expresión evaluada. (setq pt1 (getpoint "\n pt1?:" pt2 (getpoint "\n pt2?:" pt3 (getpoint "\n pt3?:" listap (list pt1 pt2 pt3 (foreach pto listap (command _point pto equivale a dibujar una marca de punto en los puntos pt1 pt2 y pt3. ATOM Predicado que verifica si un elemento es un átomo, es decir, si no es una lista. Sintaxis: (ATOM <item> Valor retornado: Nil si <item> es una lista; T en otro caso. (setq a (x y z b 23 (atom a (atom b devuelve nil devuelve T 19

24 5.5. FUNCIONES MONOLÍNEA APPLY Devuelve el resultado de ejecutar la "función" tomando como argumentos los elementos de la "lista". Sintaxis: ( APPLY <función> <Lista> Valor retornado: El devuelto por el argumento de la función (apply '+ '( devuelve el resultado = 6 (apply ' strcat '( "A" "B" "C" devuelve "ABC" MAPCAR Devuelve el resultado de ejecutar la "función" tomando como argumentos de función los elementos sucesivos de "lista 1"..."lista n" Sintaxis: ( MAPCAR <función> <lista 1>...<lista n> Valor retornado: una lista con las sucesivas soluciones. (mapcar '+ ' ( '( devuelve la lista ( (mapcar '+ ' ( '( devuelve la lista (5 7 9 (mapcar 'max ' (2 4 '( 7-5 '( devuelve la lista (7 20 (mapcar 'expt '( '( devuelve ( (setq A 10 B 20 C 30 (mapcar '1+ (LIST A B C devuelve la lista ( Ejemplo anterior: (setq L '( (mapcar '1+ L devuelve la lista ( LAMBDA Define una función sin darle un nombre. El conjunto de expresiones se aplica sobre los argumentos Sintaxis: ( LAMBDA < argumentos > < expresión >... Valor retornado: el resultado de la última evaluación. Se suele utilizar combinada con APPLY y MAPCAR. (apply '( lambda ( X Y Z (* X ( - Y Z ' ( devuelve 30. (apply '( lambda ( X Y Z (+ X Y Z ' ( devuelve: Error: too many arguments. (mapcar '( lambda ( X Y Z (* X ( - Y Z '( 5 6 '( '(14 0 devuelve (

25 5.6. FUNCIONES DE CONVERSIÓN Y TRANSFORMACIÓN FIX Convierte un número real en entero. Sintaxis: (FIX <numero real> Valor retornado: El número entero que resulta de quitar los decimales al real. (fix 3 devuelve 3 (fix 3.7 devuelve 3 FLOAT Convierte un número entero en real. Sintaxis: (FLOAT <numero entero> Valor retornado: un numero real. (float 3 devuelve 3.0 (float 3.75 devuelve 3.75 ATOI Convierte una cadena de caracteres en un número entero Sintaxis: (ATOI <cadena> Valor retornado: un número entero. (atoi "97" devuelve 97 (atoi "3" devuelve 3 (atoi "3.9" devuelve 3 Ejemplo de código que introduce puntos en una lista solicitando el punto por su posición en la lista. (setq i 1 puntos nil (while (setq dato (getpoint (strcat "\npunto" (itoa i ":" (setq puntos (cons dato puntos i (+ i 1 (setq puntos (reverse puntos ATOF Convierte una cadena de caracteres en un número real Sintaxis: (ATOF <"cadena"> Valor retornado: un número real. (atof "97.1" devuelve 97.1 (atof "3" devuelve 3.0 (atof "3.9" devuelve 3.9 ITOA Convierte un entero en una cadena de caracteres Sintaxis: (ITOA <entero> Valor retornado: una cadena de caracteres. (itoa 33 devuelve "33" 21

26 RTOS Convierte un número real en una cadena de caracteres Sintaxis: (RTOS <número> [modo [precisión]] numero: número real (o entero que tomará como real modo (opcional: entero del 1 al 5 que determina el formato numérico de la cadena: 1. Unidades científicas 2. Unidades decimales 3. Pies y pulgadas I (fracción decimal 4. Pies y pulgadas II (fracción propia 5. Unidades fraccionarias precisión (opcional: entero que determina el número de decimales de precisión en la cadena Si no se especifican los argumentos modo y precisión se asume el establecido por la variables de Autocad LUNITS y LUPREC Valor retornado: Una cadena de caracteres Ejemplos: (RTOS => E+00" (RTOS => " (RTOS => 5 5/8" DISTOF Convierte un cadena en un número real, con un determinado formato de visualización. Sintaxis: (DISTOF <"cadena"> [ modo] Cadena: cadena de caracteres que expresa un valor numérico. modo (opcional: entero del 1 al 5 que indica el formato numérico del número real expresado en la cadena (El código se corresponde con el dado en la función anterior, la función deberá ser capaz de interpretar el argumento cadena de acuerdo con el modo especificado: Valor retornado: Un número real ANGTOS Convierte un número (que representa un ángulo en radianes en una cadena de caracteres Sintaxis: (ANGTOS <ángulo> [modo [precisión]] angulo: valor del ángulo en radianes. modo (opcional: entero del 0 al 4 que determina el formato numérico en la cadena: 0. Grados sexagesimales. 1. Grados, minutos y segundos 2. Grados centesimales. 3. Radianes 4. Unidades geodésicas. precisión (opcional: entero que determina el número de decimales de precisión en la cadena. Si no se especifican los argumentos modo y precisión se asume el establecido por la variables de Autocad LUNITS y LUPREC Valor retornado: Una cadena de caracteres. Ejemplos: (ANGTOS => 180" (ANGTOS => 200g" ANGTOF Convierte una cadena de caracteres en un número real que representa un ángulo Sintaxis: (ANGTOF <"cadena"> [ modo] Cadena: cadena de caracteres que expresa un valor numérico de ángulo modo (opcional: entero del 0 al 4 que indica el formato numérico del ángulo expresado en la cadena (El código se corresponde con el dado en la función anterior, la función deberá ser capaz de interpretar el argumento de la cadena de acuerdo con el modo especificado. Si no se especifica el argumento modo se asume el establecido por la variable de Autocad LUNITS Valor retornado: Un valor correspondiente al numérico de un ángulo en radianes. Ejemplos: (ANGTOF 180" 0 => (ANGTOF 200" 2 =>

27 ASCII CHR Convierte el primer carácter de una cadena de caracteres a su código ASCII Sintaxis: (ASCII <"cadena"> Valor retornado: Un entero que representa el código ASCII (ascii "A" devuelve 65 (ascii "a" devuelve 97 (ascii "GRANDE" devuelve 66 Convierte un número entero que representa un carácter ASCII en la cadena de un sólo carácter correspondiente Sintaxis: (CHR <entero> Valor retornado: una cadena de un sólo carácter. (chr 65 (chr 66 (chr 97 devuelve "A" devuelve "B" devuelve "a" READ Extrae datos de una cadena de caracteres Sintaxis: (READ <"cadena"> Valor retornado: El primer ítem de una cadena de caracteres o la primera lista si la cadena contiene listas. TRANS (read hola a todos hola (read ( ( (read "\"Hola a todos\"" devuelve la cadena "Hola a todos" (read "(a b c (d" devuelve la lista (A B C (read "1.2300" devuelve el número real 1.23 (read "87 3.2" devuelve el entero 87 Transforma las coordenadas de un punto de un sistema de coordenadas a otro. Sintaxis: (TRANS <lista de punto o desplazamiento> <codvie> < codnue> [desp]. codvie: código que expresa el sistema de coordenadas en el cual se expresa el punto. conue: código que expresa el sistema de coordenadas en el cual se quiere expresar el punto 0. SCU 1. SCP 2. SCV (visualización 3. SCV espacio papel desp : si es distinto de nil entiende el primer argumento como un desplazamiento. Valor retornado: Una lista de punto con sus coordenadas transformadas. CVUNIT Convierte un número o lista de números de una unidad de medida a otra (Las cadenas que representan unidades de medida válidas en esta función están almacenadas en el fichero ACAD.UNT Sintaxis: (CVUNIT <nº o lista> <cadvie> <cadnue> cadvie: cadena de unidad de medida vieja. cadvie: cadena de unidad de medida nueva. Valor retornado: Un número o lista de números convertida a la unidad de medida nueva. (cvunit 1 "minuto" "segundo" devuelve 60.0 (cvunit 1.0 "pulgada" "cm" devuelve 2.54 (cvunit 1.0 "acre" "yarda cuadrada " devuelve (cvunit '( "pie" "pulgada" devuelve ( (cvunit '(1 2 3 "pie" "pulgada" devuelve (

28 5.7. FUNCIONES DE RELACIÓN = Comprueba la igualdad numérica Sintaxis: (= <átomo> <átomo> <átomo>. Valor retornado: T si todos los argumentos (números o cadenas de caracteres se evalúan como iguales numéricamente, Nil en caso contrario. Las cadenas son comparadas en esta función y en las siguientes en base a su valor numérico ASCII (= devuelve T (= devuelve nil (= devuelve T (= devuelve nil (= "yo" "yo" devuelve T (= "yo" "tú" devuelve nil /= Comprueba la desigualdad numérica Sintaxis: (/= <átomo> <átomo> Valor retornado: T si los dos argumentos (números o cadenas de caracteres no se evalúan como iguales numéricamente, Nil en caso contrario (/= devuelve T (/= "tú" "tú" devuelve nil (/= devuelve T (/= devuelve T < Comprueba la relación menor que entre los argumentos Sintaxis: (< <átomo> <átomo> <átomo>. Valor retornado: T si cada argumento es numéricamente menor que el argumento de su derecha y Nil en caso contrario. (< devuelve T (< "b" "c" devuelve T (< devuelve nil (< devuelve T (< devuelve nil > Comprueba la relación mayor que entre los argumentos Sintaxis: (> <átomo> <átomo> <átomo>. Valor retornado: T si cada argumento es numéricamente mayor que el argumento de su derecha y Nil en caso contrario (> devuelve T (> "c" "b" devuelve T (> devuelve nil (> devuelve T (> devuelve nil (> Pablo pablo devuelve nil 24

29 <= Comprueba la relación menor o igual que entre los argumentos Sintaxis: (<= <átomo> <átomo> <átomo>. Valor retornado: T si cada argumento es numéricamente menor o igual que el argumento de su derecha y Nil en caso contrario. (<= devuelve T (<= "b" "b" devuelve T (<= devuelve nil (<= devuelve T (<= devuelve nil >= Comprueba la relación mayor o igual que entre los argumentos Sintaxis: (>= <átomo> <átomo> <átomo>. Valor retornado: T si cada argumento es numéricamente mayor o igual que el argumento de su derecha y Nil en caso contrario. (>= devuelve T (>= "c" "c" devuelve T (>= devuelve nil (>= devuelve T (>= devuelve nil AND Comprueba los valores de una serie de expresiones. (Y lógico Sintaxis: (AND <exp> <exp> <exp>. Valor retornado: T si todos los argumentos se evalúan con un valor no nulo y Nil contrario. en caso (and "hola" (and 1.4 ( = 3 4 devuelve T devuelve nil OR Comprueba de izquierda a derecha una serie de expresiones hasta hallar la primera que se evalúa con un valor no nulo. (O lógico Sintaxis: (OR <exp> <exp> <exp>. Valor retornado: T si alguno de los argumentos se evalúa con un valor no nulo y Nil en caso contrario. (or "hola" (or 1.4 ( = 3 4 (or nil 45 (or nil (= 3 4 devuelve T devuelve T devuelve T devuelve nil NOT Modifica el sentido de un predicado: lo que es cierto lo hace falso, y viceversa. Sintaxis: (NOT <exp> Valor retornado: devuelve T si su argumento es falso y Nil si es cierto. (not nil (not (= 3 4 (not (= 4 4 devuelve T devuelve T devuelve nil 25

30 EQ Comprueba si los valores atribuidos a ambas expresiones son idénticas Sintaxis: (EQ <exp> <exp> Valor retornado: T si las dos expresiones están ligadas a los mismos datos y Nil en otro caso. (setq f1 '(a b c (setq f2 '(a b c (setq f3 f2 entonces: (eq f1 f3 (eq f3 f2 devuelve nil, f1 y f3 no son la misma lista devuelve T, f3 y f2 son exactamente la misma lista EQUAL Comprueba si dos expresiones se evalúan con valores iguales Sintaxis: (EQUAL <exp> <exp> [margen de error] Valor retornado: T si las dos expresiones se evalúan igual y Nil en caso contrario. Si las dos expresiones son números reales se puede incluir un margen de error. entonces: (setq f1 '(a b c (setq f2 '(a b c (setq f3 f2 (setq a (setq b (equal f1 f3 (equal f3 f2 (equal a b (equal a b devuelve T devuelve T devuelve nil devuelve T = Comprueba la igualdad numérica Sintaxis: (= <átomo> <átomo> <átomo>. Valor retornado: T si todos los argumentos (números o cadenas de caracteres se evalúan como iguales numéricamente Nil en caso contrario. Las cadenas son comparadas en esta función y en las siguientes en base a su valor numérico ASCII. (= devuelve T (= devuelve nil (= devuelve T (= devuelve nil (= "yo" "yo" devuelve T (= "yo" "tú" devuelve nil Uso de las funciones anteriores en línea de comandos: Comando: (setq a 2 b 2 2 Comando: (= a b T Comando: (eq a b T Comando: (equal a b T 26

31 5.8. FUNCIONES DE CONDICIÓN COND Lee una serie de listas. Evalúa el primer elemento de cada lista (en el orden indicado hasta que uno de ellos devuelva un valor distinto de nil. A continuación, evalúa las expresiones que siguen a este elemento y pasa por alto las restantes listas. Sintaxis: (COND <lista1> <lista2>.. Valor retornado: El retornado por la última expresión de la lista evaluada. Si no se evalúa ninguna lista, la función COND devuelve Nil (cond ((< a 20 (setq b (cons 'a a ((> a 20 (setq b (list 'a a (t (setq b "b=20" en los casos: a = 10 => b = (a. 10 a = 25 => b = (a 25 a = 20 => b = "b=20" la variable b se evalúa como un par punteado la variable b se evalúa como una lista la variable b se evalúa como un string Como se muestra, COND se puede utilizar como una función de tipo case. Es habitual utilizar T como última (por defecto expresión de prueba. Dada una cadena de respuesta de usuario en la variable s, esta función prueba la respuesta y devuelve 1 si es Y o y, 0 si es N o n y nil en cualquier otro caso. (cond ((= s "Y" 1 ((= s "y" 1 ((= s "N" 0 ((= s "n" 0 (t nil IF Evalúa una expresión Autolisp basándose en si una expresión de comprobación inicial se evalúa como no nula Sintaxis: (IF <test> <expresión si test es /= nil > [expresión si test es = nil ] Valor retornado: El valor retornado por expresión evaluada; nil en otro caso. (if (= 1 3 " SÍ!!" "no." (if (= 2 (+ 1 1 " SÍ!!" (if (= 2 (+ 3 4 " SÍ!!" devuelve "no." devuelve " SÍ!!" devuelve nil PROGN Evalúa secuencialmente una serie de expresiones. Sintaxis: (PROGN <exp1> <exp2> Valor retornado: La última expresión evaluada. Se puede utilizar PROGN para calcular varias expresiones cuando sólo se espera una expresión. (if (= a b (progn (princ "\na = B " (setq a (+ a 10 b (- b 10 27

32 5.9. FUNCIONES PARA GESTIÓN DE CICLOS REPEAT Evalúa repetidamente una serie de una o más expresiones Autolisp un número determinado de veces. Sintaxis: (REPEAT<n> <exp1> <exp2> n: Entero que indica el nº de repeticiones a realizar. Valor retornado: El resultado de la última expresión evaluada (setq a 10 b 100 (repeat 4 (setq a (+ a 10 (setq b (+ b 100 Define a como 50, b como 500 y devuelve 500 (setq L '( n (length L i 0 Ln nil (repeat n (setq elem (nth i L elem (1+ elem Ln (cons elem ln i (1+ i (setq L (reverse Ln Devuelve la lista ( (setq L '( n (length L Ln nil (repeat n (setq elem (car L L (cdr L elem (1+ elem Ln (cons elem ln (setq L (reverse Ln Devuelve la lista ( (setq pt1 (getpoint "\n pt1?:" pt2 (getpoint "\n pt2?:" pt3 (getpoint "\n pt3?:" listap (list pt1 pt2 pt3 n (length listap (Command "_pline" (repeat n (setq pt (car listap listap (cdr listap (command pt (command "" Equivale a dibujar una polilínea que pasa por los puntos pt1 pt2 y pt3 28

33 WHILE Evalúa repetidamente una serie de una o más expresiones Autolisp basándose en si una expresión de comprobación inicial se evalúa como un valor nulo o no nulo. Sintaxis: (WHILE <test> <exp1> <exp2> Test: Expresión de comprobación, que hace que las demás expresiones se evalúen mientras ésta se mantenga distinta de Nil. Valor retornado: El resultado de la última expresión evaluada (setq a 10 (While (< a 100 (setq a (+ a 10 Define a como 90. (setq L '( i 0 Ln nil (While (setq elem (nth i L (setq elem (1+ elem Ln (cons elem ln i (1+ i (setq L (reverse Ln Devuelve la lista ( (setq L '( Ln nil (While (setq elem (car L (setq L (cdr L elem (1+ elem Ln (cons elem ln... (setq L (reverse Ln Devuelve la lista ( (setq pt1 (getpoint "\n pt1?:"pt2 (getpoint "\n pt2?:"pt3 (getpoint "\n pt3?:" listap (list pt1 pt2 pt3 (Command "_pline" (While (setq pt (car listap (setq listap (cdr listap (command pt (command "" Equivale a dibujar una polilínea que pasa por los puntos pt1 pt2 y pt3. (setq L '( Ln nil (foreach n L (setq Ln (cons (+ 1 n Ln (setq l (reverse ln Devuelve la lista ( (setq pt1 (getpoint "\n pt1?:" pt2 (getpoint "\n pt2?:" pt3 (getpoint "\n pt3?:" listap (list pt1 pt2 pt3 (command "_pline" (foreach punto listap (command punto (command "" Equivale a dibujar una polilínea que pasa por los puntos pt1 pt2 y pt3. 29

34 5.10. FUNCIÓN PARA CREAR FUNCIONES DE USUARIO DEFUN Define una nueva función Autolisp o una orden o comando Autocad Sintaxis (DEFUN <nombre> <( [lista-argumentos][ / símbolos locales]> [expr]... Nombre: el nombre de la función o de la orden que se está creando. Si es una orden o comando Autocad el nombre será: c:xxx Lista-argumentos: una lista con los argumentos, que puede estar seguida por una barra oblicua y los nombres de uno o más símbolos locales para la función. Argumentos: variables que toman valor en la llamada a la función Símbolos locales: variables que sólo tienen valor en la función que se define. La barra oblicua debe ir separada del primer símbolo local y del último argumento, si existe, por un espacio como mínimo. Si no se declara ningún argumento ni símbolo local, se debe escribir un conjunto vacío de paréntesis tras el nombre de la función. Los siguientes ejemplos de lista-argumentos muestran valores válidos y no válidos: (defun mifunc (x y... (defun mifunc (/ a b... (defun mifunc (x / temp... (defun mifunc (... La función toma dos argumentos La función tiene dos símbolos locales Un argumento, un símbolo local Ningún argumento ni símbolo local Expr: Expresiones que se ejecutan en la función y que utilizan como variables: - Los argumentos de la función. - Las variables locales que tienen que tomar valor en la función y lo pierden al ejecutarse la misma. - Las variables globales definidas, bien en esta función, bien en otras y que por no haber sido definidas como locales en ninguna función tienen valor en todo el programa. Valor retornado: La función DEFUN devuelve el nombre de la función que se va a definir. Al invocar esta función, sus argumentos se evalúan y se asocian a los símbolos correspondientes. La función devuelve el resultado de la última expresión evaluada. (DEFUN SUMA_10 (x (+ 10 x devuelve SUMA10 (SUMA_10 5 devuelve 15 (SUMA_ devuelve 2.6 (defun puntos (x y / temp (setq temp (strcat x "..." (strcat temp y devuelve PUNTOS (puntos "a" "b" (puntos "de" "a" (eval temp devuelve "a...b" devuelve "de...a" devuelve nil Advertencia: No se debe utilizar nunca el nombre de una función interna o un símbolo como nombre de función creada por el usuario, ya que quedaría inaccesible. 30

35 5.11. FUNCIONES GRÁFICAS ANGLE Calcula el ángulo que formaría una recta definida por dos puntos con la dirección positiva del eje X del SCP actual (si los puntos son 3D se proyectan sobre el plano de construcción actual Sintaxis: ( ANGLE <pt1> <pt2> Valor retornado: Un ángulo en radianes DISTANCE (angle '( '( devuelve (angle '( '( devuelves Calcula la distancia entre dos puntos Sintaxis: ( DISTANCE <pt1> <pt2> Valor retornado: Un número real, que es la distancia en unidades de dibujo entre los dos puntos suministrados como argumentos. Si al menos uno de los puntos facilitados es un punto 2D, DISTANCE no toma en cuenta las coordenadas Z de los puntos 3D especificados, y devuelve la distancia 2D entre los puntos, proyectada sobre el plano de construcción actual. POLAR (distance '( '( devuelve 6.7 (distance '( '( devuelve Computa un punto en relación a un punto dado. Sintaxis: ( POLAR <pt> <ang> <dis> Valor retornado: Las coordenadas de un punto situado en el ángulo ang (radianes y a una distancia dis del punto pt todo ello con relación al SCP actual. El ángulo siempre se refiere al plano de construcción actual. INTERS (polar '( devuelve ( (polar (1 1 (/ pi 2 3 devuelve ( Calcula el punto de intersección entre dos líneas Sintaxis: ( INTERS <pt1> <pt2> <pt3> <pt4> [extend] Valor retornado: Un punto que indica el punto de intersección de la línea definida por pt1 y pt2 y la línea definida por pt3 y pt4, si no se encuentra ningún punto de intersección la función retorna un nil. Extend: Si extend se evalúa como nil las líneas se prolongan hasta encontrar el punto de intersección, en caso contrario o si no se codifica, sólo se busca la intersección en la longitud de los segmentos definidos por los puntos. Todos los puntos se expresan respecto al SCP actual. Si los cuatro argumentos de puntos son 3D, inters busca una intersección 3D. Si hay algún punto 2D, inters proyecta las líneas sobre el plano de construcción actual y sólo busca una intersección 2D. (setq a '( b '( (setq c '( d '( (inters a b c d devuelve nil (inters a b c d T devuelve nil (inters a b c d nil devuelve (

36 5.12. FUNCIONES DE ENTRADA INTERACTIVA GETPOINT Detiene la ejecución del programa para que el usuario introduzca un punto. Sintaxis: (GETPOINT [pt] [mensaje] pt: punto de base opcional mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud del punto Valor retornado: El punto introducido, como una lista de números reales. El usuario no puede escribir otra expresión AutoLISP como respuesta a una petición GETDIST. (setq p (getpoint (setq p (getpoint " Dónde? " (setq p (getpoint '(10 20 respuesta :@40,20 valor retornado: ( GETDIST Detiene la ejecución del programa para que el usuario introduzca una distancia Sintaxis: (GETDIST [pt] [mensaje] pt: punto de base opcional mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud de la distancia Valor retornado: Un número real. El usuario no puede escribir otra expresión AutoLISP como respuesta a una petición GETDIST. (setq dist (getdist (setq dist (getdist '( (setq dist (getdist " A qué distancia? " (setq dist (getdist '( " A qué distancia? " GETANGLE Detiene la ejecución del programa para que el usuario introduzca un ángulo. Sintaxis: (GETANGLE [pt] [mensaje] pt: punto de base opcional mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud del ángulo Valor retornado: El valor del ángulo en radianes. La función GETANGLE mide los ángulos a partir de cero radianes (definidos mediante la variable de sistema ANGBASE aumentando en dirección opuesta a las agujas del reloj. El ángulo resultante se expresa en radianes con respecto al plano de construcción actual (el plano XY del SCP actual, con la elevación actual. El usuario no puede escribir otra expresión AutoLISP como respuesta a una petición GETANGLE. Para especificar un ángulo, el usuario debe escribir un número en el formato actual de unidades angulares de AutoCAD. Aunque este formato puede utilizar grados, grados centesimales o cualquier otra unidad, esta función siempre devuelve el ángulo en radianes. El usuario también puede designar dos posiciones 2D en la pantalla gráfica para indicar el ángulo a AutoLISP. AutoCAD dibuja una línea elástica desde el primer punto hasta la posición del cursor en cruz con el fin de facilitar al usuario la visualización del ángulo. 32

37 Es importante comprender la diferencia entre el ángulo indicado y el que devuelve GETANGLE. Los ángulos que se transmiten a GETANGLE se basan en los valores actuales de ANGDIR y ANGBASE. Sin embargo, una vez que se especifica el ángulo, éste se mide en dirección opuesta a las agujas del reloj (sin tomar en cuenta el valor de ANGDIR, con cero radianes como valor actual de ANGBASE. Los siguientes ejemplos de código muestran cómo se pueden utilizar diferentes argumentos. (setq ang (getangle (setq ang (getangle '( (setq ang (getangle " Hacia dónde? " (setq ang (getangle '( " Hacia dónde? " GETORIENT Detiene la ejecución del programa para que el usuario introduzca un ángulo. Sintaxis: (GETORIENT [pt] [mensaje] pt: punto de base opcional mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud del ángulo Valor retornado: El valor del ángulo en radianes. Esta función se asemeja a GETANGLE, con la diferencia de que el valor de ángulo devuelto por GETORIENT no se ve afectado por las variables de sistema ANGBASE y ANGDIR. Sin embargo, la introducción del ángulo por parte del usuario todavía se basa en los parámetros actuales de ANGDIR y ANGBASE.. La función GETORIENT mide los ángulos con una dirección de cero radianes hacia la derecha (este y los ángulos que se incrementan en sentido contrario a las agujas del reloj. Al igual que con GETANGLE, GETORIENT expresa el ángulo resultante en radianes, respecto al plano de construcción actual. Los ángulos que se transmiten a GETORIENT se basan en los valores actuales de ANGDIR Y ANGBASE. Sin embargo, una vez proporcionado el ángulo, éste se mide en sentido contrario a las agujas del reloj, con cero radianes a la derecha (ANGDIR y ANGBASE se ignoran. Por ello, si selecciona otra base de cero grados u otra dirección para los ángulos que se incrementan, se debe utilizar el comando UNIDADES o las variables de sistema ANGBASE y ANGDIR para realizar la conversión necesaria. Se recomienda el uso de GETANGLE para obtener un valor de rotación (un ángulo relativo. Y de GETORIENT para obtener una orientación (un ángulo absoluto. GETCORNER Detiene la ejecución del programa para que el usuario introduzca un punto, y traza un rectángulo de banda elástica en la pantalla a medida que el usuario mueve el dispositivo señalador Sintaxis: (GETCORNER <pt> [mensaje] pt: Primera esquina del rectángulo. mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud de la otra esquina. Valor retornado: El punto introducido por el usuario 33

38 GETVAR Extrae un valor almacenado en una variable del sistema de AutoCAD Sintaxis: (GETVAR <"nombre de variable"> Valor retornado: valor de la variable del sistema especificada. (getvar "pdmode" (getvar "area" (getvar "perimeter" Devuelve el valor actual para el tipo de punto Devuelve el valor del último área calculada por Autocad Devuelve el valor del último perímetro calculado por Autocad. GETINT Detiene la ejecución del programa para que el usuario introduzca un número entero. Sintaxis: (GETINT [mensaje] mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud del entero Valor retornado: El entero introducido por el usuario. El rango de valores pasados a GETINT puede ir de -32,768 a +32,767. El usuario no puede escribir otra expresión de AutoLISP como respuesta a una petición de GETINT. (setq num (getint (setq num (getint "Escriba un número: " GETREAL Detiene la ejecución del programa para que el usuario introduzca un número real Sintaxis: (GETREAL [mensaje] mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud del número real Valor retornado: El real introducido por el usuario. (setq val (getreal (setq val (getreal "Factor de escala: " GETSTRING Detiene la ejecución del programa para que el usuario introduzca una cadena de caracteres Sintaxis: (GETSTRING [espacio] [mensaje] Espacio: Si este argumento es distinto de nil la cadena introducida puede contener espacios en blanco. (y debe finalizarse con RETURN. mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud de la cadena Valor retornado: La cadena introducida entrecomillada o una cadena vacía ( si el usuario pulsó Enter sin teclear caracteres. Si tiene más de 132 caracteres, la cadena sólo devuelve estos caracteres. Si contiene el carácter de contrabarra (\, éste se convierte en dos caracteres de contrabarra (\\. De esta manera, el valor resultante puede incluir caminos de nombre de archivo a los que tienen acceso otras funciones. (setq s (getstring "Escriba su nombre " Si se responde Juan se define s como "Juan" (setq s (getstring T "Escriba su nombre completo: " Si responde Juan Díaz Pérez se define como "Juan Díaz Pérez" (setq s (getstring "Nombre de archivo: " "\\acad\\midibuj" Si responde \acad\midibuj se define como 34

39 GETKWORD Detiene la ejecución del programa para que el usuario introduzca una cadena de caracteres. Esta función comprueba la validez de lo introducido basándose en una lista de palabras válidas establecidas usando la función INIGET Sintaxis: (GETKWORD [mensaje] mensaje: cadena opcional que será presentada en el área de órdenes/peticiones de la pantalla, en el momento de la solicitud de la cadena. Valor retornado: La cadena introducida o Nil si el usuario pulsó Enter sin teclear caracteres AutoCAD lo intenta de nuevo si la entrada no es una palabra clave. Si se trata de una entrada nula ( RETURN, GETKWORD devuelve nil (siempre que se admitan entradas nulas. Esta función también devuelve nil si antes no se ha realizado una llamada a INITGET que establezca una o varias palabras clave. El ejemplo siguiente muestra una llamada inicial a initget que define una lista de palabras clave (Sí y No y no admite entradas nulas (valor en bits igual a 1 en la siguiente llamada a getkword: (initget 1 "Sí No" (setq x (getkword " Seguro? (Sí o No " Este mensaje solicita datos del usuario y define el símbolo x como Sí o No, según la respuesta proporcionada. Si ésta no coincide con ninguna de las palabras clave o el usuario escribe un valor nulo, AutoCAD vuelve a mostrar la cadena indicada en el argumento solicitud. Si no se especifica este argumento, AutoCAD muestra lo siguiente: Inténtelo de nuevo: INITGET Establece las palabras clave que han de usarse con la siguiente llamada a una función introducida por el usuario. Las funciones que toman en consideración las palabras clave son getint, getreal, getdist, getangle, getorient, getpoint, getcorner, getkword, entsel, nentsel y nentselp. La función getstring es la única función introducida por el usuario que no las admite. Sintaxis: (INITGET [bits] [cadena] Bits: El argumento bits es un número entero binario que admite o rechaza determinados tipos de datos de usuario. Algunos de los valores que puede tomar junto a su significado asociado: 1: no permite nulos 2: no permite cero 4: no permite negativos 8: no chequea límites del dibujo 64: devuelve una distancia 2D, en lugar de 3D. Cadena: El argumento cadena define una lista de palabras clave. Valor retornado: La función initget siempre devuelve nil. Para más información sobre la función se recomienda consultar el manual de personalización de Autocad 35

40 GETFILED Presenta un cuadro de dialogo de nombres de archivos y espera una entrada de usuario. Sintaxis: (GETFILED <"dialogo"> <"nombre de Fichero por defecto" o ""> <"extensión" o "" (para. *> <parámetros> Parámetros: dialogo determina el nombre del cuadro de diálogo, nombre de Fichero por defecto especifica el nombre de archivo que se va a utilizar por defecto extensión es la extensión por defecto del nombre del archivo. Si extensión se transmite como una cadena nula [""], utiliza por defecto * (para todos los tipos. parámetros es un valor entero (un campo codificado en bits que controla el funcionamiento del cuadro de diálogo. Para definir varias condiciones simultáneamente, se añaden los valores en conjunto y se crea un indicador con un número comprendido entre el 0 y el 15. Valor del indicador = 1 (bit 0:Se define este bit para solicitar el nombre del archivo que se va a crear. No debe utilizarse para solicitar el nombre de un archivo existente con el fin de abrirlo. En este último caso, si el usuario introduce el nombre de un archivo que no existe, el cuadro de diálogo muestra un mensaje de error en la parte inferior. Si se define este bit y el usuario elige un archivo existente, AutoCAD presenta una casilla de advertencia y ofrece la posibilidad de seguir o cancelar la operación. Valor del indicador = 2 (bit 1:Desactiva el botón Teclearlo. Este bit se define si se llama a la función GETFILED mientras otro cuadro de diálogo está activo (en caso contrario, obliga a cerrar el otro cuadro de diálogo.si no se define este bit, se activa el botón Teclearlo. Cuando el usuario selecciona el botón, el cuadro de diálogo desaparece y GETFILED devuelve 1. Valor del indicador = 4 (bit 2:Permite al usuario escribir una extensión de nombre de archivo arbitraria o bien no escribir ninguna. Si no se define este bit, GETFILED sólo acepta la extensión especificada en el argumento ext, y si el usuario no la escribe en la casilla de texto File, la añade al nombre del archivo. Valor del indicador = 8 (bit 3: Si se define este bit y no se define el bit 0, GETFILED inicia en la biblioteca una búsqueda del nombre de archivo escrito. Si encuentra el archivo y el directorio en el orden de búsqueda en la estructura, descompone el camino y sólo devuelve el nombre del archivo. Esto no ocurre si los archivos que se buscan tienen el mismo nombre pero se encuentran en distintos directorios. Si no se define este bit, GETFILED devuelve el nombre completo del archivo, incluido el nombre del camino. Se define este bit si se utiliza el cuadro de diálogo para abrir un archivo existente cuyo nombre desea guardar en el dibujo (u otra base de datos. Si el usuario especifica un nombre de archivo en el cuadro de diálogo, GETFILED devuelve una cadena que corresponde al nombre del archivo, en caso contrario, devuelve nil. La siguiente llamada a getfiled presenta el cuadro de diálogo Seleccionar un archivo Lisp: (getfiled "Seleccionar un archivo Lisp" "/acadr14/support/" "lsp" 8 La función GETFILED muestra un cuadro de diálogo con una lista que incluye todos los archivos con la extensión especificada que están disponibles. Puede utilizar este cuadro de diálogo para buscar por los distintos directorios y unidades, seleccionar un archivo existente o especificar el nombre de uno nuevo. 36

Tema 2. Tipos predefinidos

Tema 2. Tipos predefinidos Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 2. Tipos predefinidos 2.1 Tipos simples predefinidos El tipo Bool El tipo Int El tipo Integer

Más detalles

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones

Más detalles

Programación Declarativa

Programación Declarativa Programación Declarativa Tema 2: LISP (SCHEME) 2 Tema 2: LISP (SCHEME) Introducción Representación de Datos Definición de Funciones Predicados Listas 3 Introducción (I) SCHEME es un dialecto de LISP (LISt

Más detalles

Indice DISEÑO ASISTIDO POR ORDENADOR TEMA: SELECCIÓN DE OBJETOS

Indice DISEÑO ASISTIDO POR ORDENADOR TEMA: SELECCIÓN DE OBJETOS TEMA: DE OBJETOS Designe objetos: con este mensaje comienzan todos los comandos para modificar entidades gráficas. Los objetos designados pasarán a formar parte de un conjunto de selección. Un conjunto

Más detalles

GUÍA BÁSICA DE SCHEME v.4

GUÍA BÁSICA DE SCHEME v.4 Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los

Más detalles

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba Programación Declarativa Ingeniería Informática Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2017 2018 Práctica número 1.- Introducción

Más detalles

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba Programación Declarativa Ingeniería Informática Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2016 2017 Práctica número 1.- Introducción

Más detalles

Un calculadora avanzada... y algo más!

Un calculadora avanzada... y algo más! INFORMÁTICA, GRUPO D Un calculadora avanzada... y algo más! Vamos a familiarizarnos con el entorno interactivo de Python. Vamos a construir expresiones aritméticas y a guardar los resultados en variables

Más detalles

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Clase teórica 2 Algoritmos en C Página 1 de 6 TIPOS DE DATOS Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Por el momento nuestro

Más detalles

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Escuela Politécnica Superior Universidad

Más detalles

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down). PLANTEMAIENTO DEL PROBLEMA Identificación de entradas y salidas Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigüedades, que conducen a la resolución de un problema dado y

Más detalles

Resumen de LISP. Javier Gil Julio, 2011

Resumen de LISP. Javier Gil Julio, 2011 Resumen de LISP Javier Gil Julio, 2011 ; conceptos fundamentales de Lisp ; sintaxis basica (+ 2 3) (* 2 (+ 4 6)) (+ 2/7 7/67) (/ #c(2 3) 6/4) ; operadores matematicos basicos (+ 2 3) (- 8 6) (* 2/7 6/5)

Más detalles

Lic. Edinson Cuero Ramos Página 1

Lic. Edinson Cuero Ramos Página 1 INTRODUCCIÓN A LA PROGRAMACIÓN LOS DATOS Y LAS OPERACIONES BÁSICAS LOS DATOS. Un dato es la unidad básica de información y es el objeto sobre el que opera un computador. Los tipos de datos que manipulan

Más detalles

Programación Funcional en LISP Lógica para Ciencias de la Computación

Programación Funcional en LISP Lógica para Ciencias de la Computación Programación Funcional en LISP Lógica para Ciencias de la Computación Primer Cuatrimestre de 2009 Material Adicional Introducción A lo largo de la carrera estudiaremos diversos paradigmas de programación:

Más detalles

Programación en Lenguaje C

Programación en Lenguaje C Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Manual de Lisp para IACS (Curso 91 92)

Manual de Lisp para IACS (Curso 91 92) Dpto. de Álgebra, Computación, Geometría y Topología Universidad de Sevilla Manual de Lisp para IACS (Curso 91 92) Sevilla, 1992 Contenido 1 Introducción 1 1.1 Introducción............................

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo

Más detalles

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2016-2017

Más detalles

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda

Más detalles

Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript - Programación

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

Tipos de datos y Operadores Básicos

Tipos de datos y Operadores Básicos Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Universidad Rafael Urdaneta Escuela de Ingeniería de Computación Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Asignación

Más detalles

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Programación Web Tema 3.2 Java Script Estructura del Lenguaje Miguel Ángel Manso Emerson Castañeda Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Contenido Variables Operadores Estructuras

Más detalles

TP 3: intérprete de C en LISP (alias máquina virtual de C en LISP )

TP 3: intérprete de C en LISP (alias máquina virtual de C en LISP ) TP 3: intérprete de C en LISP (alias máquina virtual de C en LISP Introducción Se deberá programar un intérprete de C en LISP. El código que ingresará al intérprete tendrá ciertas restricciones: Se utilizará

Más detalles

PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1

PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1 PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1 Interprete 1. Realizar una suma Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP más elementales.

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

PROGRAMACION PARAMETRICA LENGUAJE DE ALTO NIVEL. MILTRONICS CNC MACHINES Control Centurion 7. Ing. Roberto Spicacci

PROGRAMACION PARAMETRICA LENGUAJE DE ALTO NIVEL. MILTRONICS CNC MACHINES Control Centurion 7. Ing. Roberto Spicacci PROGRAMACION PARAMETRICA LENGUAJE DE ALTO NIVEL MILTRONICS CNC MACHINES Control Centurion 7 Ing. Roberto Spicacci GENERALIDADES En la programación paramétrica se pueden utilizar ECUACIONES para definir

Más detalles

Tipos de datos y operadores en C++

Tipos de datos y operadores en C++ Tipos de datos y operadores en C++ El tipo de dato determina la naturaleza del valor que puede tomar una variable. Un tipo de dato define un dominio de valores y las operaciones que se pueden realizar

Más detalles

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2013-2014

Más detalles

NOCIONES BASICAS DE Miguel Iván Bobadilla

NOCIONES BASICAS DE Miguel Iván Bobadilla NOCIONES BASICAS DE Miguel Iván Bobadilla ~ 1 ~ Indice Introducción... 4 Sintaxis de Python... 6 Datos... 6 Tipos de datos básicos... 7 Asignando valores, variables y constantes... 8 Salida de datos...

Más detalles

Datos Elementales y formato de un programa en Java

Datos Elementales y formato de un programa en Java Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,

Más detalles

Características de JavaScript

Características de JavaScript Características de JavaScript Qué es JavaScript? o Lenguaje de programación interpretado utilizado fundamentalmente para dotar de comportamiento dinámico a las páginas web. o Cualquier navegador web actual

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

4.7 Operaciones sobre Objetos en Scheme

4.7 Operaciones sobre Objetos en Scheme 4.7 Operaciones sobre Objetos en Scheme Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores Ejemplos de Equivalencia (eq? a a) ;=> #t (eq? 3.1 3.1) ;=> () (eq? (cons a

Más detalles

1.2 Uso del software como una calculadora. Iniciación a los operadores y almacenamiento de datos.

1.2 Uso del software como una calculadora. Iniciación a los operadores y almacenamiento de datos. 1.2 Uso del software como una calculadora. Iniciación a los operadores y almacenamiento de datos. Iniciación al manejo de datos Empezaremos a usar el software en modo calculadora, utilizando la ventana

Más detalles

Tema 2. Concepto de Algoritmo

Tema 2. Concepto de Algoritmo Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos

Más detalles

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA CONTENIDOS: 1. TIPOS DE DATOS 2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIICADORES COMO LOCALIDADES DE MEMORIA OBJETIO EDUCACIONAL: El alumno conocerá las reglas para cambiar fórmulas matemáticas

Más detalles

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores Tipos De Datos Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como b, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de

Más detalles

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales.

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales. Tema 1: Números Reales 1.1 Conjunto de los números Naturales (N): 0, 1, 2, 3. Números positivos sin decimales. Sirven para contar. Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos

Más detalles

4.7 Operaciones sobre Objetos en Scheme. Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores

4.7 Operaciones sobre Objetos en Scheme. Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores 4.7 Operaciones sobre Objetos en Scheme Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores a) Equivalencias (eq? obj 1 obj 2 ) retorno: #t si son idénticos (eqv? obj 1

Más detalles

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. 1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.

Más detalles

Conocimientos previos

Conocimientos previos Ficha de aprendizaje Tema: Datos, variables y Operaciones n 6 Logro Reconoce las partes de un programa y comprende su estructura. Reconoce la diferencia entre los tipos de datos. Asigna datos a las variables

Más detalles

Programación en java. Estructuras algorítmicas

Programación en java. Estructuras algorítmicas Programación en java Estructuras algorítmicas Estructuras algoritmicas 1. Conceptos basicos 1. Dato 2. Tipos de datos 3. Operadores 2. dsd Conceptos Basicos DATO: se considera una representación simbólica

Más detalles

Informática General Cátedra: Valeria Drelichman Pedro Paleo Leonardo Nadel Norma Morales

Informática General Cátedra: Valeria Drelichman Pedro Paleo Leonardo Nadel Norma Morales Informática General 2018 Cátedra: Valeria Drelichman Pedro Paleo Leonardo Nadel Norma Morales Qué es JavaScript? Se trata de un lenguaje de tipo script compacto, basado en objetos y guiado por eventos

Más detalles

Sintaxis de los aspectos generales de un lenguaje de programación

Sintaxis de los aspectos generales de un lenguaje de programación Sintaxis de los aspectos generales de un lenguaje de programación por Iván Cruz Un lenguaje de programación cuenta con una estructura y sintaxis que debe ser utilizada exactamente como se indique para

Más detalles

Diagrama de una computadora. Unidad Central de procesamiento (CPU)

Diagrama de una computadora. Unidad Central de procesamiento (CPU) 2008 FORTRAN 90/95 Diagrama de una computadora Memoria principal Memoria secundaria Memoria interna (registros) Periféricos de entrada Unidad de control Periféricos de salida Unidad aritmética y lógica

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE. 12-13 PRACTICA 1. INTRODUCCIÓN A MATLAB Qué es MATLAB? MATLAB es la abreviatura de MATrix LABoratory (laboratorio de matrices). Se trata de un software matemático

Más detalles

. Manual General para el Uso del Software Graphmatica.

. Manual General para el Uso del Software Graphmatica. 1. Manual General para el Uso del Software Graphmatica. http://www.graphmatica.com/espanol/grmat0n.html Graphmatica es un software de uso libre muy fácil de utilizar y que puede ser descargado de Internet

Más detalles

El lenguaje LISP. LISP is an easy language to learn (Henry et.al., 1984) Introducción

El lenguaje LISP. LISP is an easy language to learn (Henry et.al., 1984) Introducción El lenguaje LISP LISP is an easy language to learn (Henry et.al., 1984) 1 Introducción Origen: 1958 John McCarthy, pionero en IA, empezó a trabajar con la primera implementación de Lisp en 1958.»McCarthy,

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

Laboratorio de Arquitectura de Redes. Operadores y expresiones en lenguaje C

Laboratorio de Arquitectura de Redes. Operadores y expresiones en lenguaje C Laboratorio de Arquitectura de Redes Operadores y expresiones en lenguaje C Operadores y expresiones en lenguaje C Expresiones numéricas y operadores Operadores aritméticos Operadores lógicos y de relación

Más detalles

Laboratorio de cómputo de ingeniería CONTENIDO PREÁMBULO 5

Laboratorio de cómputo de ingeniería CONTENIDO PREÁMBULO 5 CONTENIDO PREÁMBULO 5 ESTRUCTURA GENERAL DEL AUTOCAD R12 5 ESTRUCTURA DE DIRECTORIOS 6 REQUERIMIENTOS DE AUTOLISP 7 OBJETIVOS 7 INTRODUCCIÓN 7 ALCANCES Y LIMITACIONES DEL AUTOLISP 8 TIPO DE VARIABLES EN

Más detalles

El lenguaje LISP. LISP is an easy language to learn

El lenguaje LISP. LISP is an easy language to learn El lenguaje LISP LISP is an easy language to learn (Henry et.al., 1984) 1 Origen: 1958 Introducción John McCarthy, pionero en IA, empezó a trabajar con la primera implementación de Lisp en 1958.» McCarthy,

Más detalles

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX PROCESADORES DE LENGUAJE Ingeniería Informática Especialidad de Computación Tercer curso Segundo cuatrimestre Departamento de Informática y Análisis Numérico Escuela Politécnica Superior de Córdoba Universidad

Más detalles

PROGRAMACIÓN DECLARATIVA

PROGRAMACIÓN DECLARATIVA UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA CUARTO CURSO PRIMER CUATRIMESTRE Tema 5.-

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Operadores y expresiones en Operadores y expresiones en Expresiones numéricas y operadores Operadores aritméticos Operadores lógicos y de relación

Más detalles

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas El computador puede realizar cálculos además de mostrar datos por pantalla.

Más detalles

Curso de Programación Avanzada en C

Curso de Programación Avanzada en C Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados

Más detalles

Introducción a Python. Cecilia Manzino

Introducción a Python. Cecilia Manzino Características del lenguaje Es un lenguaje de programación multiparadigma, soporta la programación orientada a objetos, imperativa y, en menor medida, funcional. Es un lenguaje multiplataforma, puede

Más detalles

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,

Más detalles

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: EMPEZAR DE CERO A PROGRAMAR EN lenguaje C Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C" Autor: Carlos Javier Pes Rivas (correo@carlospes.com) Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C 1 OBJETIVOS Aprender a

Más detalles

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo

Más detalles

Curso de programación en Lisp

Curso de programación en Lisp Dpto. de Álgebra, Computación, Geometría y Topología Universidad de Sevilla Curso de programación en Lisp José A. Alonso Jiménez (jalonso@us.es) Sevilla, 1991 Contenido 1 El cálculo aritmético 1 1.1 Los

Más detalles

JavaScript: Lenguaje de programación

JavaScript: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal: 45, -43 Con base octal: 043, -054 Con

Más detalles

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial

Más detalles

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani Informática JavaScript: Lenguaje de programación Fco J. Martín Mateos Carmen Graciani Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal:

Más detalles

TEMA 1 LOS NÚMEROS REALES

TEMA 1 LOS NÚMEROS REALES TEMA 1 LOS NÚMEROS REALES 1.1 LOS NÚMEROS REALES.-LA RECTA REAL Los NÚMEROS RACIONALES: Se caracterizan porque pueden expresarse: En forma de fracción, es decir, como cociente b a de dos números enteros:

Más detalles

Curso de Lisp con Golden Common Lisp

Curso de Lisp con Golden Common Lisp Curso de Lisp con Golden Common Lisp Dpto. de José A. Alonso Álgebra, Computación, Geometría y Topología Universidad de Sevilla Sevilla, 1990 Contenido 1 El cálculo aritmético 1 1.1 Los números y sus operaciones..................

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Tema: Entorno a C# y Estructuras Secuenciales.

Tema: Entorno a C# y Estructuras Secuenciales. Tema: Entorno a C# y Estructuras Secuenciales. Programación I, Guía 3 1 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos Utilizar el entorno de programación

Más detalles

Tipos de Datos en C. Palabras reservadas en C

Tipos de Datos en C. Palabras reservadas en C Tipos de Datos en C Tipo Tamaño de bits Rango char 8-128 a 127 unsigned char 8 0 a 255 signed char 8-128 a 127 int 16 32768 a 32767 unsigned int 16 0 a 65535 signed int 16 Igual que int short int 16 Igual

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

Más detalles

INICIACIÓN A LA PROGRAMACIÓN II

INICIACIÓN A LA PROGRAMACIÓN II INICIACIÓN A LA PROGRAMACIÓN II 1. Caracteres... 2 2. Identificadores... 4 3. Palabras clave o reservadas... 5 4 Variables y constantes. Datos... 6 5 Arrays... 8 6. Comentarios... 9 7. Expresiones... 11

Más detalles

Estructuras Secuenciales. Funciones de Control. Junio 2007

Estructuras Secuenciales. Funciones de Control. Junio 2007 Estructuras Secuenciales. Funciones de Control. Junio 2007 1. Escribir una función VLISP FJK (N P / ) que dibuje un flip-flop JK como se muestra en la figura. Las dimensiones están descritas también en

Más detalles

Objetivos. El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes.

Objetivos. El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes. Objetivos El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes. Al final de esta práctica el alumno podrá: 1. Utilizar las herramientas para

Más detalles

Tema: Entorno a C# y Estructuras Secuenciales.

Tema: Entorno a C# y Estructuras Secuenciales. 2 Programación I Programación I. Guía 3 3 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Tema: Entorno a C# y Estructuras Secuenciales. Objetivos Utilizar el entorno

Más detalles

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación. Capitulo 3 Introducción a las aplicaciones de C# Resumen: Item using System; espacios de nombres: Las palabras clave estilo de mayúsculas/minúsculas Pascal public class Bienvenido1 Definición Es una directiva

Más detalles

Capítulo 2: Introducción al lenguaje.

Capítulo 2: Introducción al lenguaje. Capítulo 2: Introducción al lenguaje. PHP es un lenguaje no posicional, por lo que no importa la columna en la cual se comience a escribir el código. Tampoco influye sobre el código la cantidad de saltos

Más detalles

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Expresiones Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: a + (b + 3) / c Cada expresión toma un valor que

Más detalles

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv Introducción al lenguaje C Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Instrucciones del pre-procesador procesador 4. Tipos de datos

Más detalles

LENGUAJE. Tema 2 Elementos de un programa

LENGUAJE. Tema 2 Elementos de un programa LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar

Más detalles