LECCION 1. ATOMOS Y LISTAS.
|
|
- Ángel Quintero Salinas
- hace 7 años
- Vistas:
Transcripción
1 LECCION 1. ATOMOS Y LISTAS. En la lección 1 se introducen las construcciones básicas del lenguaje LISP. Al finalizar esta lección, el alumno debe ser capaz de -escribir cualquier expresión numérica en notación LISP (ejercicios 1 y 2). -escudriñar listas y construirlas a partir de elementos cualesquiera de otras listas (ejercicios 4, 5 y 6). -evaluar expresiones (ejercicios 1, 8 y 9) teniendo en cuenta las posibles apariciones de QUOTE (ejercicio 3) y EVAL (ejercicio 7). -dar significado funcional a un símbolo (ejercicios 8, 9 y 10). "Brindemos por el programador LISP, que encierra sus pensamientos en nidos de paréntesis" (Alan Perlis). Inteligencia Artificial e I.C. 2004/
2 Inteligencia Artificial e I.C. 2004/
3 R.1.1. Concepto de expresión. Evaluación de números y listas. Evaluar las siguientes expresiones: a) (+ (* 3 (- 5 3)) (/ 8 4)) b) (* (- 5 3)) c) (/ ( ) (- 5 3)) d) ((+) (* 2 (- 5 3)) (/ 8 4)) e) (2 + 2) Una expresión es una lista o un átomo. Un átomo es un símbolo o un número. Un número se puede escribir en cualquiera de las notaciones habituales (punto decimal, exponencial,...). Un símbolo se representa por un nombre, que está formado por caracteres alfanuméricos que no puedan interpretarse como un número. Algunos caracteres, como ", #, espacio no deben emplearse en el nombre de un símbolo. Sin embargo, otros como -, +, *, / pueden emplearse libremente. Por ejemplo, son símbolos PEPE, X12, *PEPE*, PE//P, JUAN, PEPE-JUAN, PE- PE_JUAN1. Una lista es una sucesión de cero o más expresiones entre paréntesis. El blanco -no la coma- es el separador de expresiones dentro de una lista. Cada una de estas expresiones se denomina elemento de la lista. Por ejemplo, son listas () (A B C) (A (B C)) cuyos elementos son respectivamente -ninguno -los tres símbolos A B C. -el símbolo A y la lista (B C). Una expresión proporcionada a LISP se puede evaluar, es decir, LISP devuelve un valor - que será otra expresión- o bien señala un "error". En estas lecciones, si E se evalúa a V escribiremos E=>V. Las expresiones que se evalúan se llaman formas. Un número se evalúa a sí mismo. Una lista se evalúa del siguiente modo: 1. El primer elemento de la lista debe ser un símbolo s cuyo significado funcional esté definido. Algunos símbolos tienen significados funcionales predefinidos; en cualquier caso, el programador puede definirlos en LISP (vd. R.1.8). El significado funcional es un objetoprocedimiento o función propiamente dicha, F. F es la función en sí, y no debe confundirse con el símbolo s. 2. Se evalúan los restantes elementos de la lista, obteniendo los valores V1,..., Vn. Si el número o tipo de los valores obtenidos no es coherente con los argumentos requeridos por F, se produce error. 3. La lista se evalúa a F(V1,..., Vn). Los signos aritméticos tienen asociados sus significados funcionales habituales. Exigen uno o más argumentos numéricos. Por tanto a) (+ (* 3 (- 5 3)) (/ 8 4)) b) (* (- 5 3)) 2 12 Inteligencia Artificial e I.C. 2004/
4 c) (/ ( ) (- 5 3)) d) Error: (+) es una lista. e) Error: 2 es un número. NOTA. Los tipos de expresiones presentados en este ejercicio constituyen lo que podemos denominar "LISP puro". Pueden resumirse en el siguiente cuadro: expresión lista átomo símbolo número En Common LISP existen además muchos otros tipos. NOTA. Common Lisp permite emplear las notaciones decimal, exponencial, binaria, hexadecimal, etc. Tanto 1. como.1 son notaciones válidas. Vd. (CLtL2, pg , ANSI 2.3.2). NOTA. El nombre de un símbolo puede contener casi cualquier carácter. Para ello se emplean los caracteres de escape \ y. Vd. (CLtL2, pg , ANSI 2.2.4). NOTA. El primer elemento de una lista que se ha de evaluar puede ser también una expresión lambda. Vd. lección 3. NOTA. El significado funcional de un símbolo s puede ser, además de un objeto-procedimiento, una macro o una forma especial. En este caso, la evaluación de la lista (s...) sigue reglas diferentes. Vd. R.1.3., etc. Inteligencia Artificial e I.C. 2004/
5 R.1.2. Funciones numéricas predefinidas. Escribir una expresión LISP que devuelva el mismo valor que las siguientes expresiones aritméticas escritas en notación habitual: a) (531 mod 3) + ( /(6-3)) 4 b) ln c) max(0, min(2,1), max(-1, 4 5)) d) (7-1) SQRT tiene como significado funcional predefinido la función raíz cuadrada. EXP tiene como significado funcional predefinido la función exponencial de base e. EXPT tiene como significado funcional predefinido la función exponencial de base cualquiera, y por ello necesita dos argumentos, el primero la base y el segundo el exponente. LOG tiene como significado funcional predefinido la función logaritmo. Si se da un solo argumento, se supone logaritmo natural. Si se da un segundo argumento, este es la base. ABS tiene como significado funcional predefinido la función valor absoluto. MOD tiene como significado funcional predefinido la función módulo. MAX tiene como significado funcional predefinido la función máximo de cualquier número de argumentos. MIN tiene como significado funcional predefinido la función mínimo de cualquier número de argumentos. 1+ tiene como significado funcional predefinido la función sucesor. 1- tiene como significado funcional predefinido la función predecesor. Para resolver el problema, hay que escribir las expresiones en notación prefija, empleando estos símbolos para representar las funciones. Por tanto las soluciones son a) (+ (MOD 531 3) (EXPT (+ 1 (* 4 3) (/ 6 (- 6 3)) (SQRT 4)))) b) (LOG (ABS (- (* 42 21) 5670))) c) (MAX 0 (MIN 2 1) (MAX )) d) (1+ (1+ (1+ (1-7)))) NOTA: Common Lisp tiene definidos los tipos numéricos entero, racional, real, doble precisión y complejo, entre otros. También un juego completo de funciones trigonométricas, hiperbólicas, trigonométricas inversas e hiperbólicas inversas. Vd. (CLtL2, cap. 12, ANSI 12). NOTA: En los símbolos, LISP no distingue mayúsculas de minúsculas (salvo que se indique explícitamente mediante el uso de caracteres de escape). De esta forma, las siguientes expresiones son idénticas a las anteriores: a) (+ (Mod 531 3) (expt (+ 1 (* 4 3) (/ 6 (- 6 3)) (sqrt 4))) b) (log (ABS (- (* 42 21) 5670))) c) (max 0 (Min 2 1) (MAX )) Escribiremos siempre las expresiones LISP en mayúsculas, tipo de letra COURIER. Inteligencia Artificial e I.C. 2004/
6 R.1.3. Evaluación de símbolos. Forma especial QUOTE. Evaluar las siguientes expresiones: a) T b) NIL c) () d) PEPE e) (QUOTE PE-PE) f) (QUOTE (PEPE1 PEPA1 MARI2)) g) 'PEPE h) '(PEPE '(PEPA MARI)) i) 'T j) (QUOTE ()) k) '7 l) '(+ 3 4) m) ('+ 3 4) NIL es un símbolo que representa la lista vacía. Esto implica que la lista vacía es tanto una lista como un símbolo. Los símbolos T y NIL se evalúan a sí mismos. Un símbolo s puede estar ligado, es decir, contener una referencia o indicación a otra expresión V. Llamamos ligadura. al par (s, V). Un símbolo s (salvo T o NIL) se evalúa al valor V al que está ligado. Posteriormente estudiaremos las formas en las que un símbolo se puede ligar; por ahora supondremos que todos los símbolos están sin ligar. Cuando queremos hacer énfasis en el uso de un símbolo en una ligadura, decimos que es una variable. Según esto, las respuestas son a) T => T b) NIL => NIL c) () => NIL d) PEPE =>... Error: PEPE sin ligar. El significado funcional de un símbolo puede ser un objeto-procedimiento o función en sentido estricto. También puede ser una macro o una forma especial. Cuando el significado funcional del primer elemento de una lista es una macro o una forma especial, la evaluación de la lista no sigue las reglas dadas en R.1.1., sino reglas propias. QUOTE es una forma especial que tiene un sólo argumento: (QUOTE expresión) El valor de (QUOTE expresión) es precisamente expresión, sin evaluar. Cuando dos expresiones expr1 y expr2 se evalúan siempre al mismo valor, emplearemos la notación expr1 == expr2 Ya que QUOTE se emplea muy frecuentemente, existe una abreviatura: (QUOTE expresión) == 'expresión El intérprete LISP deshace las abreviaturas antes de la evaluación. Según esto, las respuestas a los restantes apartados son e) (QUOTE PE-PE) => PE-PE f) (QUOTE (PEPE1 PEPA1 MARI2)) => (PEPE1 PEPA1 MARI2) g) 'PEPE => PEPE h) '(PEPE '(PEPA MARI)) => (PEPE (QUOTE (PEPA MARI))) i) 'T => T j) (QUOTE ()) => NIL k) '7 => 7 l) '(+ 3 4) => (+ 3 4) m) ('+ 3 4) =>...Error: (QUOTE +) no tiene significado funcional. NOTA. Las formas especiales forman parte de la definición del lenguaje (CLtL2, pg. 72, ANSI ). El usuario no puede definir nuevas formas especiales. Por el contrario, sí es posible definir nuevas macros. En cualquier caso, el lector puede olvidarse de la diferencia entre macros y formas especiales. Inteligencia Artificial e I.C. 2004/
7 R.1.4. Manejo elemental de listas. Evaluar las siguientes expresiones: a) (CONS (CAR '(CUQUI LOLI PEPI)) (CDR '(FALI LELI RODRI))) b) (CDR (CDR (CONS T (CDR '(PEPI))))) c) (CAR (CAR (CONS T (CDR '(PEPI))))) CAR tiene como significado funcional predefinido la siguiente función: (CAR lista) -un único argumento que debe ser una lista. -si el argumento no es NIL, el valor devuelto es el primer elemento de la lista argumento. -si el argumento es NIL, el valor devuelto por CAR es NIL. CDR tiene como significado funcional predefinido la siguiente función: (CDR lista) -un único argumento que debe ser una lista. -si el argumento no es NIL, el valor devuelto es la lista obtenida quitando el primer elemento de la lista argumento. -si el argumento es NIL, el valor devuelto por CDR es NIL. CONS tiene como significado funcional predefinido la siguiente función: (CONS expresión lista) -exactamente dos argumentos. El segundo debe ser una lista. -el valor devuelto es una lista cuyo primer elemento es el primer argumento, y cuyos restantes elementos son los del segundo argumento. Según esto, a) (CONS (CAR '(CUQUI LOLI PEPI)) (CDR '(FALI LELI RODRI))) (CUQUI LOLI PEPI) (FALI LELI RODRI) CUQUI (LELI RODRI) (CUQUI LELI RODRI) b) (CDR (CDR (CONS T (CDR '(PEPI))))) (PEPI) NIL (T) NIL NIL c) (CAR (CAR (CONS T (CDR '(PEPI))))) (PEPI) NIL (T) T Error: T no es una lista. NOTA: Existen funciones equivalentes a CAR y CDR: (CAR lista) == (FIRST lista) (CDR lista) == (REST lista) NOTA: En realidad, el segundo argumento de CONS no tiene que ser una lista. No obstante, si no lo es, el valor devuelto tampoco es una lista, sino una lista punteada; vd. (CLtL, pg , ANSI 14) y la lección 8. Inteligencia Artificial e I.C. 2004/
8 R.1.5. Más funciones para manejo de listas. Evaluar las siguientes expresiones: a) (CONS (CDAR '((CONS BUENOS DIAS))) (CADDR '(BUENAS B (TARDES NOCHES)))) b) (LIST (CONS '(CUQUI) '(LOLI)) (APPEND '(CUQUI) '(LOLI)) (LIST '(CUQUI) '(LOLI))) c) (LENGTH (APPEND '(CUQUI LOLI) '(LOLI CUQUI) '((CUQUI LOLI)))) a) Si a1,...an son caracteres A ó D y n<5, entonces está predefinido que (Ca1a2...anR lista) == (Ca1R (Ca2R... (CanR lista)...)) Por tanto (CONS (CDAR '((CONS BUENOS DIAS))) (CADDR '(BUENAS B (TARDES NOCHES)))) ((CONS BUENOS DIAS)) (BUENAS B (TARDES NOCHES)) (CONS BUENOS DIAS) (B (TARDES NOCHES)) (BUENOS DIAS) ((TARDES NOCHES)) (TARDES NOCHES) ((BUENOS DIAS) TARDES NOCHES) b) LIST tiene como significado funcional predefinido la siguiente función: (LIST [expresión] * ) -un número indeterminado de argumentos. -si no hay ningún argumento, el valor devuelto es NIL. -si hay algún argumento, el valor devuelto es una lista cuyos elementos son los argumentos. APPEND tiene como significado funcional predefinido la siguiente función: (APPEND [lista] * ) -un número indeterminado de argumentos, que deben ser listas. -si no hay ningún argumento, el valor devuelto es NIL. -si hay algún argumento, el valor devuelto es una lista cuyos elementos son los elementos de los argumentos. Por tanto LIST arg1: CONS arg1: (CUQUI) arg2: (LOLI) ((CUQUI) LOLI) arg2: APPEND arg1: (CUQUI) arg2: (LOLI) (CUQUI LOLI) arg3: LIST arg1: (CUQUI) arg2: (LOLI) ((CUQUI) (LOLI)) => (((CUQUI) LOLI) (CUQUI LOLI) ((CUQUI) (LOLI))) Inteligencia Artificial e I.C. 2004/
9 c) LENGTH tiene como significado funcional predefinido la siguiente función: -un único argumento, que debe ser una lista. -el valor devuelto es la longitud del argumento, es decir, el número de elementos de la lista. Por tanto LENGTH arg: APPEND arg1: (CUQUI LOLI) arg2: (LOLI CUQUI) arg3: ((CUQUI LOLI)) (CUQUI LOLI LOLI CUQUI (CUQUI LOLI)) => 5 NOTA: Existen funciones equivalentes a algunas de las anteriores: (CADR lista) == (SECOND lista) (CADDR lista) == (THIRD lista) NOTA: En realidad, el último argumento de APPEND no tiene que ser una lista. No obstante, si no lo es, el valor devuelto tampoco es una lista, sino una lista punteada; vd. (CLtL2 90, pg , ANSI 14) y la lección 8. Inteligencia Artificial e I.C. 2004/
10 R.1.6. Manejo de listas. Relaciones notables. Discutir en qué condiciones son válidas las siguientes afirmaciones: a) (CONS (CAR 'lista) (CDR 'lista)) => lista b) (CAR (CONS 'expresión 'lista)) => expresión c) (CDR (CONS 'expresión 'lista)) => lista d) (CONS 'expresión1 (LIST 'expresión2)) == (LIST 'expresión1 'expresión2) e) (CONS 'expresión1 (LIST NIL)) == (APPEND (LIST 'expresión1) NIL) Supongamos que lista es realmente una lista. a) Si lista no es NIL, CAR devolverá su primer elemento, CDR su resto, y CONS aplicado a estos argumentos devolverá la lista original. Sin embargo, si la lista es NIL, CAR devolverá NIL, CDR devolverá NIL, y CONS aplicado a NIL NIL devolverá (NIL). Por tanto, la afirmación es válida únicamente si lista es distinta de NIL. b y c) Si CONS se ha evaluado, el valor devuelto es una lista, cuyo primer elemento es expresión y cuyo resto es lista. Por tanto, CAR devolverá expresión y CDR lista. Las afirmaciones son válidas. d) Ambas expresiones son siempre equivalentes, ya que ambas se evalúan a listas de dos elementos cuyo primer elemento es expresión1 y cuyo segundo elemento es expresión2. e) Ambas expresiones no son nunca equivalentes, ya que la primera se evalúa siempre a una lista de dos elementos y la segunda a una lista de sólo un elemento. Por ejemplo, (CONS 'A (LIST NIL)) => (A NIL) (APPEND (LIST 'A) NIL) => (A) Inteligencia Artificial e I.C. 2004/
11 R.1.7. La función EVAL. Evaluar las siguientes expresiones: a) (EVAL (APPEND (CDDDR '(- + * /)) (LIST (EVAL '(+ 3 5))) (CONS 4 NIL))) b) (EVAL (QUOTE (QUOTE (CAR (A B))))) c) (EVAL (QUOTE (CAR (QUOTE (A B))))) d) (EVAL (CAR (QUOTE (QUOTE (A B))))) e) (CAR (EVAL (QUOTE (QUOTE (A B))))) EVAL tiene como significado funcional predefinido la siguiente función: (EVAL expresión) -un único argumento. -el valor devuelto es el valor resultante de evaluar el argumento. De esta forma, (EVAL expresión) realiza dos evaluaciones de expresión: la primera, debida al ciclo normal de evaluación; la segunda, debida al uso explícito de EVAL. Por tanto a) EVAL arg: APPEND arg1: CDDDR arg: (- + * /) (/) arg2: LIST arg: EVAL arg: (+ 3 5) 8 (8) arg3: CONS arg1: 4 arg2: NIL (4) (/ 8 4) => 2 b) (EVAL (QUOTE (QUOTE (CAR (A B))))) => (CAR (A B)) c) (EVAL (QUOTE (CAR (QUOTE (A B))))) => A d) (EVAL (CAR (QUOTE (QUOTE (A B))))) => error: QUOTE sin ligar e) (CAR (EVAL (QUOTE (QUOTE (A B))))) => A NOTA: No es buen estilo de programación emplear la forma EVAL. Además, EVAL no recupera los valores de las variables ligadas léxicamente. Por todo ello, "en la práctica, la principal utilidad de EVAL es explicar la semántica del lenguaje. EVAL y SET no se suelen usar realmente en los programas, así que si descubres que los estás empleando -y no estás implementando un intérprete LISP- es probable que estés haciendo algo mal" (Charniak 87, pg. 110). Inteligencia Artificial e I.C. 2004/
12 R.1.8. Definición de significados funcionales de símbolos. Concepto de entorno. Evaluar las siguientes expresiones en el orden dado, indicando los efectos laterales: a) (DEFUN CUADRADO (N) (* N N)) (CUADRADO 7) (CUADRADO (CUADRADO 7)) b) (DEFUN RAICES (A B C) (LIST (/ (+ (- B) (SQRT (- (* B B) (* 4 A C)))) (* 2 A)) (/ (- (- B) (SQRT (- (* B B) (* 4 A C)))) (* 2 A)))) (RAICES 1 0-1) RAICES DEFUN tiene el siguiente significado funcional predefinido: (DEFUN símbolo lista-lambda cuerpo) -DEFUN es una macro. Ello quiere decir que no evalúa sus argumentos en la forma explicada en R.1.1. DEFUN toma sus argumentos literalmente. -el primer argumento es un símbolo. -el segundo argumento es una lista-lambda. Por ahora, consideraremos que una lista-lambda es una lista de cero o más símbolos que se denominan parámetros. -cuerpo está formado por un número cualquiera de expresiones. -el valor devuelto es símbolo. -Se entiende por efecto lateral cualquier consecuencia de la evaluación de una expresión que no sea la simple determinación del valor resultante. DEFUN tiene el siguiente efecto lateral: -se crea un objeto-procedimiento F a partir del cuerpo -se establece F como el significado funcional de símbolo. Concretamente, una vez ejecutado (DEFUN símbolo lista-lambda cuerpo), cuando se evalúa (símbolo [argumento] * ) ocurre lo siguiente: -Se crea un entorno. Un entorno es un conjunto de ligaduras. Los símbolos ligados son precisamente los parámetros de la función, y sus valores los argumentos que se pasan. Si el número de argumentos no coincide con el de parámetros, se produce un error. -En este entorno se evalúan las expresiones del cuerpo. -El valor devuelto por la función es el de la última expresión evaluada. Más adelante se explicarán aspectos adicionales de los entornos. Por tanto a) (DEFUN CUADRADO (N) (* N N)) => CUADRADO y como efecto lateral, CUADRADO tiene como significado funcional "la función de n que devuelve el cuadrado de n". Representemos los entornos por rectángulos en cuyo interior figuran las ligaduras, y adosemos las expresiones a los entornos donde se evalúan. Entonces (CUADRADO 7) == N<-7 (* N N) => 49 (CUADRADO (CUADRADO 7)) == N<-? (* N N) Para determinar el valor al que se liga N se realiza otra llamada a CUADRADO N<-7 (* N N) => 49 Por tanto Inteligencia Artificial e I.C. 2004/
13 N<-49 (* N N) => 2401 b) (DEFUN RAICES (A B C) (LIST (/ (+ (- B) (SQRT (- (* B B) (* 4 A C)))) (* 2 A)) (/ (- (- B) (SQRT (- (* B B) (* 4 A C)))) (* 2 A)))) => RAICES y como efecto lateral, RAICES tiene el significado funcional "la función de a, b y c que devuelve la lista formada por las dos raíces de la ecuación ax 2 +bx+c=0". Entonces (RAICES 1 0-1) == A<- 1 B<- 0 C<- -1 (LIST (/ (+ (- B) (SQRT (- (* B B) (* 4 A C))))(* 2 A)) (/ (- (- B) (SQRT (- (* B B) (* 4 A C))))(* 2 A)) ) => (1-1) Por otra parte RAICES => error: RAICES sin ligar En CommonLisp son independientes el significado funcional y la ligadura del símbolo: los valores establecidos para la una no afectan a la otra. Por tanto, el significado funcional establecido para RAICES no es su ligadura y al intentar evaluar el símbolo RAICES se produce un error. Podemos visualizar la situación según el esquema siguiente: significado funcional "la función de a, b y c que devuelve la lista formada por las dos raíces de la ecuación ax 2 +bx+c=0" RAICES ligadura????? Inteligencia Artificial e I.C. 2004/
14 R.1.9. Evaluación de funciones definidas por el usuario. Supuestas las definiciones de R.1.8, evaluar las siguientes expresiones en el orden dado, indicando los efectos laterales que se producen: a) (DEFUN CUADRADO (N) (+ N N)) (CUADRADO 7) b) (DEFUN LIO2 (L) (LIST (LIO1 L L) (CAR L))) (DEFUN LIO1 (L1 L2) (LIST (CAR L1) (CAR L2))) (LIO2 '(DICEN DE UN SABIO)) c) (DEFUN LIO3 (L) (LIO4 (CONS 'A L))) (DEFUN LIO4 (M) (APPEND L M)) (LIO3 '(VECES)) d) (DEFUN KK1 (N) 27) (KK1 PEPE) a) (DEFUN CUADRADO (N) (+ N N)) => CUADRADO y como efecto lateral, CUADRADO tiene el significado funcional "la función de n que devuelve el duplo de n". Nótese que desaparece el significado funcional anteriormente asignado a CUADRADO. Entonces (CUADRADO 7) => 14 b) (DEFUN LIO2 (L) (LIST (LIO1 L L) (CAR L))) => LIO2 y como efecto lateral, LIO2 tiene el significado funcional "la función de L que devuelve una lista formada por lio1(l, L) y car(l)". (DEFUN LIO1 (L1 L2) (LIST (CAR L1) (CAR L2))) => LIO1 y como efecto lateral, LIO1 tiene el significado funcional "la función de L1 y L2 que devuelve una lista con los primeros elementos de L1 y L2". Entonces (LIO2 '(DICEN DE UN SABIO)) == L<-(DICEN DE UN SABIO) (LIST (LIO1 L L) (CAR L)) La evaluación del primer argumento de LIST produce una llamada a LIO1: L1<-(DICEN DE UN SABIO) L2<-(DICEN DE UN SABIO) (LIST (CAR L1) (CAR L2)) => (DICEN DICEN) y por tanto L<-(DICEN DE UN SABIO) (LIST (LIO1 L L) (CAR L)) => ((DICEN DICEN) DICEN) c) (DEFUN LIO3 (L) (LIO4 (CONS 'A L))) => LIO3 y como efecto lateral, LIO3 pasa ahora a tener el significado funcional "la función de L que CONSa el símbolo A y L". (DEFUN LIO4 (M) (APPEND L M)) => LIO4 y como efecto lateral, LIO4 pasa ahora a tener el significado funcional "la función de M que AP- PENDa L y M". Pero, quién es L en esta definición? Veámoslo: (LIO3 '(VECES)) => Error: L sin ligar. Sigamos paso a paso esta última evaluación: Inteligencia Artificial e I.C. 2004/
15 (LIO3 '(VECES)) == Entorno 1 L<-(VECES) (LIO4 (CONS 'A L)) == Entorno 2 M<-(A VECES) (APPEND L M) => Error: L sin ligar. Nótese que el entorno 2 se ha creado independientemente del entorno 1: las ligaduras de 1 no tienen efecto en 2 y, por tanto, L no está ligado a (VECES). En general, la creación de entornos se rige por la regla siguiente: si al evaluar la expresión E1 resulta necesario evaluar una subexpresión E2, el entorno de evaluación de E2 es independiente del entorno de evaluación de E1. Esta regla se denomina regla de ámbito léxico. d) (DEFUN KK1 (N) 27) => KK1 (KK1 PEPE) == => Error: PEPE sin ligar. Siguiendo la regla de evaluación dada en R.1.1, se intenta evaluar el segundo elemento de la lista, que es un símbolo sin ligar; por tanto, se produce y señala este error. Sin embargo, si LISP fuera suficientemente astuto, habría razonado así: (KK1 PEPE) == la función que siempre devuelve 27, aplicada a la ligadura de PEPE => 27 pues es claro que no resulta necesario calcular el valor del argumento de KK1, ya que es irrelevante para calcular el valor que se debe devolver. El orden de evaluación enunciado en R.1.1. es el que sigue LISP y se llama orden aplicativo, de llamada por valores o call-by-value. El orden de evaluación sugerido ahora -que LISP no sigue- se llama orden normal, de llamada por necesidad o call-by-need. Inteligencia Artificial e I.C. 2004/
16 R Primeros ejercicios de diseño de funciones. Escribir en LISP las definiciones de las siguientes funciones: a)la función de L que devuelve la lista formada a partir de L poniendo su tercer elemento en primer lugar. b)la función de L (lista) y a (átomo) que devuelve la lista formada sustituyendo el tercer elemento de L por a. c)la función que da el determinante de una matriz de 2x2. Supóngase que la matriz está representada como una lista de listas ((a11 a12) (a21 a22)). a) El tercer elemento de L es (CADDR L) Sus dos primeros elementos son (CAR L)y(CADR L) La lista de los restantes elementos es (CDDDR L) Llamemos SUBIR-TERCERO a la función. La definición pedida será (DEFUN SUBIR-TERCERO (L) (CONS (CADDR L) (CONS (CAR L) (CONS (CADR L) (CDDDR L))))) b) Llamemos SUST-TERCERO a la función. Análogamente (DEFUN SUST-TERCERO (A L) (CONS (CAR L) (CONS (CADR L) (CONS A (CDDDR L))))) c) Llamemos DET a la función. (DEFUN DET (M) (- (* (CAAR M) (CADADR M)) (* (CADAR M) (CAADR M)))) Inteligencia Artificial e I.C. 2004/
17 EJERCICIOS PROPUESTOS. P.1.1. Evaluar las siguientes expresiones: a) (* (/ (+ 3 3) (- 4 4)) (* 0 9)) b) (SQRT (EXPT (+ 1 2) 6)) c) (SQRT (- 0 (EXPT (+ 1 2) 6))) d) (EXPT 2 (EXPT 2 (EXPT 2 (EXPT 2 2)))) e) (EXPT (MOD 5 3) (ABS (- 5 7))) f) (LOG (EXP ( ))) P.1.2. Evaluar las siguientes expresiones: a) (QUOTE (NIL 'NIL T 'T)) b) (QUOTE (QUOTE (BUENOS DIAS))) c) ('+ '1 '(* 3 2)) d) '('+ '1 '(* 3 2)) e) '(+ 1 (* 3 2)) f) (+ '1 '(* 3 2)) g) (+ '1 (* 3 '2)) P.1.3. Estudiar cuáles de las siguientes expresiones son equivalentes: a) (CONS 5 (T NIL)) b) (CONS 5 '(T NIL)) c) (CDDR (CONS T (CONS NIL (CONS 5 (CONS T (CONS NIL NIL)))))) d) (CONS 5 (LIST T NIL)) e) (CONS 5 (APPEND (LIST T) (LIST NIL))) f) (APPEND (CONS 5 NIL) (LIST 'T) '(())) g) (LIST (CADR '(3 5 7)) (CDAR '((NIL T))) (CDDDR '(NIL T))) P.1.4. Estudiar cuáles de las siguientes expresiones son equivalentes: a) (EVAL ''(BUENOS DIAS)) b) (EVAL (QUOTE (BUENOS DIAS))) c) (QUOTE (EVAL (BUENOS DIAS))) d) (EVAL (QUOTE ('BUENOS 'DIAS))) e) (EVAL (QUOTE (EVAL (QUOTE '(BUENOS DIAS))))) P.1.5. Evaluar las siguientes expresiones: a) (CONS (LENGTH '( )) (LIST ( ) '( ))) b) (LENGTH (CONS ( ) (APPEND '( ) NIL))) c) (LIST (LENGTH 'PEPE) '(JUAN MARI)) P.1.6. Sean dos listas L1, L2. Empleando únicamente CONS y NIL, dar expresiones equivalentes a a) (LIST L1 NIL) b) (LIST L1 L2) c) (APPEND NIL L1 NIL) P.1.7. Sean las definiciones LISP siguientes: (DEFUN F1 (N) (/ (+ N 1) N)) (DEFUN F2 (N) (/ N (+ N 2))) (DEFUN F3 (N) (+ (F1 N) (F2 N))) Evaluar (F3 (F2 (F1 2))) indicando claramente las ligaduras que se establecen para el símbolo N. P.1.8. Definir en LISP las siguientes funciones: a)empleando CAR, CDR y CONS la función de una lista de tres símbolos L, que devuelve la lista formada por listas formadas por cada elemento de L. Por ejemplo, aplicada a (ARTIFICIAL IN- TELIGENCIA ARTIFICIAL) debe dar ((ARTIFICIAL) (INTELIGENCIA) (ARTIFICIAL)). Inteligencia Artificial e I.C. 2004/
18 b)la función Haprox(n) que aproxima el valor de la suma armónica parcial 1 H(n) = k n k mediante la fórmula ln n + γ + + 2n 12n 2 120n 3 donde γ = 0, P.1.9. Supongamos que los vectores tridimensionales se representan en LISP por listas de tres números. Definir mediante funciones LISP las siguientes operaciones: a)el módulo de un vector. b)el producto escalar de dos vectores. c)el producto vectorial de dos vectores. P Sean las definiciones LISP siguientes: (DEFUN MI-QUOTE (E) (QUOTE E)) (DEFUN MI-CAR (E) (CAR E)) (DEFUN MI-DEFUN (NOMBRE LL E) (DEFUN NOMBRE LL E)) Estudiar cuáles de las siguientes equivalencias son válidas: a) (MI-QUOTE exp) == (QUOTE exp) b) (MI-CAR exp) == (CAR exp) c) (MI-DEFUN símbolo lista exp) == (DEFUN símbolo lista exp) Inteligencia Artificial e I.C. 2004/
19 NOTAS ERUDITAS Y CURIOSAS. El lenguaje LISP fue creado por John McCarthy a finales de los años 50 (McCarthy 60) cuando se encontraba en el M.I.T.; es, después de FORTRAN, el más antiguo lenguaje de programación aún en uso. Su primera versión difundida fue LISP 1.5 (McCarthy et al. 65). La etimología oficial de LISP es LISt Processing ; otros dicen que en realidad es un acrónimo de Lots of Insipid Stupid Parentheses. La notación y ciertos rasgos de la semántica de LISP están inspirados en el lambda-cálculo de A. Church (Church 41); pero hay que señalar que las diferencias entre ambos formalismos son grandes. Desde su nacimiento, LISP se dividió en muchos dialectos mutuamente incompatibles. Los más empleados fueron MacLisp y su familia, originados alrededor del Laboratorio de Inteligencia Artificial del M.I.T., e Interlisp y su familia, originados a partir del BBN-LISP y desarrollados posteriormente en Xerox PARC. La evolución de estos dialectos produjo lenguajes muy potentes, al precio de complicar enormemente la semántica. El lenguaje SCHEME (Steele y Sussman, 1975), por el contrario, es un LISP de sintaxis simple y semántica elegantemente definida; en cierto modo, es una vuelta a las fuentes del lambda-cálculo. En los años 80 la comunidad de programadores LISP empieza a pensar que quizás valdría la pena sacrificar parte de las maravillosas prestaciones de sus dialectos en aras de la portabilidad de los programas. Guy Steele lidera el movimiento y rápidamente se define un estándar, el CommonLISP (CLtL, Steele 82) que conoce ya una segunda versión familiarmente denominada CLtL2 (Steele 90). Existe también un estándar ANSI (ANSI 95). LISP nació para la IA y durante muchos años la identificación práctica de ambos conceptos fue completa. El heurístico algo es IA si y sólo si está programado en LISP servía para caracterizar este concepto, siempre escurridizo. Pero en los años 80 la situación cambió, debido a varias causas, entre ellas la aparición del Prolog como lenguaje de uso (relativamente) común. También influyó en este cambio el fracaso comercial de las máquinas LISP. Por otra parte, las características de LISP no lo limitan a aplicaciones de IA. Su potencia expresiva y simplicidad sintáctica lo hacen apropiado para cualquier tipo de aplicación. Por ejemplo, la conocida herramienta Autocad fue originariamente desarrollada e implementada sobre LISP. Las funciones introducidas en este capítulo provienen Fig. I.2. John McCarthy en la actualidad. Fig. I. 1. John McCarthy en de LISP 1.5. En el dialecto original, así como en otros como SCHEME, se emplea DEFINE en lugar de DEFUN. Ninguna historia de LISP puede dejar de explicar la etimología de CAR (Content of the Address part of the Register) y CDR (Content of the Decrement part of the Register). La primera máquina donde se implementó LISP fue una IBM704, cuyas palabras constaban de dos partes llamadas dirección y decremento. Como puede observarse, los nombres CAR y CDR son acrónimos sus contenidos. Cuando se explique la representación intermedia de objetos LISP (células CONS) quedará justificada su elección. Inteligencia Artificial e I.C. 2004/
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
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
Lenguajes de Programación Programación funcional
Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una
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:
Tema 3: Características de la programación funcional. Sesión 6: El paradigma funcional (2)
Tema 3: Características de la programación funcional Sesión 6: El paradigma funcional (2) Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z- H-10.html#%_sec_1.1.5][The
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
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
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
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
Tema 2.- Expresiones y funciones
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 ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
Abstracción de Datos y
Capítulo 3 Abstracción de Datos y Números El cómputo numérico ha sido tradicionalmente ignorado por la comunidad de Lisp. Hasta antes del Common Lisp nadie había ideado una estrategia detallada para ordenar
Fundamentos de programación clase 1: Introducción a la programación
Fundamentos de programación clase 1: Introducción a la programación Profesor: Jairo Ernesto Maldonado G. http://eisc.univalle.edu.co/~jaerma/ jaerma@eisc.univalle.edu.co Autor: Ángela Villota Recordemos
LECCION 3. FUNCIONES (I).
LECCION 3. FUNCIONES (I). En esta lección se dan los primeros pasos para emplear Common Lisp como lenguaje de programación funcional. Al finalizar la lección, el alumno debe ser capaz de -manejar la notación
Tipos de datos algebraicos
Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos
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
Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28
Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes
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.-
Pruebas extraordinarias de septiembre Bachillerato
Pruebas extraordinarias de septiembre Bachillerato El Departamento de Matemáticas establece como prueba extraordinaria un único examen, en el que se incluirán los contenidos mínimos establecidos para cada
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
EV ALU ACIÓN EXTRAO RDIN ARI A DE SEPTIEMBRE CURSO Contenidos para la Prueba de Septiembre MATEMÁTICAS I.
EV ALU ACIÓN EXTRAO RDIN ARI A DE SEPTIEMBRE CURSO 2014-2015. Contenidos para la Prueba de Septiembre MATEMÁTICAS I. UNIDAD 1: NÚMEROS REALES Números racionales, irracionales y reales. Ordenación en el
Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)
Tema 3: Características de la programación funcional Sesión 5: El paradigma funcional (1) Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z- H-10.html#%_sec_1.1.5][The
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.
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
Resumen anual de Matemática 1ª Convocatoria: jueves 24 de noviembre, 2016 Octavo nivel 2ª Convocatoria: miércoles 1 de febrero, 2017 broyi.jimdo.
Resumen anual de Matemática 1ª Convocatoria: jueves 4 de noviembre, 016 Octavo nivel ª Convocatoria: miércoles 1 de febrero, 017 broyi.jimdo.com Contenidos Los números... Objetivo 1... El conjunto de los
DIAGRAMAS DE FLUJO ELEMENTOS E INSTRUCCIONES A USAR EN UN DIAGRAMA DE FLUJO
DIAGRAMAS DE LUJO Un Diagrama de lujo es la representación gráfica de los pasos a seguir para lograr un objetivo, que habitualmente es la solución de un problema. Por Logical se entiende, en algunos libros,
Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)
Tema 2: Introducción a Scheme Sesión 4: Introducción a Scheme (2) Referencias DrRacket (http://racket-lang.org/) A brief tour of DrScheme (http://www.plt-scheme.org/software/drscheme/ tour/) Structure
Tema 5.- Tipos de datos compuestos
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMAC CIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO
. 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
Breve introducción al funcionamiento de un interprete del lenguaje Lisp
Breve introducción al funcionamiento de un interprete del lenguaje Lisp Christian Chinchilla Brizuela Escuela Ciencias de la Computación e Informática Universidad de Costa Rica San José, Costa Rica christian.chinchilla@ecci.ucr.ac.cr
ÍNDICE. Capítulo 1 Relaciones y funciones. Capítulo 2 Números reales
ÍNDICE Capítulo 1 Relaciones y funciones 1.1 LÓGICA... 7 1.2 CONJUNTOS... 19 1.2.1 Conceptos básicos... 19 1.2.2 Operaciones entre conjuntos... 25 1.3 RELACIONES... 32 1.3.1 Conceptos básicos... 32 1.3.2
Abstracción de procedimientos
Abstracción de procedimientos 1.- Consideremos ABN (árboles binarios numéricos) sin nodos repetidos. Denimos los siguientes conceptos: Se pide: Dados dos ABN, A y B, decimos que B es SUBARBOL PRINCIPAL
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
Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
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á
Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca
Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Motivación Programación Imperativa Declarativa Procedimental Ejemplo:
Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Temario 1 Introducción y semántica operacional 2 Tipos predefinidos 3 Patrones y Definiciones de Funciones 4 Funciones
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
Etapas en la solución de un problema
Algoritmo Conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema. Etapas en la solución de un problema Problema Análisis profundo del problema Construcción
Unidad 5: Geometría analítica del plano.
Geometría analítica del plano 1 Unidad 5: Geometría analítica del plano. 1.- Vectores. Operaciones con vectores. Un vector fijo es un segmento entre dos puntos, A y B del plano, al que se le da una orientación
Algoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
INSTRUCCIONES GENERALES Y VALORACIÓN OPCIÓN A
INSTRUCCIONES GENERALES Y VALORACIÓN INSTRUCCIONES: Escoja entre una de las dos opciones A o B. Lea con atención y detenimiento los enunciados de las cuestiones y responda de manera razonada a los puntos
Tema 3. Patrones y Definiciones de Funciones
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones
Tema 3. Listas Recursión sobre datos
Tema 3 Listas Recursión sobre datos José A. Alonso M. José Hidalgo Álvaro Romero Dpto. Ciencias de la Computación e Inteligencia Artificial UNIVERSIDAD DE SEVILLA Informática ListasRecursión sobre datos
Tema 4: Programación funcional avanzada en Scheme
Tema 4: Programación funcional avanzada en Scheme Índice 1 Let... 2 2 Let*... 5 3 Letrec... 5 4 Quote...6 5 Eval... 7 6 Datos compuestos: parejas...8 7 Los datos compuestos pueden ser funciones...11 8
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
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..................
MATEMÁTICAS 4º ESO (opción A) 1. Planificar y utilizar procesos de razonamiento y estrategias diversas y útiles para la resolución de problemas.
MATEMÁTICAS 4º ESO (opción A) Criterios de evaluación 1. Planificar y utilizar procesos de razonamiento y estrategias diversas y útiles para la resolución de problemas. 2. Expresar verbalmente, con precisión,
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
Lección 1. Tutorial básico de MATLAB: Operaciones y funciones básicas
Lección 1. Tutorial básico de MATLAB: Operaciones y funciones básicas MIGUEL ANGEL UH ZAPATA 1 Análisis Numérico I Facultad de Matemáticas, UADY Agosto 2014 1 Centro de Investigación en Matemáticas, Unidad
Álgebra y Trigonometría
Álgebra y Trigonometría Conceptos fundamentales del Álgebra Universidad de Antioquia Departamento de Matemáticas 1. Números Reales El conjunto de los números reales está constituido por diferentes clases
Tema 3: Características de la programación funcional
Tema 3: Características de la programación funcional Sesión 5: El paradigma funcional (1) martes 22 de febrero de 2011 Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z-
Tema II: Introducción al Lenguaje Funcional
Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)
Unidad II. 2.1 Concepto de variable, función, dominio, condominio y recorrido de una función.
Unidad II Funciones 2.1 Concepto de variable, función, dominio, condominio y recorrido de una función. Función En matemática, una función (f) es una relación entre un conjunto dado X (llamado dominio)
TEMA V SISTEMAS DE NUMERACIÓN
TEMA V SISTEMAS DE NUMERACIÓN En la vida diaria el hombre se expresa, se comunica, almacena y maneja información desde el punto de vista alfabético con un determinado idioma y desde el punto de vista numérico
INSTRUCCIONES GENERALES Y VALORACIÓN OPCIÓN A
INSTRUCCIONES GENERALES Y VALORACIÓN INSTRUCCIONES: Escoja entre una de las dos opciones A o B. Lea con atención y detenimiento los enunciados de las cuestiones y responda de manera razonada a los puntos
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
Tema 9: Asignación, estado local y modelo de entornos
Tema 9: Asignación, estado local y modelo de entornos Índice 1 Programación imperativa... 2 2 Formas especiales set!...3 3 Entornos... 3 4 Estado local...8 4.1 Ejemplo 1: contador global... 8 4.2 Ejemplo
Tema 3. Patrones y Definiciones de Funciones
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones
Práctica 1: Introducción a MATLAB.
Práctica 1: Introducción a MATLAB. 1 Introducción. MATLAB es un paquete de programas para computación numérica y visualización. Para arrancar el programa basta hacer doble click sobre el icono MATLAB que
CONJUTOS NÚMERICOS NÚMEROS NATURALES
CONJUTOS NÚMERICOS NÚMEROS NATURALES El conjunto de números naturales tiene gran importancia en la vida práctica ya que con sus elementos se pueden encontrar elementos u objetos de otros conjuntos. El
TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato
TUTORIAL PROLOG Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato Prolog es un lenguaje de programación lógica de propósito general que se
02. Resolver sistemas de ecuaciones lineales por el método de Gauss.
3.6 Criterios específicos de evaluación. 01. Conocer lo que significa que un sistema sea incompatible o compatible, determinado o indeterminado, y aplicar este conocimiento para formar un sistema de un
Coordenadas cartesianas: Representación de puntos en el plano. Identificación de puntos mediante sus coordenadas.
Matemáticas CURSO: 1º de ESO ÁREA: Matemáticas Los números naturales. Operaciones y problemas. Potencias y raíces. Divisibilidad: M.C.D. y M.C.M. de dos ó más números. Los números decimales. Operaciones
Programación 1 - Práctica 0, recargada.
v.6.2.1 Programación 1 - Práctica 0, recargada. Ahora con más ejercicios! 1 Expresiones aritméticas. 1. Considere las siguientes expresiones aritméticas: 12 * 5-7 * 6 3 * 5-7 * 4 / 14 + 3 / 1 cos(0.8)
4º E.S.O. Matemáticas B
4º E.S.O. Matemáticas B Objetivos 1. Incorporar, al lenguaje y formas habituales de argumentación, las distintas formas de expresión matemática (numérica, algebraica, de funciones, geométrica...), con
Tema 3.- Predicados y sentencias condicionales
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 ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
Sistem as de ecuaciones lineales
Sistem as de ecuaciones lineales. Concepto, clasificación y notación Un sistema de m ecuaciones lineales con n incógnitas se puede escribir del siguiente modo: a x + a 2 x 2 + a 3 x 3 + + a n x n = b a
Pruebas de escritorio
Pruebas de escritorio Es un proceso que consiste en hacer seguimiento a un algoritmo recorriendo sus líneas simulando el funcionamiento del procesador del computador. Ejemplo: Realizar un algoritmo que
ULADECH Escuela Profesional de Contabilidad
Fórmulas Las fórmulas son ecuaciones que efectúan cálculos con los valores de las celdas de la hoja de cálculo. Una fórmula comienza por un signo igual (=). Son operaciones entre celdas, o combinaciones
Introducción a los Sistemas Digitales. Conceptos básicos de matemática aplicada a los sistemas digitales
Curso-0 1 Introducción a los Sistemas Digitales Conceptos básicos de matemática aplicada a los sistemas digitales 2 Contenidos Conjuntos numéricos Notación científica Redondeo Logaritmos Resumen 3 Conjuntos
REPASO DE ÁLGEBRA MATRICIAL
REPASO DE ÁLGEBRA MATRICIAL 1. Porqué necesitamos matrices? Qué son las matrices? Dónde está la matriz en este cuadro? (que por cierto fué hecho por Alberto Durero en 1514 y se llama Melancolía ) Las matrices
18 Experimentos aleatorios. Sucesos y espacio muestral. Frecuencia y probabilidad de un suceso.
PRIMER CURSO DE E.S.O Criterios de calificación: 80% exámenes, 10% actividades, 10% actitud y trabajo 1 Números naturales. 2 Potencias de exponente natural. Raíces cuadradas exactas. 3 Divisibilidad. Concepto
MATEMÁTICAS II MATRIZ DE ESPECIFICACIONES DE LA ASIGNATURA DE MATEMÁTICAS II ESTÁNDARES DE APRENDIZAJE AL BLOQUE
MATRIZ DE ESPECIFICACIONES DE LA ASIGNATURA DE MATEMÁTICAS II BLOQUES DE CONTENIDO PORCENTAJE ASIGNADO AL BLOQUE ESTÁNDARES DE APRENDIZAJE Bloque 1. Procesos, métodos y actitudes en matemáticas. 30 % Expresa
13. Utilizar la fórmula del término general y de la suma de n términos consecutivos
Contenidos mínimos 3º ESO. 1. Contenidos. Bloque I: Aritmética y álgebra. 1. Utilizar las reglas de jerarquía de paréntesis y operaciones, para efectuar cálculos con números racionales, expresados en forma
Metodologías de Programación II Listas en Lisp
Metodologías de Programación II Listas en Lisp Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra
Introducción a Haskell. El lenguaje Haskell
Capítulo 2. Introducción a Haskell 9 Introducción a Haskell Un ejemplo de fichero Haskell El lenguaje Haskell Haskell es un lenguaje funcional puro, no estricto y fuertemente tipificado. Puro = transparencia
6. PROGRAMACIÓN DEL CURSO 4º A DE E. S. O.
6. PROGRAMACIÓN DEL CURSO 4º A DE E. S. O. 6.1 OBJETIVOS GENERALES DEL CURSO Reconocer las diferentes clases de números, y operar correctamente con ellos. Aplicaciones aritméticas. Conocer y manejar la
OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION
CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION El sistema de numeración usado habitualmente es el decimal, de base 10, que no es adecuado para ser manejado por el ordenador, fundamentalmente
ÁLGEBRA II (LSI PI) UNIDAD Nº 2 GEOMETRÍA ANALÍTICA. Facultad de Ciencias Exactas y Tecnologías UNIVERSIDAD NACIONAL DE SANTIAGO DEL ESTERO
17 ÁLGEBRA II (LSI PI) UNIDAD Nº GEOMETRÍA ANALÍTICA Facultad de Ciencias Exactas y Tecnologías aa Error! No hay texto con el estilo especificado en el documento. 1 UNIVERSIDAD NACIONAL DE SANTIAGO DEL
Contenidos mínimos del área de matemáticas 1º ESO
1º ESO Unidad didáctica nº1: Los números naturales. Divisibilidad. Operaciones con números naturales: suma, resta, multiplicación y Calcular múltiplos y divisores de un número. Descomposición factorial
Tema 9: Asignación, estado local y modelo de entornos
Tema 9: Asignación, estado local y modelo de entornos Índice 1 Programación imperativa... 2 2 Formas especiales set!...3 3 La forma especial begin... 3 4 Entornos... 4 5 El modelo de computación de Scheme
Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3
PROGRAMACION FUNCIONAL - Un lenguaje de programación funcional tiene gran flexibilidad, es conciso en su notación y su semántica es sencilla. El inconveniente principal de estos lenguajes ha sido la ineficiencia
Lección 5. Punto flotante
Lección 5. Punto flotante MIGUEL ANGEL UH ZAPATA 1 Análisis Numérico I Facultad de Matemáticas, UADY Agosto 2014 1 Centro de Investigación en Matemáticas, Unidad Mérida En esta lección aprenderemos lo
Inducción, Recursión y Alcance. Inducción, Recursión y alcance. Inducción, Recursión y Alcance. Inducción, Recursión y Alcance
Inducción, Recursión y alcance Especificación inductiva de tipos de datos Tipo de datos: Conjunto de valores Conjunto de operaciones sobre dichos valores ejemplo: Sea S el conjunto más pequeño tal que:
Tema 3. Tipos de datos simples
Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias
Capítulo 2 Conjuntos. 2.1 Introducción. 2.2 Determinación de conjuntos. Definición:
Capítulo 2 Conjuntos 2.1 Introducción El concepto de conjunto, de singular importancia en la ciencia matemática y objeto de estudio de una de sus disciplinas más recientes, está presente, aunque en forma
Sobre vectores y matrices. Independencia lineal. Rango de una matriz
Espacios vectoriales Llamaremos R 2 al conjunto de todos los pares ordenados de la forma (a 1, a 2 ) tal que a 1, a 2 R. Es decir: R 2 = {(a 1, a 2 ) : a 1, a 2 R} De la misma forma: R 3 = {(a 1, a 2,
DEPARTAMENTO DE MATEMATICAS PRIMERO DE E.S.O.
DEPARTAMENTO DE MATEMATICAS PRIMERO DE E.S.O. CRITERIOS DE EVALUACIÓN MÍNIMOS - Valora el sistema de numeración decimal como el más útil para representar números. - Conoce los algoritmos de las operaciones
UNIDAD 1 NUMEROS COMPLEJOS
UNIDAD 1 NUMEROS COMPLEJOS El conjunto de los números complejos fue creado para poder resolver algunos problemas matemáticos que no tienen solución dentro del conjunto de los números reales. Por ejemplo
Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional
Programación Funcional Lisp-DrScheme Primera Parte Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Programación Funcional! La programación funcional es un paradigma de programación
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:
Programación Funcional Lisp-Scheme
Programación Funcional Lisp-Scheme Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Dónde bajar? Lisp (EdScheme): www.schemers.com com Ejemplo: => (+ (* 3(+ (* 24) (+ 35))) (+
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
Lenguajes y Gramáticas
Lenguajes y Gramáticas Teoría de Lenguajes Fernando Naranjo Introduccion Se desarrollan lenguajes de programación basados en el principio de gramática formal. Se crean maquinas cada vez mas sofisticadas