Fundamentos de Inteligencia Artificial - PowerPoint PPT Presentation

1 / 206
About This Presentation
Title:

Fundamentos de Inteligencia Artificial

Description:

none – PowerPoint PPT presentation

Number of Views:618
Avg rating:3.0/5.0
Slides: 207
Provided by: juancarlos83
Category:

less

Transcript and Presenter's Notes

Title: Fundamentos de Inteligencia Artificial


1
Fundamentos de Inteligencia Artificial
  • M.C. Juan Carlos Olivares Rojas

2
Agenda
  • 2.1 Introducción
  • 2.2 Representación del Conocimiento
  • 2.3 Sistemas Expertos

3
Introducción
  • La Inteligencia Artificial pretende emular la
    Inteligencia Humana a través del uso de
    computadoras
  • La Inteligencia es la capacidad para resolver
    problemas de cualquier tipo. La inteligencia
    distingue al hombre del animal

4
Introdcción
  • A los sistemas inteligentes existentes les falta
    el sentido común y la generalidad de los seres
    humanos.
  • Alan M. Turing definió en 1950 una forma de
    comprobar si una máquina piensa, esto lo hizo a
    través del Test de Turing.

5
Introducción
  • Consiste en colocar dos hombres y una computadora
    en un lugar en el cual no estén visibles los tres
    elementos, se ocultan las identidades.
  • Uno de los participantes funciona como
    interrogador. La prueba se pasa cuando el
    interrogador no sabe distinguir entre las
    respuestas de la computadora y del otro hombre.

6
Introducción
7
Introducción
  • Extracto del diálogo del Ensayo de Turing
  • P Por favor, redacte un soneto sobre el tema del
    Fuerte Bridge
  • R No me incluya. Nunca pude escribir poesía.
  • P Sume 34957 y 70764
  • R (Pausa de 30s seguida de la respuesta) 105621
  • .

8
Introducción
  • La IA se ha desarrollado desde mucho tiempo
    atrás. Aristóteles comenzó a explicar y codificar
    ciertos estilos de razonamientos como el
    deductivo.
  • Los filósofos griegos ayudaron a plantear la
    lógica clásica. El Silogismo se convierte en la
    primera gran herramienta de la IA.
  • P-gtQ y Q-gtS P-gtS

9
Introducción
  • En 1956 John McCarthy definió el concepto de IA y
    es considerado el padre de la misma.
  • Muchos investigadores han hecho aportaciones
    valiosísimas a este campo, como Chomsky
    (Lenguajes), Rosenblat (Perceptrón), Alan Turing
    (Autómatas), etc.

10
Aplicaciones
  • Sistemas expertos
  • Procesamiento de lenguaje natural
  • Visión Artificial
  • Robótica
  • Aprendizaje
  • Lógica Clásica y Difusa
  • Juegos
  • Redes neuronales
  • Algoritmos genéticos
  • Realidad virtual

11
Representación del Conocimiento
  • La características más importante que deben de
    tener todo Sistemas Inteligente (SI) son
  • La forma de representar el conocimiento
  • La forma en cómo se recupera la información
  • La forma en como se puede adquirir nuevo
    conocimiento (aprendizaje).

12
Representación del Conocimiento
  • Las formas de representación (explicitación) de
    conocimiento son muy variadas y de ellas
    dependerá la forma en que se recupere la
    información y el cómo se aprende.
  • Siempre que se desarrolla un modelo se tiene dos
    representaciones lógica y física.
  • Dichas representaciones se necesitan mapearse
    para poder trabajar en conjunto.

13
Representación del Conocimiento
  • Cuando se tiene un problema de la vida real, éste
    debe mapearse al esquema de una computadora para
    poderse realizar un sistema computacional.
  • Imaginemos que deseamos desarrollar un juego de
    laberintos (modelo físico), Cómo quedaría
    representado su conocimiento (modelo )?

14
Representación del Conocimiento
  • Se puede representar como una matriz, como un
    grafo, máquinas de estado finito, etc. Además, se
    deben tener reglas de cómo es el juego.
  • Sino tenemos las dos representaciones no podemos
    comprender ni aprender el juego.

15
Representación del Conocimiento
  • Las redes semánticas son una forma sencilla de
    explicitar conocimiento, están conformadas por
    grafos que codifican el conocimiento en forma
    taxonómica.
  • Los nodos nos representan categorías y las
    aristas relaciones entre esas categorías.
  • Existen dos tipos de relaciones muy especiales
    Is-A y la Have-A.

16
Representación del Conocimiento
  • Se puede acceder a través de cada uno de los
    conceptos para inferir conocimiento.
  • Los guiones (script) son otra forma de
    representar conocimiento. Están conformados por
    componentes llamados ranuras (slots) que es un
    conjunto de pares atributo-valor. Los guiones son
    más fáciles de introducir en muchos casos que un
    mapa conceptual.

17
Representación del Conocimiento
  • El mismo conocimiento puede estar estructurado en
    diferentes representaciones como por ejemplo una
    base de datos, una red semántica, un frame, un
    mapa conceptual, etc. Pero al final de cuentas
    deben tener el mismo significado (semántica).

18
Red Semántica
19
Redes Semánticas
  • Ejemplo de un guión
  • Impresoras
  • Subconjunto_de Máquina_Oficina
  • Superconjunto_de Impresora_Laser,
    Impresora_Inyección
  • Fuente_alimentacion Toma_Pared
  • Autor Juan_Perez
  • Fecha 15_Febrero_2008

20
Representación del Conocimiento
  • La representación del conocimiento tiene una gran
    importancia a tal punto de actualmente se habla
    de la Ingeniería del Conocimiento.
  • Los frames son una estructura en la cual se
    pueden representar valores, restricciones,
    procesos, tienen relaciones de pertinencia y
    herencia (por lo que se parecen a la programación
    orientada a objetos).

21
Representación del Conocimiento
  • El método descripción y pareamiento se utiliza
    para solucionar problemas de IA y es de los más
    básicos.
  • El primer paso consiste en identificar todas las
    características de un objeto.
  • Después se realiza una búsqueda con un conjunto
    de objetos ya definidos.

22
Representación del Conocimiento
  • En realidad se utilizan dos métodos muy
    importantes el extractor y el evaluador de
    conocimientos.
  • Al realizar el pareamiento de los objetos puede
    ser que no caigan exactamente en el patrón de
    conocimiento por lo que se tiene que tener una
    medida de similitud.

23
Representación del Conocimiento
  • Una forma de explicitar conocimiento con gran
    difusión en la actualidad es a través del uso de
    ontologías, las cuales consiste de relaciones
    entre distintos conceptos como definiciones.
  • Las ontologías pueden ser representadas a través
    de lenguajes como XML.

24
Representación del Conocimiento
  • AMOR
  • Querer a una persona o cosa sobre todas las cosas
  • Palabra de 4 caracteres A, M, O y R
    yuxtapuestos
  • AMOR AMOR AMOR ROMA
  • Amor AMOR Amor Cariño
  • Amor Amar Distancia Léxica 1

25
Representación del Conocimiento
  • Círculo
  • Descripción
  • Figura formada por todos los puntos comprendidos
    a una distancia equidistante del centro
    correspondidos en un ángulo de 0 a 360 grados.
  • Propiedades
  • Centro (punto)
  • Diámetro (dos veces radio)
  • Áreas

26
Representación del Conocimiento



Similitud de 75

27
Representación del Conocimiento
  • Se utiliza en otras múltiples ramas como
  • Reconocimiento de huellas digitales
  • Reconocimiento de Voz
  • Reconocimiento de Lenguaje Natural
  • Validación de Requerimientos de Software
  • Etc.
  • Se debe de representar de manera adecuada el
    conocimiento para poder compararlo.

28
Representación del Conocimiento
  • Un granjero quiere cruzar un rió llevando consigo
    una zorra, una ganso y un saco de trigo. Por
    desgracia, su bote es tan pequeño que sólo puede
    transportar una de sus pertenencias en cada
    viaje. Peor aún, la zorra, si no se le vigila, se
    come al ganso, y el ganso, si no se le cuida, se
    come el trigo de modo que el granjero no debe
    dejar a la zorra sola con el ganso o al ganso
    solo con el trigo.

29
Representación del Conocimiento
Granjero Zorra Ganso Trigo
Granjero Zorra Ganso Trigo
Se puede utilizar el método de descripción y
pareamiento?
30
Representación del Conocimiento
31
Representación del Conocimiento
  • Otra forma de resolución de problemas utilizado
    en la IA consiste en las Analogías.
  • Las analogías son un tipo especial de relación
    que define como están representados los objetos
    de una categoría y como obtener sus predecesores
    y antecesores inmediatos.

32
Representación del Conocimiento
  • Alguna vez nos hemos preguntado por qué en la
    mayoría de los exámenes de admisión generalmente
    son más importantes las analogías que los de
    conocimientos?
  • Por que en la mayoría de los casos el
    conocimiento de cierta forma se puede adquirir
    pero la forma de aprender y razonar es sumamente
    complicado. En muchos casos son más importantes
    las reglas que el conocimiento.

33
Representación del Conocimiento
Cómo quedarían D y 5?
34
Representación del Conocimiento
  • Qué problemas se presentan con la Abstracción de
    la Figura D o bien de la Figura 3?
  • La resolución de problemas por analogía tiene
    como base cierto conocimiento previo en ocasiones
    difícil de obtener.

35
Sistemas Expertos
  • Son el primer producto viable comercialmente de
    la Inteligencia Artificial.
  • Permiten introducir información acerca de una
    materia específica a la computadora (base de
    conocimientos), y actúan como si fueran expertos
    en la materia.

36
Sistemas Expertos
  • Un Sistema experto simula el proceso de
    razonamiento humano mediante la aplicación
    específica de conocimientos e inferencias.
  • A continuación se mencionan algunas herramientas
    como Prolog y Lisp para la construcción de SE.

37
Quiz 2-1
  • Quién es considerado el padre de la IA?
  • En qué consiste el test de Turing?
  • Quién invento el silogismo?
  • Menciona tres áreas donde se puede utilizar la IA

38
Quiz 2-1
  • Cuáles son las tres componentes que debe tener
    todo Sistema Inteligente?
  • Cuáles son los dos tipos de relaciones básicas
    en redes semánticas?
  • Qué es un script en IA?

39
Actividad
  • Describe una heurística de cómo una persona puede
    escapar de un laberinto
  • Describe un método de cómo se puede utilizar en
    un tablero de ajedrez de 4x4, 4 reinas sin que se
    eliminen. Generaliza dicho método para que se
    ejecuten n reinas en un tablero de nxn.

40
Actividad
41
Prolog
  • Es un lenguaje de programación con paradigma de
    programación lógica. Viene del acrónimo de
    PROgamming LOGic.
  • Basa su funcionamiento en lógica de primer orden.
    Utiliza el concepto de predicados lógicos para
    representar hechos y representar reglas de
    inferencia.

42
Prolog
  • Prolog es un lenguaje interpretado.
  • En este curso se utiliza la herramienta swiprolog
    dado que se puede ejecutar en Windows y es
    software libre.
  • Los programas se pueden hacer directamente sobre
    la shell o bien, a través de un editor de Texto
    plano.

43
Prologo
  • Todo sistema experto se compone de dos elementos
    principales
  • La base de conocimientos (hechos)
  • El motor de inferencia (reglas)
  • Generalmente las reglas son la interfaz que tiene
    la aplicación hacia el usuario para realizar
    preguntas.

44
PROLOG
  • Hechos
  • las aves vuelan
  • los pingüinos no vuelan
  • "pichurri" es un ave
  • "sandokan" es un perro
  • "alegría" es un ave
  • Los hechos pueden ser simples o complejos

45
PROLOG
  • Comentarios en Prolog
  • Base de Hechos
  • volar(ave). Sería regla?
  • novolar(pingüinos). omitir dicho predicado
  • ave("pichurri).
  • perro(wendo).
  • ave("alegría).

46
PROLOG
  • Reglas o Restricciones
  • una mascota vuela si es un ave y no es un
    pingüino
  • Preguntas
  • "pichurri" vuela ?
  • qué mascotas vuelan ?

47
Prolog
  • Reglas
  • vuela(X)- ave(X).
  • Mascotavuela(X)- ave(X).
  • Preguntas desde el shell
  • vuela(pichurri)
  • Mascotavuelan(X)

48
PROLOG
  • Términos constantes (a), variables (X),
    funciones (f(X, Y ))
  • pepe, juan, Cliente, cliente-de(X, Y )
  • Fórmulas atómicas predicados definidos sobre
    términos
  • tipo-cliente(X,bueno)

49
PROLOG
  • Fórmulas bien formadas (WFF fórmulas atómicas
    unidas por conectivas (, v, ) y cuantificadas
    (1A universal, 1B existencial)
  • 1AX, 1BZ cliente(X) compra(X, Z) caro(Z) ?
    tipo-cliente(X, bueno)
  • abuelo(X,Y) - padre(X,Z), padre(Z,Y).
  • 1AX, Y 1BZ padre(X, Z) padre(Z, Y) ? abuelo(X,
    Y )

50
PROLOG
  • abuelo(X,Y) - padre(X,Z), madre(Z,Y).
  • abuelo(X,Y) - padre(X,Z), padre(Z,Y).
  • abuelo(X, Y) (pepe, juan), (pepe, ana), ,
    (luis, javier)
  • progenitor(X, Y ) - padre(X, Y ).
  • progenitor(X, Y ) - madre(X, Y ).

51
PROLOG
  • abuelo(X,Y) - padre(X,Z), madre(Z,Y).
  • abuelo(X,Y) - padre(X,Z), padre(Z,Y).
  • abuelo(X,Y) - padre(X,Z), progenitor(Z,Y).
  • hechos A. (A átomo)
  • reglas A - A1, ..., An. (ngt0, y A, A1, ..., An
    átomos)

52
PROLOG
  • Hechos
  • padece(jon, gripe).
  • padece(jon, hepatitis).
  • padece(ana, gripe).
  • padece(carlos, alergia).
  • es-síntoma(fiebre, gripe).
  • es-síntoma(cansancio, gripe).
  • es-síntoma(estornudos, alergia).
  • suprime(paracetamol, fiebre).
  • suprime(antihistamínico, estornudos).

53
PROLOG
  • Reglas
  • debe-tomar(Per, Far) - padece(Per, Enf),
    alivia(Far, Enf).
  • alivia(Far, Enf) - es-síntoma(Sin, Enf),
    suprime(Far, Sin).
  • Preguntas
  • ? padece(carlos, gripe).
  • ? padece(jon, Z).
  • ? alivia(paracetamol, gripe).

54
PROLOG
  • ? alivia(X, gripe).
  • ? debe-tomar(Y, antihistamínico).
  • ? alivia(X, Y).
  • ? suprime(X, fiebre), suprime(X, estornudos).
  • Qué devuelve cada pregunta como resultado?

55
PROLOG
  • hija (A, B) lt- mujer (A), padre (B, A).
  • hija (A, B) lt- mujer (A), madre (B, A).
  • A continuación se muestra un programa completo en
    PROLOG
  • declaraciones
  • padrede('juan', 'maria').
  • padrede('pablo', 'juan').

56
PROLOG
  • padrede('pablo', 'marcela').
  • padrede('carlos', 'debora').
  • Reglas
  • A es hijo de B si B es padre de A hijode(A,B)
    - padrede(B,A).
  • abuelode(A,B) - padrede(A,C), padrede(C,B).
  • hermanode(A,B) - padrede(C,A) , padrede(C,B), A
    \ B.
  • familiarde(A,B) - padrede(A,B).

57
PROLOG
  • familiarde(A,B) - hijode(A,B).
  • familiarde(A,B) - hermanode(A,B).
  • consultas
  • juan es hermano de marcela?
  • ?- hermanode('juan', 'marcela').
  • Yes
  • ?- hermanode('carlos', 'juan'). No
  • ?- abuelode('pablo', 'maria'). Yes
  • ?- abuelode('maria', 'pablo'). no

58
PROLOG
  • unificación con evaluación.
  • ?- X is 35.
  • X 8
  • unificación simbólica
  • ?- X 35.
  • X 35

59
PROLOG
  • comparación con evaluación
  • ?- 35 26.
  • yes
  • comparación simbólica.
  • ?- 35 26.
  • no
  • ?- 35 35.
  • yes

60
PROLOG
  • Los programas en PROLOG se definen a través de
    Algoritmos, Lógica y Control.
  • En caso de que una consulta de más de un
    resultado, el prompt no aparece en la shell. Se
    puede utilizar el operador . Para terminar el
    resultado, o bien, el operador para continuar
    con los emparejamientos de resultados.
  • Se pueden combinar preguntas para obtener
    respuestas más exactas.

61
PROLOG
  • Combinación de preguntas
  • legusta(pepe, pesca).
  • legusta(maria, bailar).
  • legusta(ana, pesca).
  • legusta(pepe, musica).
  • legusta(maria, musica).
  • legusta(ana, bailar).
  • preguntas

62
PROLOG
  • Le gusta la música a Pepé y a María?
  • ?_ legusta(pepe,musica), legusta(maria, musica).
  • Le gusta bailar a Pepé o le gusta la música a
    maria?
  • ?_ legusta(pepe,bailar) legusta(maria, musica).

63
Prolog
  • Le gusta bailar a Pepé y a maria no le gusta la
    música?
  • legusta(pepe,bailar), not(legusta(maria,musica)).

64
PROLOG
  • El portal de redes sociales del ITM desea diseñar
    un Sistema Experto para encontrar la pareja ideal
    de cada estudiante si es que existiese.
  • Para lograr esto, se tienen en la base de
    conocimientos registrados los gustos de cada
    usuario (color de ojos, altura, complexión,
    carro, etc.). Se da un punto por cada
    coincidencia.

65
PROLOG
  • Diseñar la regla o reglas que determinen la mejor
    pareja de cada usuario. (Se deben tener al menos
    2 hombres y 2 mujeres con 5 gustos c/u).
  • Probar su desarrollo a través de las reglas
    predefinidas.

66
PROLOG
  • Se puede aplicar recursividad en PROLOG además de
    que algunos programas en programación
    estructurada pueden ser implementados.
  • Sucesiones
  • sucesor(1,2).
  • sucesor(2,3).
  • sucesor(3,4).
  • sucesor(4,5).
  • sucesor(5,6).

67
PROLOG
  • sucesor(6,7).
  • suma(1,X,R)-sucesor(X,R).
  • suma(N,X,R)-sucesor(M,N), suma(M,X, R1),
    sucesor(R1, R).
  • Como se crearía una consulta?
  • Qué es lo que el programa haría?

68
PROLOG
  • Ejemplo
  • entrada(paella).
  • entrada(gazpacho).
  • entrada(consome).
  • carne(filete_de_cerdo).
  • carne(pollo_asado).
  • pescado(trucha).
  • pescado(bacalao).
  • postre(flan).

69
PROLOG
  • postre(nueces_con_miel).
  • postre(naranja).
  • calorias(paella, 200).
  • calorias(gazpacho, 150).
  • calorias(consome, 300).
  • calorias(filete_de_cerdo, 400).
  • calorias(pollo_asado, 280).
  • calorias(trucha, 160).
  • calorias(bacalao, 300).

70
PROLOG
  • calorias(flan, 200).
  • calorias(nueces_con_miel, 500).
  • calorias(naranja, 50).
  • plato_principal(P)- carne(P) pescado(P).
  • comida(Entrada, Principal, Postre)-
    entrada(Entrada), plato_principal(Principal),
    postre(Postre).
  • valor(Entrada, Principal, Postre, Valor)-
    calorias(Entrada, X), calorias(Principal, Y),
    calorias(Postre, Z), sumar(X, Y, Z, Valor).

71
PROLOG
  • comida_equilibrada(Entrada, Principal, Postre)-
    comida(Entrada, Principal, Postre),
    valor(Entrada, Principal, Postre, Valor),
    menor(Valor, 800).
  • sumar(X, Y, Z, Res)- Res is X Y Z.
  • menor(X, Y)- X lt Y.
  • dif(X, Y)- X \Y.

72
Prolog
  • Encontrar Cuántas calorías tiene la combinación
    paella, trucha, naranja? Qué comida que tiene
    cónsome de entrada es la más balanceada?

73
PROLOG
  • Se pueden definir funciones recursivas como el
    factorial
  • fac(0,1).
  • fac(N,F) - N gt 0, M is N - 1, fac(M,Fm), F is N
    Fm.
  • Cómo se expresa la serie de fibonnaci?

74
Tarea
  • Práctica Robots Lego
  • Traer en conjunto 6 pilas tamaño AA
  • Instalar el kit de desarrollo (pasar el jueves o
    viernes por el disco).

75
Qué es la Robótica?
  • Es el área de la Inteligencia Artificial (IA) que
    se encarga de los estudios de los robots.
  • La robótica no sólo incluye elementos de IA sino
    también de mecatrónica, computación y otras áreas
    de la Ingeniería.

76
Qué es un Robot?
  • Deriva de la palabra checa robota.
  • Literalmente significa esclavitud, servidumbre
    forzada
  • Máquina mecánica o autómata capaz de interactuar
    con el entorno y tomar decisiones propias

77
Características de un Robot
  • Diseñados para sustituir al humano en algunas
    tareas.

78
Características de un Robot
  • Capaces de actuar en función de la información
    recibida del mundo real.

79
Características de un Robot
  • Los robots se clasifican según su forma en
  • Androides Imitan la forma humana
  • Móviles Se desplazan mediante ruedas
  • Zoomórficos Con forma de animales
  • Poliarticulados Con partes móviles y poco grado
    de libertad.

80
Características de un robot
  • Un robot se debe componer de
  • Mecanismo para desplazarse
  • Mecanismo para percibir el mundo exterior
  • Mecanismo para interactuar con el entorno

81
Funcionamiento de un Robot
  • Mecanismo habitual de 3 ruedas
  • 2 ruedas motorizadas, con motores independientes.
  • 1 rueda muerta para soportar el equilibrio.

82
Funcionamiento de un Robot
  • Para hacer girar el robot, se modificará la
    velocidad y el sentido del giro de cada uno de
    los motores por separado.
  • Se puede captar el entorno a través de los
    sensores del robot
  • Choque Detecta colisiones físicas del robot.

83
Funcionamiento de un robot
  • Sonar Calcula la distancia del robot a otros
    objetos del entorno.
  • Infrarrojos Detección de colores, etc.
  • Cámaras Obtiene los datos mediante visión.

84
Funcionamiento de un Robot
  • Inicializar el robot Situarlo en el mundo.
  • Recibir información por los sensores.
  • Procesar la información recibida.
  • Desplazar/Activar partes del robot.

85
Problemas Principales de un Robot
  • Localización Dónde estoy?
  • Respuesta de los sensores Hay cuchara?
  • Respuesta del sistema Todo ok?

86
Ejemplos de Robots
Robot Lego RCX
87
Ejemplos de Robots
  • Sony AIBO

88
Robot Lego Mindstorms NXT
  • Es un Robot construido por la marca de juegos
    Lego.
  • Se caracteriza por que este robot se puede armar
    en diversos modelos, además de que es económico
    (250 USD), potente y muy versátil. No es un
    simple juguete.

89
Robot Lego Mindstorms NXY
  • Ejemplos de Robots

90
NXT
  • La unidad central de proceso contiene
  • 4 entradas (digital y analógica)
  • 3 salidas (soporte para los motores)
  • Pantalla LCD Monocromática de 100x64 píxeles

91
NXT
  • 4 Botones de control
  • Sonido
  • Interfaces USB y Bluetooth

92
Sensores
Tacto
Luz
Servomotor
Ultrasónico
Sonido
93
Procesador
  • Atmel 32-bit ARM, AT91SAM7S256
  • 256 KB FLASH
  • 64 KB RAM
  • 48 MHz

94
Coprocesador
  • Atmel 8-bit AVR processor, ATmega48
  • 4 KB FLASH
  • 512 Byte RAM
  • 8 MHz

95
Comunicación Bluetooth y USB
  • BlueCoreTM 4 v2.0 EDR System
  • Soporta el Serial Port Profile (SPP) para
    emulación de puertos de comunicación.
  • USB 2.0 Full speed com port (12 Mbit/s).

96
Motores
  • Contador de rotaciones.
  • Rotación de 360 grados.
  • Las posiciones son relativas.
  • La velocidad máxima es de 200 RPM.

97
Otras características
  • Utiliza 6 pilas AA.
  • Utiliza cables RJ-12 parecidos a los telefónicos
    (aplanados).
  • Algunos fabricantes realizan otros tipos de
    piezas y sensores.

98
Herramientas de Programación
  • LabVIEW NEXT-G
  • Microsoft Robotics Studio
  • Otras
  • NXC (and NBC)
  • Robot C
  • pbLua
  • Java

99
Programación
  • Basado en un ambiente gráfico de desarrollado
    (programación en bloques) desarrollado por
    National Instruments los desarrolladores de
    LabView.
  • Permite el desarrollo rápido de aplicaciones.
    Útil para niños.

100
Programación
  • Está muy limitado para realizar programas más
    complejos, por lo que se utilizan otros entornos.
  • A continuación se listan los pasos para programar
    una aplicación en este Robot

101
Programación
  • Se arma el modelo de robot (se pueden seguir los
    pasos indicados en la guía o se desarrolla por
    cuenta propia).
  • Se realiza la programación en bloques.
  • Se baja el programa al Robot

102
Programación
  • Se corre el programa en el Robot y se ven los
    resultados obtenidos.
  • No se cuenta con un emulador para probar los
    desarrollos lo que dificulta un poco el proceso
    de desarrollo.

103
Entorno de Desarrollo
Construcción
Programación
Ejecución
104
Entorno de Desarrollo
Guía
Zona de Programación
Bloques
Propiedades
105
Otros entornos
  • NXC (Not eXactly C) es un lenguaje similar NQC,
    el cual es la forma más popular de programar el
    RCX. Está basado en el ensamblador NBC (Next
    Byte Code).
  • RobotC es un entorno no gratuito desarrollado por
    CMU.

106
Programación con NXC
  • Se tienen algunas limitaciones como
  • No existe pila
  • Memoria Limitada
  • Limitado a 256 procesos (task)

107
Programación con NXC
  • include "NXCDefs.h
  • task main()
  • SetSensor( IN_1, SENSOR_TOUCH )
  • while( true )
  • if( Sensor( IN_1 ) )
  • PlayToneEx(440, 100, 3, false)
  • TextOut( 0, LCD_LINE1, "TOUCHING!")
  • while( Sensor( IN_1 ) )

108
Programación con NXC
  • TextOut( 0, LCD_LINE1, "---------")
  • while( !Sensor( IN_1 ) )

109
Construcción de Pistas de Robots
110
Detalles de la Pista
111
Competencia de autos
112
Evaluación de Obstáculos
113
Actividad
  • Construir un robot que permita correr en un
    circuito. Ganará el robot que haga el recorrido
    en el menor tiempo posible.
  • Construir un robot que pueda salir de un
    laberinto o de un cuarto con obstáculos.
  • Construir un robot que permita cargar un objeto
    como una pelota de un contenedor y dejar la misma
    pelota en otra ubicación.

114
LISP
  • Creado por John McCartney en 1958. Viene del
    acrónimo LISt Processing.
  • Su paradigma de programación es la programación
    funcional por que todo se basa en el concepto de
    función.
  • Su utilización en Inteligencia Artificial fue su
    gran éxito.

115
Introducción
  • Los Componentes Básicos de LISP son átomos y
    listas.
  • Los átomos pueden ser cualquier combinación de
    letras como CASA, ITM, PIEDRA, etc.
  • Las listas son cualquier combinación de átomos
    encerrados entre paréntesis. Se pueden tener
    listas anidadas.

116
Introducción
  • Ejemplos de listas
  • (Esta es una lista)
  • (EstaEsOtraLista)
  • (Lista (anidada))
  • El vocablo término se utilizará para
    identificar un elemento de una lista ya sea átomo
    o sublista.

117
Programación Funcional
  • Está caracterizada por el principio funcional.
  • El valor de una expresión depende sólo de los
    valores de sus subexpresiones, si las tiene.
  • AB es simplemente la suma de A y B.
  • Se excluye las asignaciones

118
Programación Funcional
  • La mayoría de los lenguajes que lo implementan
    son impuros.
  • Permiten asignaciones.
  • Estilo de programación funcional.
  • Los usuarios no deben preocuparse por el manejo
    de memoria.
  • Ciertas operaciones asignan espacios de
    almacenamiento en el momento necesario.

119
Programación Funcional
  • El almacenamiento que se vuelve inaccesible se
    libera.
  • Recolección de basura.
  • Las funciones son valores de primera clase.
  • Tienen la misma jerarquía que cualquier otro
    valor.

120
Programación Funcional
  • Puede ser el valor de una expresión.
  • Puede pasarse como argumento.
  • Puede colocarse en una estructura de datos.

121
Programación Funcional
  • Lenguajes de Paradigma Funcional.
  • LISP
  • SCHEME
  • COMMON LISP
  • ML
  • Haskell

122
Programación Funcional
  • Una función matemática es un mapeo de miembros de
    un conjunto llamado dominio, hacia otro conjunto
    llamado contra-dominio.
  • Toda definición de una función debe incluir de
    manera explicita o implícita
  • Dominio (Puede ser el resultado de un producto
    cruz)
  • Contra-dominio
  • Mapeo

123
Programación Funcional
  • Una función regresa solo un valor del
    contra-dominio para cada valor del dominio.
  • Es función?

124
Programación Funcional
  • El orden de evaluación de sus expresiones de
    mapeo, es controlada por expresiones recursivas y
    condicionales.

125
Programación Funcional
  • Siempre definen los mismos valores, para un mismo
    conjunto de valores.
  • Una función define un valor.
  • No una serie de operaciones sobre valores de una
    memoria, para producir dicho valor.
  • Esto implica que no hay variables en el sentido
    estricto de los lenguajes imperativos.

126
Programación Funcional
  • Variables que representan una localidad de
    memoria.
  • Definición de funciones
  • Nombre.
  • Lista de parámetros entre paréntesis.
  • Expresión de mapeo.
  • cubo(x)xxx
  • Donde x es un número real.

127
Programación Funcional
  • Los lenguajes funcionales, no tienen una
    construcción explícita para ciclos tal como FOR,
    WHILE, etc.,
  • Utilizan una técnica de programación conocida
    como recursividad.
  • Aplicar una función como parte de la definición
    de esa misma función.

128
Programación Funcional
  • Debe existir una condición terminal, con el
    objeto de que la función se bifurque hacia una
    resolución no recursiva en algún punto.
  • De lo contrario, la función entra en un bucle
    infinito y nunca finaliza.
  • Los lenguajes suelen ser tradicionalmente
    interpretados. Existen solo algunas opciones para
    compilar programas.

129
Programación Funcional
  • Por qué no todo mundo usa LISP?
  • Sintaxis única.
  • LISP ? Lots of Silly Parenthesis (Montón de
    paréntesis tontos)
  • Los paréntesis permiten uniformar la sintaxis.

130
Programación Funcional
  • Facilita la manipulación de los programas como
    datos.
  • No existen los tipos de datos.
  • Parte de los errores semánticos permanecen
    ocultos hasta la ejecución.
  • Implantaciones iniciales ineficientes.

131
Estructuras
  • Átomos.
  • Símbolos de Lisp
  • Hacen la función de un identificador.
  • Las constantes numéricas también son átomos.
  • Listas.
  • Estructura de datos.
  • Su procesamiento rara vez requiere inserciones o
    eliminaciones.

132
Programación Funcional
  • Listas.
  • Se especifican delimitando sus elementos entre
    paréntesis.
  • Listas simples.
  • Todos sus elementos son átomos.
  • (A B C D)
  • Listas anidadas.
  • Sus elementos pueden ser átomos o sublistas.
  • (A (B C) D (E (F G)))

133
Programación Funcional
  • Listas.
  • Internamente se implementan como listas simples
    enlazadas.
  • Cada nodo contiene dos punteros y representa un
    elemento.
  • Un nodo para un átomo contiene su primer puntero
    apuntando hacia alguna representación del átomo.

134
Programación Funcional
  • Un nodo para una sublista contiene su primer
    puntero apuntando hacia el primer nodo de la
    sublista.
  • En cualquier caso, el segundo puntero de un nodo,
    apunta hacia el nodo siguiente.
  • A continuación se describen las listas y sus
    elementos de forma gráfica.

135
Programación Funcional
  • (A B C D)
  • (A (B C) D (E (F G)))

136
Programación Funcional
  • Cómo se usa LISP en IA?
  • Se pueden codificar listas que pueden
    representarnos hechos, se pueden codificar reglas
    de inferencias en base a lista por lo que se
    puede hacer Programación Lógica.
  • El motor de inferencia es implementado por el
    usuario pudiendo considerar más tipos de lógicas.

137
Programación Funcional
  • El compilador/intérprete de LISP que se utilizará
    en este curso es el newLisp.
  • newLISP es un proyecto de software libre que cuya
    característica principal es que puede correr en
    ambientes gráficos y a su vez generar
    representaciones visuales.

138
Operaciones Básicas
  • A continuación se describen las operaciones
    básicas sobre LISP.
  • La Evaluación de expresiones se realiza a través
    del Top Level que es muy semejante al shell visto
    en Prolog.
  • Se escriben expresiones Lisp en el Top-Level, y
    el sistema despliega sus valores.

139
Operaciones Básicas
  • El prompt gt indica que Lisp está esperando a que
    una expresión sea escrita.
  • La expresión es evaluada al pulsar enter.

gt 1 1 gt
140
Operaciones Matemáticas
  • Las operaciones matemáticas son básicas para
    poder implementar el paradigma funcional, a
    continuación se describen la forma de realizar
    operaciones matemáticas.
  • Se desea evaluar la siguiente expresión
    aritmética ( 2 3)

gt ( 2 3) 5 gt
141
Operaciones Matemáticas
  • es el operador / función.
  • Los números 2 y 3 son sus argumentos.
  • Notación prefija.
  • Sumar tres parámetros en notación infija implica
    Utilizar dos veces el operador suma 235

142
Operaciones Matemáticas
  • Sumar tres parámetros en notación prefija
  • Una sola llamada a la función, con tres
    parámetros ( 2 3 5)
  • es una función
  • ( 2 3) es una llamada a la función.

gt ( 2 3 5) 10 gt
143
Operaciones Matemáticas
  • Cuando LISP evalúa una llamada a alguna función,
    lo hace en dos pasos
  • Los argumentos de la llamada son evaluados de
    izquierda a derecha. En este caso los valores de
    los parámetros serán, 2 y 3 respectivamente.
  • Los valores de los argumentos son pasados a la
    función nombrada por el operador. En este caso la
    función que regresa 5.

144
Operaciones Matemáticas
  • Uso del operador suma

gt () 0 gt ( 2) 2 gt ( 2 3) 5 gt ( 2 3 5) 10 gt
145
Operaciones Matemáticas
  • Como los operadores pueden tomar un número
    variable de argumentos, es necesario utilizar los
    paréntesis para indicar donde inicia y donde
    termina una expresión.
  • Las expresiones pueden anidarse. Por ejemplo
    (7-1)/(4-2)

gt (/ (- 7 1)(- 4 2)) 3
146
Operaciones Matemáticas
  • Si alguno de los argumentos es una llamada de
    función, ésta será evaluada acorde a las reglas.
  • Los argumentos de la llamada son evaluados de
    izquierda a derecha.
  • Los valores de los argumentos son pasados a la
    función nombrada por el operador.
  • Evaluar (/ (- 7 1) (- 4 2))

147
Operaciones Matemáticas
  • Lisp evalúa el primer argumento de izquierda a
    derecha (-7 1).
  • 7 es evaluado como 7 y 1 como 1.
  • Estos valores son pasados a la función - que
    regresa 6.
  • El siguiente argumento (- 4 2) es evaluado.

148
Operaciones Matemáticas
  • 4 es evaluado como 4 y 2 como 2.
  • Estos valores son pasados a la función - que
    regresa 2.
  • Los valores 6 y 2 son pasados a la función / que
    regresa 3.

149
Operaciones Matemáticas
  • Un operador que no sigue la regla de evaluación
    es quote ( )
  • La regla de evaluación de quote es
  • No hacer nada, solo desplegar lo que el usuario
    tecleó.
  • El operador quote es una forma de evitar que una
    expresión sea evaluada.

150
Operaciones Matemáticas
gt (quote ( 2 3)) ( 2 3) gt ( 2 3) ( 2 3)
  • Tipos de átomos
  • Entero Se escribe como una secuencia de dígitos.
    Ejemplo 256.
  • Cadena Secuencia de caracteres que se delimita
    por comillas. Ejemplo Carpe Diem.

151
Operaciones Matemáticas
  • Enteros y cadenas se evalúan a ellos mismos.
  • Los símbolos son palabras. Normalmente se evalúan
    como si estuvieran escritos en mayúsculas,
    independientemente de como fueron tecleados.
  • Los símbolos por lo general no evalúan a si
    mismos. Es necesario referirse a ellos.

gt Amarone AMARONE
152
Operaciones Matemáticas
  • Las listas se representan como cero o más
    elementos entre paréntesis.
  • Los elementos pueden ser de cualquier tipo,
    incluidas las listas.
  • Se debe usar quote con las listas, pues de otra
    forma Lisp las tomaría como una llamada a
    función.

153
Operaciones Matemáticas
  • Un sólo quote protege a toda la expresión,
    incluidas las expresiones en ella.
  • Se puede construir listas usando el operador list
    que es una función, y por lo tanto, sus
    argumentos son evaluados.

gt (Mis 2 "ciudades") (MIS 2 "CIUDADES") gt (La
lista (a b c) tiene 3 elementos) (LA LISTA (A B
C) TIENE 3 ELEMENTOS)
154
Operaciones Matemáticas
  • Estética minimalista y pragmática
  • Los programas Lisp se representan como listas.
  • Un programa Lisp puede generar código Lisp. Por
    eso es necesario quote.

gt (list mis ( 4 2) "colegas") (MIS 6 COLEGAS)
155
Operaciones Matemáticas
  • Si una lista es precedida por el operador quote,
    la evaluación regresa la misma lista.
  • En otro caso, la lista es evaluada como si fuese
    código.

gt (list ( 2 3) ( 2 3)) (( 2 3) 5)
156
Operaciones Matemáticas
  • En Lisp hay dos formas de representar la lista
    vacía
  • Con un par de paréntesis
  • Con el símbolo NIL.

gt () NIL gt NIL NIL
157
Operaciones Matemáticas
  • La función cons construye listas.
  • Si su segundo argumento es una lista, regresa una
    nueva lista con el primer argumento agregado en
    el frente.

gt (cons a (b c d)) (A B C D) gt (cons a (cons
b nil)) (A B)
158
Operaciones Matemáticas
  • El segundo ejemplo es equivalente a
  • Las funciones primitivas para accesar los
    elementos de una lista son car y cdr.
  • El car de una lista es su primer elemento (el más
    a la izquierda) .

gt (list a b) (A B)
159
Operaciones Matemáticas
  • El cdr es el resto de la lista (menos el primer
    elemento).
  • En realidad en newLisp car se hace a través de
    first y cdr a través de rest.

gt (first '(a b c)) a gt (rest '(a b c)) (b c)
160
Estructuras de Control
  • Ya se mencionó que no existen en LISP estructuras
    de control semejantes a los lenguajes
    procedimentales u orientado a objetos.
  • Un Predicado es una función cuyo valor de regreso
    se interpreta como un valor de verdad (verdadero
    o falso).
  • Es común que el símbolo de un predicado termine
    en p.

161
Estructuras de Control
  • Como nil juega dos roles en Lisp, las funciones
    null (lista vacía) y not (negación) hacen
    exactamente lo mismo
  • La condicional (if) Normalmente toma tres
    argumentos
  • una expresión a probar (test)

gt (null nil) T gt (not nil) T
162
Estructuras de Control
  • una expresión entonces (then) que se evalua si
    test es T.
  • una expresión si no (else) que se evalua si test
    es NIL.

gt (if (list? (a b c d)) ( 1 2) ( 3 4)) 3 gt (if
(list? 34) ( 1 2) ( 3 4)) 7
163
Estructuras de Control
  • La condicional (if) es una macro no una función.
  • Los argumentos de una función siempre se evalúan.
    If solo evalúa dos test y (then o else)
  • Si bien el default para representar verdadero es
    T, todo excepto nil cuenta como verdadero en un
    contexto lógico

gt (if 27 1 2) 1 gt (if nil 1 2) 2
164
Estructuras de Control
  • Los operadores lógicos (and, or) toman cualquier
    número de argumentos, pero solo evalúan los
    necesarios para decidir que valor regresar.
  • Si todos los argumentos son verdaderos
    (diferentes de nil), entonces and regresa el
    valor del último argumento.

gt (and t ( 1 2)) 3
165
Estructuras de Control
  • Si uno de los argumentos de and es falso, ninguno
    de los operadores siguientes es evaluado, y
    regresa nil.
  • De manera similar, or se detiene en cuanto
    encuentra un elemento verdadero.
  • Los operadores lógicos tampoco se consideran
    funciones, sino macros.

gt (or nil nil ( 1 2) nil) 3
166
Funciones de Predicados
  • Es posible definir nuevas funciones con defun que
    toma normalmente tres argumentos
  • Un nombre.
  • Una lista de parámetros
  • Una o más expresiones que conforman el cuerpo de
    la función.

167
Funciones
  • El primer argumento de define indica que el
    nombre de la función definida será area.
  • Los demás argumentos allí se muestran.

gt (define (area base altura) ( base
altura)) (lambda (base altura) ( base altura)) gt
(area 2 3) 6
168
Funciones
  • Cuando la variable representa el argumento de una
    función, se conoce como parámetro.
  • Un símbolo usado de esta forma se conoce como
    variable.
  • El resto de la definición indica lo que se debe
    hacer para calcular el valor de la función.

169
Funciones
  • Símbolos y listas deben protegerse con quote para
    ser accedidos.
  • Una lista debe protegerse porque de otra forma es
    procesada como si fuese código.
  • Un símbolo debe protegerse porque de otra forma
    es procesado como si fuese una variable.

170
Funciones
  • La definición de una función corresponde a la
    versión generalizada de una expresión Lisp.
  • La siguiente expresión verifica si la suma de 1 y
    4 es mayor que 3

gt (gt ( 1 4) 3) T
171
Funciones
  • Substituyendo los números partículares por
    variables, podemos definir una función que
    verifica si la suma de sus dos primeros
    argumentos es mayor que el tercero

gt (define (suma-mayor-que x y z) (gt ( x y)
z)) (lambda (x y z) (gt ( x y) z)) gt
(suma-mayor-que 1 4 3) true
172
Funciones
  • Lisp no distingue entre programa, procedimiento y
    función.
  • Si se desea considerar una función en particular
    como main, es posible hacerlo, pero cualquier
    función puede ser llamada desde el top-level.
  • Entre otras cosas, esto significa que posible
    probar un programa, pieza por pieza, conforme se
    va escribiendo.

173
Funciones
  • Programación incremental (bottom-up).
  • Las funciones que hemos definido hasta ahora,
    llaman a otras funciones para hacer una parte de
    sus cálculos. Por ejemplo suma-mayor-que llama a
    las funciones y gt.
  • Una función puede llamar a cualquier otra
    función, incluida ella misma.

174
Funciones
  • Una función que se llama a si misma se conoce
    como recursiva.
  • Recordar que las funciones recursivas tienen
    definidas un paso base para poder salir de la
    recursión y un paso recursivo.
  • A continuación se muestra un ejemplo de la
    función de Fibonnaci, definir la función
    multiplicación de manera recursiva (utilizando
    sumas).

175
Funciones
  • Función Fibonacci
  • (define (fibonacci n)
  • (if (lt n 2)
  • 1
  • ( (fibonacci (- n 1))
  • (fibonacci (- n 2)))))
  • gt_ (fibonacci 10)
  • 89

176
Funciones
  • Metáfora de la recursividad procesos que se van
    resolviendo.
  • Un estudiante está interesado en Lisp.
  • Va a la biblioteca y el proceso que utilizaría
    para examinar un documento es el siguiente
  • Obtener una copia del documento que le interesa.

177
Funciones
  • Buscar en él la información relativa a Lisp.
  • Si el documento menciona otros documentos que
    puede ser útiles, examinarlos.
  • También se deben tomar en cuenta algunos factores
    no funcionales.

178
Funciones
  • Uno de los operadores más comunes en Lisp es let,
    que permite la creación de nuevas variables
    locales.
  • Una expresión let tiene dos partes
  • Primero viene una lista de expresiones definiendo
    las nuevas variables locales, cada una de ellas
    con la forma (variable expresión).

gt (let ((x 1)(y 2)) ( x y)) 3
179
Funciones
  • Cada variable es inicializada con el valor que
    regrese la expresión asociada a ella. En el
    ejemplo anterior se han creado dos variables, x e
    y, con los valores 1 y 2 respectivamente.
  • Esas variables son válidas dentro del cuerpo de
    let.

180
Funciones
  • Una expresión let tiene dos partes
  • Después de la lista de variables y valores, viene
    el cuerpo de let constituido por una serie de
    expresiones que son evaluadas en orden.
  • En el ejemplo, sólo hay una llamada a ..

181
Funciones
  • En newLisp el operador de asignación más común es
    define.
  • Se puede usar para asignar valores a cualquier
    tipo de variable.

gt (define glob 2000) 2000 gt (let ((n 10))
(define n 2) n) 2
182
Funciones
  • Cuando el primer argumento de setf es un símbolo
    que no es el nombre de una variable local, se
    asume que se trata de una variable global.

gt (define x (a b c)) (A B C)
183
GUI en LISP
  • (load (append (env "NEWLISPDIR")
    "/guiserver.lsp"))
  • (gsinit)
  • (gsframe 'Mixer 200 200 400 300 "Mixer")
  • (gsset-resizable 'Mixer nil)
  • (gsset-border-layout 'Mixer)
  • (gspanel 'SliderPanel)
  • (gsset-grid-layout 'SliderPanel 3 1)
  • (gspanel 'RedPanel)
  • (gspanel 'GreenPanel)

184
GUI en LISP
  • (gspanel 'BluePanel)
  • (gslabel 'Red "Red" "left" 50 10 )
  • (gslabel 'Green "Green" "left" 50 10 )
  • (gslabel 'Blue "Blue" "left" 50 10 )
  • (gsslider 'RedSlider 'slider-handler
    "horizontal" 0 100 0)
  • (gsslider 'GreenSlider 'slider-handler
    "horizontal" 0 100 0)
  • (gsslider 'BlueSlider 'slider-handler
    "horizontal" 0 100 0)

185
GUI en LISP
  • (gslabel 'RedSliderStatus "0" "right" 50 10)
  • (gslabel 'GreenSliderStatus "0" "right" 50 10)
  • (gslabel 'BlueSliderStatus "0" "right" 50 10)
  • (gsadd-to 'RedPanel 'Red 'RedSlider
    'RedSliderStatus)
  • (gsadd-to 'GreenPanel 'Green 'GreenSlider
    'GreenSliderStatus)
  • (gsadd-to 'BluePanel 'Blue 'BlueSlider
    'BlueSliderStatus)
  • (gsadd-to 'SliderPanel 'RedPanel 'GreenPanel
    'BluePanel)

186
GUI en LISP
  • (gscanvas 'Swatch)
  • (gslabel 'Value "")
  • (gsset-font 'Value "Sans Serif" 16)
  • (gsadd-to 'Mixer 'SliderPanel "north" 'Swatch
    "center" 'Value "south")
  • (gsset-visible 'Mixer true)
  • (set 'red 0 'green 0 'blue 0)
  • (gsset-color 'Swatch (list red green blue))
  • (gsset-text 'Value (string (list red green
    blue)))

187
GUI en LISP
  • (define (slider-handler id value)
  • (cond
  • (( id "MAINRedSlider")
  • (set 'red (div value 100))
  • (gsset-text 'RedSliderStatus (string red)))
  • (( id "MAINGreenSlider")
  • (set 'green (div value 100))
  • (gsset-text 'GreenSliderStatus (string green)))

188
GUI en LISP
  • (( id "MAINBlueSlider")
  • (set 'blue (div value 100))
  • (gsset-text 'BlueSliderStatus (string blue)))
  • )
  • (gsset-color 'Swatch (list red green blue))
  • (gsset-text 'Value (string (list red green
    blue))))
  • (gslisten)

189
GUI en LISP
  • Uso de Bibliotecas de Windows
  • (import "user32.dll" "MessageBoxA")
  • (MessageBoxA 0 "Hola Mundo!"
  • "Ejemplo de GUI" 0)
  • Se pueden crear DLLs em lenguajes como C y
    poder utilizarlo em funciones más complejas.

190
Entradas y Salidas
  • Para la definición de salidas se puede utilizar
    la función print.
  • La función time devuelve el tiempo en que tarda
    una función en evaluarse.

gt (print ( 2 3 4 1)) 1010 gt ( ( 2 3) (/ 3 2)
9) 16 gt ( (print ( 2 3)) (print (/ 3 2))
(print 9)) 6 1 9 16 gt time (promedio 1 2) 0
191
Entradas y Salidas
  • Se puede guardar programas con la extensión .lsp
    para después poderlos ejecutar.
  • A continuación se muestra una tabla con las
    principales funciones definidas en la mayoría de
    los dialectos de LISP.

gt (load f/myfile.lisp") Ejecuta todo el
script gt (read-file msgbox.lsp) Visualiza todo
el script
192
Funciones
193
Más de LISP
  • imprimir los primeros 10 números de fibonacci
  • (for (n 1 10)
  • (println n " " (fibonacci n)))
  • (max 1.1 43 23 12 -1 53 4 32) Cuanto da?
  • Qué hacen?
  • (directory "/")
  • (exit)

194
Funciones
  • Para poder operar aritméticamente con dobles se
    ocupan las funciones add, sub, mul y div.
  • La función list? Permite saber si un argumento es
    un lista o no.
  • Null? Permite saber si una lista está vacía o no.
  • La función symbol? Permite determinar si un
    argumento es un símbolo o no.

195
Funciones
  • La función number? Permite saber si un argumento
    es numérico o no.
  • Prototipo de función recursiva
  • (define (suma lista)
  • (if (null? lista) 0
  • ( (first lista) (suma (rest lista)))
  • ))

196
Funciones
  • Cómo se mandaría llamar la función para sumar
    números del 1 al 5?
  • Realizar una función llamada longitud para
    definir el número de argumentos que tiene una
    lista. (longitud (1 2 4)). Devuelve 3
  • Realizar una función llamada miembro para
    encontrar la sublista a partir de la cual se
    encuentra dicho elemento. (miembro 3 (1 2 3 4
    5)) imprime como salida (3 4 5).

197
Más de LISP
  • (set 'alphabet "abcdefghijklmnopqrstuvwxyz")
  • (upper-case alphabet) ?
  • (set 'x ( 2 2 )) ?
  • (set 'y '( 2 2)) ?
  • (dotimes (c 10)
  • (println c " por 3 es " ( c 3)))

198
Más de LISP
  • Ejemplo de un switch
  • (if
  • (lt x 0) (set 'a "imposible")
  • (lt x 10) (set 'a "pequeño")
  • (lt x 20) (set 'a "medio")
  • (gt x 20) (set 'a "largo")
  • )

199
Más de LISP
  • (set 'counter 1)
  • (dolist (i (sequence -5 5))
  • (println "Elemento " counter " " i)
  • (inc 'counter))
  • (dolist (i (sequence -5 5))
  • (println "Element " idx " " i))

200
Más de LISP
  • Switch
  • (case n
  • (1 (println "un"))
  • (2 (println "deux"))
  • (3 (println "trois"))
  • (4 (println "quatre")))
  • (randomize (sequence 1 99))
  • (dup 1 6)

201
Más de LISP
  • (set 'L '(a b c (d e (f g) h i) j k))
  • (define (walk-tree tree)
  • (cond (( tree '()) true)
  • ((atom? (first tree))
  • (println (first tree))
  • (walk-tree (rest tree)))
  • (true (walk-tree (first tree))
  • (walk-tree (rest tree)))))

202
LISP
  • (define (walk-tree tree)
  • (dolist (elmnt tree)
  • (if (list? elmnt)
  • (walk-tree elmnt)
  • (println elmnt))))
  • gt_ (walk-tree L)

203
Bibliografía
  • Rico, F. (2007) Programación Funcional, Material
    de la Materia Lenguajes de Programación, UVAQ
    Noviembre 2007.
  • Montes, M. y Villaseñor L. (2008) Fundamentos de
    Inteligencia Artificial Métodos básicos de
    solución de problemas, Instituto Nacional de
    Astrofísica, Óptica y Electrónica, Puebla, México.

204
Bibliografía
  • Decker, R. y Hirshfield, S. (2001). Máquina
    Analítica. Introducción a las Ciencias de la
    Computación con Uso de Internet, Thomson, México.
    Capítulo 9 Inteligencia Artificial pp. 295-325.
  • Hernández, V. (2007). Mapas Conceptuales La
    gestión del Conocimiento en la Didáctica. Segunda
    Edición, México Alfaomega.

205
Bibliografía
  • Montes, M. y Villaseñor L. (2008) Fundamentos de
    Inteligencia Artificial Métodos básicos de
    solución de problemas, Instituto Nacional de
    Astrofísica, Óptica y Electrónica, Puebla, México.

206
Preguntas, dudas y comentarios?
Write a Comment
User Comments (0)
About PowerShow.com