Post on 06-May-2020
transcript
LENGUAJES LENGUAJES
UNIVERSIDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR
DEPARTAMENTO DEINFORMÁTICA Y ANÁLISIS NUMÉRICO
DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN
INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS
SEGUNDO CURSO
PRIMER CUATRIMESTRE
Tema 1.- Introducción al Lenguaje Scheme
Primera parte: Scheme
Tema 1.- Introducción al Lenguaje Scheme
Tema 2.- Expresiones y Funciones
Tema 3.- Predicados y sentencias condicionales
Tema 4.- Iteración y Recursión
Tema 5.- Tipos de Datos Compuestos
Tema 6.- Abstracción de Datos
LENGUAJES DE INTELIGENCIA LENGUAJES DE INTELIGENCIA ARTIFICIAL ARTIFICIAL PROGRAMAPROGRAMA
2
Tema 6.- Abstracción de Datos
Tema 7.- Lectura y Escritura
Tema 8.- Introducción al Lenguaje Prolog
Tema 9.- Elementos Básicos de Prolog
Tema 10.- Listas
Tema 11.- Reevaluación y el “corte”
Tema 12.- Entrada y Salida
Segunda parte: Prolog
Primera parte: Scheme
Tema 1.- Introducción al Lenguaje Scheme
Tema 2.- Expresiones y Funciones
Tema 3.- Predicados y sentencias condicionales
LENGUAJES DE INTELIGENCIA LENGUAJES DE INTELIGENCIA ARTIFICIAL ARTIFICIAL PROGRAMAPROGRAMA
3
Tema 4.- Iteración y Recursión
Tema 5.- Tipos de Datos Compuestos
Tema 6.- Abstracción de Datos
Tema 7.- Lectura y Escritura
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Índice
1. Características Fundamentales de la Programación Funcional
4
1. Características Fundamentales de la Programación Funcional
2. Reseña Histórica de Scheme
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Índice
1. Características Fundamentales de la Programación Funcional
5
1. Características Fundamentales de la Programación Funcional
2. Reseña Histórica de Scheme
1. Características Fundamentales de la Programación Funcional
� La Programación Funcional es un subtipo de la Programación Declarativa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
6
1. Características Fundamentales de la Programación Funcional
� Programación Declarativa (1 / 2)
� Objetivo: Descripción del Problema
“Qué” problema debe ser resuelto?
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
7
� Observación:
- No importa “cómo” es resuelto el problema
- Evita aspectos o características de implementación
1. Características Fundamentales de la Programación Funcional
� Programación Declarativa (2 / 2)
� Características
� Expresividad
� Extensible: regla del 10% - 90%
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
8
� Extensible: regla del 10% - 90%
� Protección
� Elegancia Matemática
� Tipos:
� Programación Funcional o Aplicativa:
- Lisp, Scheme, Haskell, …
� Programación Lógica: Prolog
1. Características Fundamentales de la Programación Funcional
� Principio de la Programación Funcional “Pura”
“El valor de la expresión sólo depende del valor de sus subexpresiones, si las tiene”
� No existen efectos colaterales
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
9
� No existen efectos colaterales
El valor de “a + b” sólo depende de “a” y “b”.
� El término función es usado en su sentido matemático
� No hay instrucciones: programación sin asignaciones
� La Programación Funcional impura permite la
“sentencia de asignación”
1. Características Fundamentales de la Programación Funcional
� Estructura de los programas en la Programación Funcional
� El programa es una función compuesta de Funciones más simples
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
10
� Ejecución de una Función:
� Recibe los datos de entrada: argumentos o parámetros de las funciones
� Evalúa las expresiones
� Devuelve el resultado: valor calculado por la función
1. Características Fundamentales de la Programación Funcional
� Tipos de lenguajes funcionales
� La mayoría son lenguajes interpretados
� Algunas versiones son lenguajes compilados
� Gestión de la memoria
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
11
Gestión de la memoria
� Gestión implícita de la memoria:
� La gestión de la memoria es una tarea del intérprete.
� El programador no debe preocuparse por la gestión de la memoria.
� Recolección de basura: tarea del intérprete.
� En resumen:� El programador sólo se debe de preocupar por la Descripción
del Problema
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Índice
1. Características Fundamentales de la Programación Funcional
12
1. Características Fundamentales de la Programación Funcional
2. Reseña Histórica de Scheme
2. Reseña Histórica de Scheme
� LISP
� Comparación entre Compilación e Interpretación
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Origen de Scheme
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
13
� Origen de Scheme
2. Reseña Histórica de Scheme
� LISP
� Comparación entre Compilación e Interpretación
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Origen de Scheme
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
14
� Origen de Scheme
2. Reseña Histórica de Scheme
� LISP
� John McCarthy (MIT)
� El programa “Advice Taker” : � Fundamentos teóricos: Lógica Matemática
� Objetivo: Deducción e inferencias
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
15
� LISP: LISt Processing (1956 – 1958)� Segundo lenguaje histórico de Inteligencia Artificial
(después de IPL)
� En la actualidad, segundo lenguaje histórico en uso (después de Fortran)
� LISP está basado en el Lambda Calculus (Alonzo Church)
� Scheme es un dialecto de LISP
2. Reseña Histórica de Scheme
� LISP
� Características de la Programación Funcional
� Recursión
� Listas
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
16
� Gestión implícita de la memoria
� Programas interactivos e interpretados
� Programación Simbólica
� Reglas de ámbito Dinámico para identificadores no locales
2. Reseña Histórica de Scheme
� LISP
� Contribuciones de LISP:
� Funciones “Built – in”
� Recolección de basura
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
17
� Lenguaje de Definición Formal:
— El propio lenguaje LISP
2. Reseña Histórica de Scheme
� LISP
� Aplicaciones: Programas de Inteligencia Artificial
� Verificación y prueba de Teoremas
� Diferenciación e Integración Simbólica
� Problemas de Búsqueda
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
18
� Problemas de Búsqueda
� Procesamiento del Lenguaje Natural
� Visión Artificial
� Robótica
� Sistemas de Representación del Conocimiento
� Sistemas Expertos
� Etc.
2. Reseña Histórica de Scheme
� LISP
� Dialectos (1 /2)
� Mac LISP (Man and computer or Machine – aidedcognition): Versión de la Costa Este
� Inter LISP (Interactive LISP): Versión de la Costa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
19
� Inter LISP (Interactive LISP): Versión de la Costa Oeste
- Compañía de Bolt, Beranek y Newman (BBN)
- Centro de Investigación de Xerox en Palo Alto (Texas)
- Máquina LISP
2. Reseña Histórica de Scheme
� LISP
� Dialectos (2 / 2)
� Mac LISP (Man and computer or Machine – aidedcognition): East Coast Version- C-LISP: Universidad de Massachusetts
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
20
- Franz LISP: Universidad de California (Berkeley). Versión compilada.
- NIL (New implementation of LISP): MIT.
- PSL (Portable Standard LISP): Universidad de Utah
- Scheme: MIT.
- T (True): Universidad de Yale
- Common LISP
2. Reseña Histórica de Scheme
� LISP
� Comparación entre Compilación e Interpretación
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Origen de Scheme
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
21
� Origen de Scheme
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Compilación:
� El código fuente (alto nivel) es transformadoen código ejecutable (bajo nivel), que puede ser ejecutado independientemente.
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
22
ser ejecutado independientemente.
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Compilación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
23
Código fuenteCódigo fuente �� CompiladorCompilador
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Compilación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
24
Errores de compilaciónErrores de compilación
��
Código fuenteCódigo fuente �� CompiladorCompilador
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Compilación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
25
�� Código ejecutableCódigo ejecutableCódigo fuenteCódigo fuente �� CompiladorCompilador
Datos de Datos de entradaentrada
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Compilación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
26
��
�� Código ejecutableCódigo ejecutableCódigo fuenteCódigo fuente �� CompiladorCompilador
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Compilación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Datos de Datos de entradaentrada
27
Errores de Errores de EjecuciónEjecución
��
�� Código ejecutableCódigo ejecutableCódigo fuenteCódigo fuente �� CompiladorCompilador
��
ResultadosResultados
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Compilación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Datos de Datos de entradaentrada
28
����
Datos de Datos de entradaentrada
�� Código ejecutableCódigo ejecutableCódigo fuenteCódigo fuente �� CompiladorCompilador
ResultadosResultados
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
29
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación o simulación: consiste en un ciclo de tres fases
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
30
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación o simulación: consiste en un ciclo de tres fase
1. Análisis
� El código fuente es analizado para determinar la
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
31
� El código fuente es analizado para determinar la siguiente sentencia correcta que va a ser ejecutada.
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación o simulación: consiste en un ciclo de tres fase
1. Análisis
� El código fuente es analizado para determinar la
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
32
� El código fuente es analizado para determinar la siguiente sentencia correcta que va a ser ejecutada.
2. Generación
� La sentencia es transformada en Código ejecutable.
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación o simulación: consiste en un ciclo de tres fase
1. Análisis
� El código fuente es analizado para determinar la
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
33
� El código fuente es analizado para determinar la siguiente sentencia correcta que va a ser ejecutada.
2. Generación
� La sentencia es transformada en Código ejecutable.
3. Ejecución
� El código generado es ejecutado.
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
34
Código fuenteCódigo fuente �� IntérpreteIntérprete
Errores de Errores de interpretacióninterpretación
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación
Datos de Datos de entradaentrada
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
35
�� interpretacióninterpretaciónDatos de Datos de entradaentrada
Código fuenteCódigo fuente �� IntérpreteIntérprete
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Datos de Datos de entradaentrada
36
ResultadosResultados
��Errores de Errores de ejecuciónejecución
��
Datos de Datos de entradaentrada
Código fuenteCódigo fuente �� IntérpreteIntérprete
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
� Interpretación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Datos de Datos de entradaentrada
37
ResultadosResultados
����
Datos de Datos de entradaentrada
Código fuenteCódigo fuente �� IntérpreteIntérprete
� Compilación
- Independencia
- Necesidades de memoria
� Interpretación
- Dependencia
- Sin necesidades de memoria
2. Reseña Histórica de Scheme
� Comparación entre Compilación e Interpretación
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
38
memoria
- Eficiencia
- Global
- No interactividad
- Código cerradodurante la ejecución
memoria
- Menos eficiencia
- Local
- Interactividad
- Código abiertodurante la ejecución
2. Reseña Histórica de Scheme
� LISP
� Comparación entre Compilación e Interpretación
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Origen de Scheme
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
39
� Origen de Scheme
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Las reglas de ámbito determinan la declaración de identificadores no locales
� Identificadores no locales:� Variables, Funciones o Procedimientos que son usados en
otra función o procedimiento donde no han sido declarados.
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
40
� Variables, Funciones o Procedimientos que son usados en otra función o procedimiento donde no han sido declarados.
� Dos tipos
� Ámbito Léxico o Estático- Con “estructura de bloques”: Pascal, Scheme
- Sin “estructura de bloques”: C, Fortran
� Ámbito Dinámico- Siempre con “estructura de bloques”: Lisp, SNOBOL,
APL
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico� Estructura de bloques
� Un procedimiento o función puede llamar a - Sí mismo- Sus hijos (pero no a sus nietos…)
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
41
- Sus hijos (pero no a sus nietos…)- Sus hermanos (pero no a sus sobrinos)- Su padre, abuelo, bisabuelo, …- Los hermanos de su padres, abuelo, …
� Un procedimiento o función puede ser llamadopor - Sí mismo- Su padre (pero no por su abuelo, …)- Sus hijos, nietos, bisnietos, …- Sus hermanos y sus hijos, nietos, ...
P
Declaración de procedimiento f
Declaración de procedimiento g
Declaración de procedimiento h
Declaración de procedimiento k
Ejemplo
de estructura
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
42
Declaración de procedimiento l
Declaración de procedimiento m
Declaración de procedimiento n
de estructura
de bloques
P
f l
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
43
m ng h
k
Jerarquía de la estructura de bloques
f l
P
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
44
m ng h
k
Funciones que pueden ser llamadas por f
f l
P
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
45
m ng h
k
Funciones que pueden llamar a f
f l
P
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
46
m ng h
k
Funciones que pueden ser llamadas por h
f l
P
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
47
m ng h
k
Funciones que pueden llamar a h
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Ámbito léxico o estático
� La declaración de un identificador no local depende del contexto léxico más cercano:
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
48
Sólo tienes que leer el programa
para determinar la declaración de un identificador
� Reglas del anidamiento más cercano
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Ámbito léxico o estático
� Reglas del anidamiento más cercano
- El ámbito de un procedimiento (*) f incluye al procedimiento f.
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
49
procedimiento f.
- Si un identificador no local x es usado en f entonces la declaración de x debe ser encontrada en procedimiento más cercano gque incluya a f
- Observación (*) : procedimiento, función o bloque.
Declaración de procedimiento hDeclaración de una variable x (x1)Declaración de una variable y (y1)Declaración de una variable z (z1)
Declaración de procedimiento gDeclaración de una variable x (x2) Declaración de una variable y (y2)
Declaración de procedimiento fDeclaración de una variable x (x3)
Ejemplo:
Ámbito léxico
con
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
50
Uso de x ( ���� x3)Uso de y ( ���� y2)Uso de z ( ���� z1)
Uso de x ( ���� x2)Uso de y ( ���� y2)Uso de z ( ���� z1)Llamada a f
Uso de x ( ���� x1)Uso de y ( ���� y1)Uso de z ( ���� z1)Llamada a g
con
“estructura de bloques”
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Ámbito léxico o estático
� Sin estructura de bloques
- Si x no es local para una función específicaentonces no es local para todas las funciones
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
51
entonces no es local para todas las funciones
int x; /* x1 */int y; /* y1 */int z; /* z1 */
main(){
int x; /* x2 */int y; /* y2 */
/* Uso de x ���� x2 *//* Uso de y ���� y2 */
Ejemplo en C:
Ámbito léxico
Las variablesglobales no son recomendables
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
52
/* Uso de y ���� y2 *//* Uso de z ���� z1 *//* Llamada a f */f ();
}
f(){
int x; /* x3 *//* Uso de x ���� x3 *//* Uso de y ���� y1 *//* Uso de z ���� z1 */}
Ámbito léxico
sin
“estructura de bloques”
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Ámbito dinámico
� La declaración de un identificador depende de la ejecución del programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
53
Tienes que ejecutar el programa
para determinar la declaración de un identificador
� Reglas de la activación más cercana
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Ámbito dinámico
� Reglas de la activación más cercana
- El ámbito de un procedimiento (*) f incluye al procedimiento f.
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
54
procedimiento f.
- Si un identificador no local x es usado en la activación de f entonces la declaración de xdebe ser encontrada en el procedimiento activo más cercano g con una declaración de x
- Observación (*) : procedimiento, función o bloque
2. Reseña Histórica de Scheme
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Observación:
� El Ámbito dinámico permite que un identificador pueda estar asociado a
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
55
identificador pueda estar asociado a declaraciones diferentes durante la ejecución del programa.
ProgramaDeclaración de una variable x
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x
Ejemplo:
Comparación
entre
los ámbitos
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
56
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
los ámbitos
léxico
y
dinámico
Programa
f g
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
57
f
f
h
Pila de Activación Árbol de Activación
Programa
f g
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
58
f
f
h
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
59
f
f
h
f
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
60
f
f
h
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
61
f
f
h
g
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
62
f
f
h
g
f
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
63
f
f
h
g
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
64
f
f
h
g
h
Programa
Pila de Activación Árbol de Activación
f g
f
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
65
f
f
h
g
h
f
Programa
Pila de ActivaciónÁrbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
66
f
f
h
g
h
Programa
Pila de ActivaciónÁrbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
67
f
f
h
g
Programa
Pila de ActivaciónÁrbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
68
f
f
h
Programa
Pila de ActivaciónÁrbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
69
f
f
h
Pila de ActivaciónÁrbol de Activación
f
gg
f
Programa Programa
Programa ProgramaPrograma
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
70
h
Cambios en la Pila de Activación (1 / 2)
f
Programa
g
Programa
g
Programa
h
g
Programa
f
g
Programa
h
g
Programa
h
g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
71
Programa
Cambios en la Pila de Activación (2 / 2)
Ejecución con
Ámbito léxico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
72
Ámbito léxico Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Programa
f g
Ámbito léxico
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
73
f
f
h
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
74
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
Ámbito léxico
� Uso de x1 en Programa
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
75
f
f
h
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
76
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
77
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
Ámbito léxico� Uso de x1 en f
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
78
f
f
h
f
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico
79
f
f
h
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
80
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico
81
f
f
h
g
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
82
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
83
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico� Uso de x1 en f
84
f
f
h
g
f
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico
85
f
f
h
g
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
86
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
87
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
Ámbito léxico� Uso de x2 en h
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
88
f
f
h
g
h
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
89
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
90
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
f
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
91
f
f
h
g
h
f
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico
92
f
f
h
g
h
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
93
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico� Uso de x2 en g
94
f
f
h
g
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
95
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
léxico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico
96
f
f
h
Programa
Pila de Activación Árbol de Activación
Programa
f g
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito léxico
97
f
f
h
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
98
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
Programa
f g
Ámbito dinámico
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
99
f
f
h
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
100
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
� Uso de x1 en programa
101
f
f
h
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
102
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
103
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
� Uso de x1 de programaen f
104
f
f
h
f
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
105
f
f
h
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
106
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
107
f
f
h
g
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
108
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Ejecución con
Ámbito
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
109
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
� Observación: uso de x2 de g en f
110
f
f
h
g
f
Programa
Pila de Activación Árbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
111
f
f
h
g
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
112
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
113
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
� Uso de x2 de g en h
114
f
f
h
g
h
Programa
Pila de Activación Árbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
115
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
116
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
f g
f
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
� Observación: uso de x2 de g en f
117
f
f
h
g
h
f
Programa
Pila de ActivaciónÁrbol de Activación
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
118
f
f
h
g
h
Programa
Pila de ActivaciónÁrbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Ejecución con
Ámbito
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
119
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito
dinámico
f g
Ámbito dinámico
� Uso de x2 de g en g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
120
f
f
h
g
Programa
Pila de ActivaciónÁrbol de Activación
ProgramaDeclaración de una variable x (x1)
Declaración de procedimiento fUso de x
Declaración de procedimiento gDeclaración de una variable x (x2)
Declaración de procedimiento h
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ejecución con
Ámbito
121
Declaración de procedimiento hUso de xLlamada a f
Llamada a fLlamada a hSi condición = verdadero
entonces Llamada a gsi no Uso de x
fin siUso de xLlamada a fLlamada a g
Ámbito dinámico
f g
Programa
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
Ámbito dinámico
122
f
f
h
Programa
Pila de ActivaciónÁrbol de Activación
Programa
f g
Ámbito dinámico
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
123
f
f
h
Programa
Pila de ActivaciónÁrbol de Activación
2. Reseña Histórica de Scheme
� LISP
� Comparación entre Compilación e Interpretación
� Comparación entre el ámbito léxico (o estático) y el dinámico
� Origen de Scheme
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
124
� Origen de Scheme
2. Reseña Histórica de Scheme
� Origen de Scheme
� Gerald Jay Sussman (MIT) and Guy Lewis Steele Jr.
� Pregunta:
Cómo sería LISP con reglas de Ámbito Léxico o Estático?
� Respuesta: un nuevo lenguaje � Scheme
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
125
� Respuesta: un nuevo lenguaje � Scheme
� Implementación más eficiente de la recursión
� Funciones de primera clase
� Reglas semánticas rigurosas
� Influencia en Common LISP: reglas de ámbito léxico
� Revised 5 Report on the Algorithmic LanguageScheme
2. Reseña Histórica de Scheme
� Origen de Scheme
� Estructura de los programas de Scheme
� Secuencia de
- definiciones de funciones y variables
- y expresiones
Lenguajes de Inteligencia Artificial Tema 1.- Introducción al Lenguaje Scheme
126
- y expresiones
LENGUAJES LENGUAJES
UNIVERSIDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR
DEPARTAMENTO DEINFORMÁTICA Y ANÁLISIS NUMÉRICO
DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN
INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS
SEGUNDO CURSO
PRIMER CUATRIMESTRE
Tema 1.- Introducción al Lenguaje Scheme