137
PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA CUARTO CURSO PRIMER CUATRIMESTRE Tema 1.- Introducción al Lenguaje Scheme UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO

PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA

CUARTO CURSO

PRIMER CUATRIMESTRE

Tema 1.- Introducción al Lenguaje Scheme

UNIVERSIDAD DE CÓRDOBA

ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA

DEPARTAMENTO DE

INFORMÁTICA Y ANÁLISIS NUMÉRICO

Page 2: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

2

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

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

PROGRAMACIÓN DECLARATIVA PROGRAMA

Page 3: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

3

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

Tema 7.- Lectura y Escritura

PROGRAMACIÓN DECLARATIVA PROGRAMA

Page 4: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

4

Programación Declarativa Tema 1.- Introducción al Lenguaje Scheme

Índice

1. Características Fundamentales de la Programación

Funcional

2. Reseña Histórica de Scheme

Page 5: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

5

Índice

1. Características Fundamentales de la Programación

Funcional

2. Reseña Histórica de Scheme

Programación Declarativa Tema 1.- Introducción al Lenguaje Scheme

Page 6: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

6

1. Características Fundamentales de la Programación

Funcional

• La Programación Funcional es un subtipo de la

Programación Declarativa

Page 7: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

7

1. Características Fundamentales de la Programación

Funcional

• Programación Declarativa (1 / 7)

o Objetivo: Descripción del Problema

¿“Qué” problema debe ser resuelto?

Observación:

No importa “cómo” es resuelto el problema

Evita aspectos o características de

implementación

Page 8: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

8

1. Características Fundamentales de la Programación

Funcional

• Programación Declarativa (2 / 7)

o Características

Expresividad

Extensible: regla del 10% - 90%

Protección

Elegancia Matemática

Page 9: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

9

1. Características Fundamentales de la Programación

Funcional

• Programación Declarativa (3 / 7)

o Características

Expresividad

Muestra con claridad el significado de la

programación

Extensible: regla del 10% - 90%

Protección

Elegancia Matemática

Page 10: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

10

1. Características Fundamentales de la Programación

Funcional

• Programación Declarativa (4 / 7)

o Características

Expresividad

Extensible: regla del 10% - 90%

Facilidad para ampliar el lenguaje.

El 10 % del lenguaje permite resolver el 90%

de los problemas.

Protección

Elegancia Matemática

Page 11: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

11

1. Características Fundamentales de la Programación

Funcional

• Programación Declarativa (5 / 7)

o Características

Expresividad

Extensible: regla del 10% - 90%

Protección

El programador no tiene que preocuparse por

detalles internos de gestión de memoria.

Elegancia Matemática

Page 12: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

12

1. Características Fundamentales de la Programación

Funcional

• Programación Declarativa (6 / 7)

Características

Expresividad

Extensible: regla del 10% - 90%

Protección

Elegancia Matemática

Precisión y sencillez

Page 13: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

13

1. Características Fundamentales de la Programación

Funcional

• Programación Declarativa (7 / 7)

o Tipos:

Programación Funcional o Aplicativa:

Lisp, Scheme, Haskell, Scala, Erlang,…

Programación Lógica:

Prolog

Page 14: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

14

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

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

o La Programación Funcional impura permite la

“sentencia de asignación”

Page 15: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

15

1. Características Fundamentales de la Programación

Funcional

• Estructura de los programas en la Programación

Funcional

o El programa es una función compuesta de

expresiones o funciones más simples

o Ejecución de una función:

1. Evaluación de los argumentos o parámetros de

la función

2. Evaluación de las expresiones o funciones más

simples

3. Devolución del valor calculado por la función

Page 16: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

16

1. Características Fundamentales de la Programación

Funcional

• Tipos de lenguajes funcionales

o La mayoría son lenguajes interpretados

o Algunas versiones son lenguajes compilados

Page 17: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

17

1. Características Fundamentales de la Programación

Funcional

• Gestión de la memoria

o 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.

o Recolección de basura: tarea del intérprete.

Page 18: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

18

1. Características Fundamentales de la Programación

Funcional

• En resumen:

o El programador sólo se debe de preocupar por la

Descripción del Problema

Page 19: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

19

Índice

1. Características Fundamentales de la Programación

Funcional

2. Reseña Histórica de Scheme

Programación Declarativa Tema 1.- Introducción al Lenguaje Scheme

Page 20: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

20

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

Page 21: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

21

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

Page 22: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

22

2. Reseña Histórica de Scheme

• LISP

o John McCarthy (MIT)

o El programa “Advice Taker” :

Fundamentos teóricos: Lógica Matemática

Objetivo: deducción e inferencias

o 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)

o Scheme es un dialecto de LISP

Page 23: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

23

2. Reseña Histórica de Scheme

• LISP

o Características de la Programación Funcional

Recursión

Listas

Gestión implícita de la memoria

Programas interactivos e interpretados

Programación Simbólica

Reglas de ámbito Dinámico para identificadores

no locales

Page 24: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

24

2. Reseña Histórica de Scheme

• LISP

o Contribuciones de LISP:

Funciones “Built – in”

Recolección de basura

Lenguaje de Definición Formal:

El propio lenguaje LISP

Page 25: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

25

2. Reseña Histórica de Scheme

• LISP

o Aplicaciones: programas de Inteligencia Artificial

Verificación y prueba de Teoremas

Diferenciación e Integración Simbólica

Problemas de Búsqueda

Procesamiento del Lenguaje Natural

Visión Artificial

Robótica

Sistemas de Representación del Conocimiento

Sistemas Expertos

Etc.

Page 26: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

26

2. Reseña Histórica de Scheme

• LISP

o Dialectos (1 /2)

Mac LISP (Man and computer or Machine – aided

cognition): versión de la Costa Este

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

Page 27: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

27

2. Reseña Histórica de Scheme

• LISP

o Dialectos (2 / 2)

Mac LISP (Man and computer or Machine – aided cognition): versión de la Costa Este

C-LISP: Universidad de Massachusetts

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

Page 28: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

28

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

Page 29: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

29

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Compilación:

El código fuente (alto nivel) es transformado

en código ejecutable (bajo nivel), que puede

ser ejecutado independientemente.

Page 30: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

30

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Compilación

Código fuente Compilador

Page 31: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

31

Errores de compilación

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Compilación

Código fuente Compilador

Page 32: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

32

Código ejecutable

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Compilación

Código fuente Compilador

Page 33: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

33

Datos de entrada

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Compilación

Código ejecutable Código fuente Compilador

Page 34: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

34

Errores de

Ejecución

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Compilación

Datos de entrada

Código ejecutable Código fuente Compilador

Resultados

Page 35: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

35

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Compilación

Código ejecutable Código fuente Compilador

Resultados

Datos de entrada

Page 36: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

36

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación

Page 37: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

37

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación o simulación: consiste en un ciclo

de tres fases

Page 38: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

38

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación o simulación: consiste en un ciclo de

tres fases

1. Análisis

El código fuente es analizado para

determinar la siguiente sentencia

correcta que va a ser ejecutada.

Page 39: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

39

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación o simulación: consiste en un ciclo de

tres fases

1. Análisis

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.

Page 40: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

40

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación o simulación: consiste en un ciclo de

tres fases

1. Análisis

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.

Page 41: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

41

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación

Código fuente Intérprete

Page 42: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

42

Errores de

interpretación

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación

Datos de entrada

Código fuente Intérprete

Page 43: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

43

Resultados

Errores de

ejecución

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación

Datos de entrada

Código fuente Intérprete

Page 44: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

44

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

o Interpretación

Resultados

Datos de entrada

Código fuente Intérprete

Page 45: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

45

o Compilación

Independencia

Necesidades de

memoria

Eficiencia

Global

No interactividad

Código cerrado

durante la ejecución

o Interpretación

Dependencia

Sin necesidades de

memoria

Menos eficiencia

Local

Interactividad

Código abierto

durante la ejecución

2. Reseña Histórica de Scheme

• Comparación entre Compilación e Interpretación

Page 46: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

46

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

Page 47: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

47

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el

dinámico

o Las reglas de ámbito determinan la declaración de

identificadores no locales

o Identificadores no locales:

Variables, Funciones o Procedimientos que son

usados en otra función o procedimiento donde no

han sido declarados.

Page 48: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

48

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el

dinámico

o 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

Page 49: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

49

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Estructura de bloques

Un procedimiento o función puede llamar a

- Sí mismo

- 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 llamado por

- Sí mismo

- Su padre (pero no por su abuelo, …)

- Sus hijos, nietos, bisnietos, …

- Sus hermanos y sus hijos, nietos, ...

Page 50: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

50

P Declaración de procedimiento f Declaración de procedimiento g Declaración de procedimiento h Declaración de procedimiento k Declaración de procedimiento l Declaración de procedimiento m Declaración de procedimiento n

Ejemplo

de estructura

de bloques

Page 51: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

51

P

f l

m n

g h

k

Jerarquía de la estructura de bloques

Page 52: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

52

f l

m n

g h

k

Funciones que pueden ser llamadas por f

P

Page 53: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

53

f l

m n

g h

k

Funciones que pueden llamar a f

P

Page 54: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

54

f l

m n

g h

k

P

Funciones que pueden ser llamadas por h

Page 55: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

55

f l

m n

g h

k

P

Funciones que pueden llamar a h

Page 56: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

56

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Ámbito léxico o estático

La declaración de un identificador no local

depende del contexto léxico más cercano

Reglas del anidamiento más cercano

Page 57: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

57

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Ámbito léxico o estático

La declaración de un identificador no local

depende del contexto léxico más cercano

Sólo hay que leer el programa para determinar la

declaración de un identificador

Page 58: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

58

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Ámbito léxico o estático

Reglas del anidamiento más cercano

El ámbito de un procedimiento (*) f incluye al

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 g

que incluya a f

Observación (*) : procedimiento, función o

bloque.

Page 59: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

59

Declaración de procedimiento h Declaración de una variable x (x1) Declaración de una variable y (y1) Declaración de una variable z (z1) Declaración de procedimiento g Declaración de una variable x (x2) Declaración de una variable y (y2) Declaración de procedimiento f Declaración de una variable x (x3) 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

Ejemplo:

Ámbito léxico

con

“estructura de bloques”

Page 60: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

60

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Ámbito léxico o estático

Sin estructura de bloques

Si x no es local para una función específica entonces no es local para todas las funciones

Page 61: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

61

int x; /* x1 */

int y; /* y1 */

int z; /* z1 */

main()

{

int x; /* x2 */

int y; /* y2 */

/* Uso de x x2 */

/* 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 */

}

Ejemplo en C:

Ámbito léxico

sin

“estructura de bloques”

Las variables

globales no son

recomendables

Page 62: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

62

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Ámbito dinámico

La declaración de un identificador depende de la ejecución del programa.

Regla de activación más cercana.

Page 63: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

63

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Ámbito dinámico

La declaración de un identificador depende de la ejecución del programa.

Hay que ejecutar el programa para determinar la declaración de un identificador

Page 64: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

64

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el dinámico

o Ámbito dinámico

Reglas de la activación más cercana

El ámbito de un procedimiento (*) f incluye al procedimiento f.

Si un identificador no local x es usado en la activación de f entonces la declaración de x debe ser encontrada en el procedimiento activo más cercano g con una declaración de x

Observación (*): procedimiento, función o bloque

Page 65: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

65

2. Reseña Histórica de Scheme

• Comparación entre el ámbito léxico (o estático) y el

dinámico

o Observación:

El Ámbito dinámico permite que un

identificador pueda estar asociado a

declaraciones diferentes durante la ejecución

del programa.

Page 66: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

66

Programa

Declaración de una variable x

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Ejemplo:

Comparación

entre

los ámbitos

léxico

y

dinámico

Page 67: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

67

Programa

f g

f

f

h

Pila de Activación Árbol de Activación

Page 68: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

68

Programa

f g

f

f

h

Programa

Pila de Activación Árbol de Activación

Page 69: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

69

f g

f

f

h

f

Programa

Programa

Pila de Activación Árbol de Activación

Page 70: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

70

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 71: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

71

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 72: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

72

f g

f

f

h

g

f

Programa

Programa

Pila de Activación Árbol de Activación

Page 73: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

73

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 74: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

74

f g

f

f

h

g

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 75: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

75

f g

f

f

h

g

h

f

Programa

Programa

Pila de Activación Pila de Activación Árbol de Activación

Page 76: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

76

f g

f

f

h

g

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 77: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

77

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 78: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

78

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 79: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

79

f g

f

f

h

Programa

Pila de Activación Árbol de Activación

Page 80: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

80

f

g g

f

h

Cambios en la Pila de Activación (1 / 2)

Programa

f

Programa

Programa Programa Programa

g

Programa

g

Programa

h

g

Programa

Page 81: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

81

f

g

Programa

h

g

Programa

h

g

Programa

Programa

Cambios en la Pila de Activación (2 / 2)

Page 82: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

82

Ejecución con

ámbito léxico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 83: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

83

Programa

f g

f

f

h

Ámbito léxico

Pila de Activación Árbol de Activación

Page 84: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

84

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Ejecución con

ámbito léxico

Page 85: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

85

f g

f

f

h

Ámbito léxico

Uso de x1 en Programa

Programa

Programa

Pila de Activación Árbol de Activación

Page 86: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

86

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Ejecución con

ámbito léxico

Page 87: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 87

Ejecución con

ámbito léxico

Page 88: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

88

f g

f

f

h

f

Ámbito léxico

Uso de x1 en f

Programa

Programa

Pila de Activación Árbol de Activación

Page 89: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

89

f g

f

f

h

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 90: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 90

Ejecución con

ámbito léxico

Page 91: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

91

f g

f

f

h

g

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 92: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 92

Ejecución con

ámbito léxico

Page 93: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 93

Ejecución con

ámbito léxico

Page 94: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

94

f g

f

f

h

g

f

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito léxico

Uso de x1 en f

Page 95: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

95

f g

f

f

h

g

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 96: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 96

Ejecución con

ámbito léxico

Page 97: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 97

Ejecución con

ámbito léxico

Page 98: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

98

f g

f

f

h

g

h

Ámbito léxico

Uso de x2 en h

Programa

Programa

Pila de Activación Árbol de Activación

Page 99: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 99

Ejecución con

ámbito léxico

Page 100: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 100

Ejecución con

ámbito léxico

Page 101: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

101

f g

f

f

h

g

h

f

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 102: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

102

f g

f

f

h

g

h

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 103: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 103

Ejecución con

ámbito léxico

Page 104: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

104

f g

f

f

h

g

Programa

Programa Ámbito léxico

Uso de x2 en g

Pila de Activación Árbol de Activación

Page 105: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 105

Ejecución con

ámbito léxico

Page 106: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

106

f g

f

f

h

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 107: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

107

Programa

f g

f

f

h

Ámbito léxico

Pila de Activación Árbol de Activación

Page 108: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

108

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 109: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

109

Programa

f g

f

f

h

Ámbito dinámico

Pila de Activación Árbol de Activación

Page 110: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

110

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 111: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

111

f g

f

f

h

Programa

Programa Ámbito dinámico

Uso de x1 en programa

Pila de Activación Árbol de Activación

Page 112: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 112

Ejecución con

ámbito

dinámico

Page 113: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 113

Ejecución con

ámbito

dinámico

Page 114: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

114

f g

f

f

h

f

Programa

Programa Ámbito dinámico

Uso de x1 de programa en f

Pila de Activación Árbol de Activación

Page 115: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

115

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 116: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

116

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 117: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

117

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 118: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

118

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 119: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

119

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 120: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

120

f g

f

f

h

g

f

Programa

Programa Ámbito dinámico

Observación: uso de x2 de g en f

Pila de Activación Árbol de Activación

Page 121: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

121

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 122: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

122

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 123: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

123

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 124: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

124

f g

f

f

h

g

h

Programa

Programa Ámbito dinámico

Uso de x2 de g en h

Pila de Activación Árbol de Activación

Page 125: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 125

Ejecución con

ámbito

dinámico

Page 126: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

126

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 127: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

127

f g

f

f

h

g

h

f

Programa

Programa Ámbito dinámico

Observación: uso de x2 de g en f

Pila de Activación

Árbol de Activación

Page 128: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

128

f g

f

f

h

g

h

Programa

Programa

Pila de Activación

Ámbito dinámico

Árbol de Activación

Page 129: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

129

Ejecución con

ámbito

dinámico

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g

Page 130: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

130

f g

f

f

h

g

Ámbito dinámico

Uso de x2 de g en g

Programa

Programa

Pila de Activación

Árbol de Activación

Page 131: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

Programa

Declaración de una variable x (x1)

Declaración de procedimiento f

Uso de x

Declaración de procedimiento g

Declaración de una variable x (x2)

Declaración de procedimiento h

Uso de x

Llamada a f

Llamada a f

Llamada a h

Si condición = verdadero

entonces Llamada a g

si no Uso de x

fin si

Uso de x

Llamada a f

Llamada a g 131

Ejecución con

ámbito

dinámico

Page 132: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

132

f g

f

f

h

Programa

Programa

Pila de Activación

Ámbito dinámico

Árbol de Activación

Page 133: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

133

Programa

f g

f

f

h

Programa

Pila de Activación

Ámbito dinámico

Árbol de Activación

Page 134: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

134

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

Page 135: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

135

2. Reseña Histórica de Scheme

• Origen de Scheme

o Gerald Jay Sussman (MIT) and Guy Lewis Steele Jr.

o Pregunta:

¿Cómo sería LISP con reglas de Ámbito Léxico o Estático?

o Respuesta: un nuevo lenguaje Scheme

Implementación más eficiente de la recursión

Funciones de primera clase

Reglas semánticas rigurosas

o Influencia en Common LISP: reglas de ámbito léxico

o Revised 5 Report on the Algorithmic Language Scheme

Page 136: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

136

2. Reseña Histórica de Scheme

• Origen de Scheme

o Estructura de los programas de Scheme

Secuencia de

definiciones de funciones y variables

y expresiones

Page 137: PROGRAMACIÓN DECLARATIVA...Reevaluación y el “corte” Tema 12.- Entrada y Salida Segunda parte: Prolog PROGRAMACIÓN DECLARATIVA PROGRAMA . 3 Primera parte: Scheme Tema 1.- Introducción

PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA

CUARTO CURSO

PRIMER CUATRIMESTRE

Tema 1.- Introducción al Lenguaje Scheme

UNIVERSIDAD DE CÓRDOBA

ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA

DEPARTAMENTO DE

INFORMÁTICA Y ANÁLISIS NUMÉRICO