PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme...

136
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

Transcript of PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme...

Page 1: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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, …

Programación Lógica: Prolog

Page 14: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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

funciones más simples

o Ejecución de una Función:

1. Recibe los datos de entrada: argumentos o

parámetros de las funciones

2. Evalúa las expresiones

3. Devuelve el resultado: valor calculado por la

función

Page 16: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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

• 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 17: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

17

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 18: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

18

Í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 19: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

19

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 20: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

21

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 22: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

22

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 23: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

23

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 24: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

24

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 25: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

25

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 26: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

26

2. Reseña Histórica de Scheme

• LISP

o Dialectos (2 / 2)

Mac LISP (Man and computer or Machine – aided cognition): East Coast Version

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 27: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

27

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 28: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

28

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 29: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

29

2. Reseña Histórica de Scheme

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

o Compilación

Código fuente Compilador

Page 30: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

30

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 31: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

31

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 32: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

32

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 33: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

33

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 34: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

34

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 35: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

35

2. Reseña Histórica de Scheme

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

o Interpretación

Page 36: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

36

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 37: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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

1. Análisis

El código fuente es analizado para

determinar la siguiente sentencia

correcta que va a ser ejecutada.

Page 38: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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.

2. Generación

La sentencia es transformada en Código

ejecutable.

Page 39: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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.

3. Ejecución

El código generado es ejecutado.

Page 40: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

40

2. Reseña Histórica de Scheme

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

o Interpretación

Código fuente Intérprete

Page 41: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

41

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 42: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

42

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 43: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

43

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 44: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

44

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 45: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

45

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 46: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

46

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 47: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

47

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 48: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

48

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 49: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

49

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 50: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

50

P

f l

m n

g h

k

Jerarquía de la estructura de bloques

Page 51: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

51

f l

m n

g h

k

Funciones que pueden ser llamadas por f

P

Page 52: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

52

f l

m n

g h

k

Funciones que pueden llamar a f

P

Page 53: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

53

f l

m n

g h

k

P

Funciones que pueden ser llamadas por h

Page 54: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

54

f l

m n

g h

k

P

Funciones que pueden llamar a h

Page 55: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

55

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 56: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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:

Sólo hay que leer el programa

para determinar la declaración de un identificador

Page 57: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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

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 58: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

58

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 59: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

59

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 60: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

60

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 61: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

61

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

Reglas de la activación más cercana

Page 62: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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

Tienes que ejecutar el programa

para determinar la declaración de un identificador

Page 63: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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

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 64: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

64

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 65: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

65

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 66: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

66

Programa

f g

f

f

h

Pila de Activación Árbol de Activación

Page 67: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

67

Programa

f g

f

f

h

Programa

Pila de Activación Árbol de Activación

Page 68: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

68

f g

f

f

h

f

Programa

Programa

Pila de Activación Árbol de Activación

Page 69: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

69

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 70: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

70

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 71: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

71

f g

f

f

h

g

f

Programa

Programa

Pila de Activación Árbol de Activación

Page 72: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

72

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 73: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

73

f g

f

f

h

g

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 74: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

74

f g

f

f

h

g

h

f

Programa

Programa

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

Page 75: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

75

f g

f

f

h

g

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 76: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

76

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 77: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

77

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 78: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

78

f g

f

f

h

Programa

Pila de Activación Árbol de Activación

Page 79: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

79

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 80: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

80

f

g

Programa

h

g

Programa

h

g

Programa

Programa

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

Page 81: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

81

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 82: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

82

Programa

f g

f

f

h

Ámbito léxico

Pila de Activación Árbol de Activación

Page 83: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

83

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 84: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

84

f g

f

f

h

Ámbito léxico

Uso de x1 en Programa

Programa

Programa

Pila de Activación Árbol de Activación

Page 85: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

85

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 86: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 86

Ejecución con

ámbito léxico

Page 87: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

87

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 88: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

88

f g

f

f

h

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 89: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 89

Ejecución con

ámbito léxico

Page 90: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

90

f g

f

f

h

g

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 91: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 91

Ejecución con

ámbito léxico

Page 92: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

93

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 94: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

94

f g

f

f

h

g

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 95: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 95

Ejecución con

ámbito léxico

Page 96: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

97

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 98: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 98

Ejecución con

ámbito léxico

Page 99: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

100

f g

f

f

h

g

h

f

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 101: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

101

f g

f

f

h

g

h

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 102: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 102

Ejecución con

ámbito léxico

Page 103: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

103

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 104: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 104

Ejecución con

ámbito léxico

Page 105: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

105

f g

f

f

h

Programa

Programa Ámbito léxico

Pila de Activación Árbol de Activación

Page 106: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

106

Programa

f g

f

f

h

Ámbito léxico

Pila de Activación Árbol de Activación

Page 107: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

107

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 108: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

108

Programa

f g

f

f

h

Ámbito dinámico

Pila de Activación Árbol de Activación

Page 109: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

109

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 110: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

110

f g

f

f

h

Programa

Programa Ámbito dinámico

Uso de x1 en programa

Pila de Activación Árbol de Activación

Page 111: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 111

Ejecución con

ámbito

dinámico

Page 112: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

113

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 114: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

114

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 115: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

115

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 116: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

116

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 117: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

117

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 118: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

119

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 120: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

120

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 121: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

121

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 122: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

123

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 124: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 124

Ejecución con

ámbito

dinámico

Page 125: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

125

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 126: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

126

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 127: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

127

f g

f

f

h

g

h

Programa

Programa

Pila de Activación

Ámbito dinámico

Árbol de Activación

Page 128: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

128

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 129: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

129

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 130: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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 130

Ejecución con

ámbito

dinámico

Page 131: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

131

f g

f

f

h

Programa

Programa

Pila de Activación

Ámbito dinámico

Árbol de Activación

Page 132: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

132

Programa

f g

f

f

h

Programa

Pila de Activación

Ámbito dinámico

Árbol de Activación

Page 133: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

133

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 134: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

134

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 135: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

135

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 136: PROGRAMACIÓN DECLARATIVA - Universidad de Córdoba · Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias condicionales Tema

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