UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción...

136
PROGRAMACIÓN DECLARATIVA PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN 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 UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción...

Page 1: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

PROGRAMACIÓN DECLARATIVAPROGRAMACIÓN DECLARATIVAINGENIERÍA INFORMÁTICA

ESPECIALIDAD DE COMPUTACIÓN

CUARTO CURSO

PRIMER CUATRIMESTRE

Tema 1.- Introducción al Lenguaje Scheme

UNIVERSIDAD DE CÓRDOBA

ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA

DEPARTAMENTO DEINFORMÁTICA Y ANÁLISIS NUMÉRICO

Page 2: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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 PROGRAMACIÓN DECLARATIVA PROGRAMAPROGRAMA

Page 3: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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 PROGRAMACIÓN DECLARATIVA PROGRAMAPROGRAMA

Page 4: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

6

1. Características Fundamentales de la Programación Funcional

La Programación Funcional es un subtipo de la Programación Declarativa

Page 7: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

7

1. Características Fundamentales de la Programación Funcional

Programación Declarativa (1 / 7)

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

8

1. Características Fundamentales de la Programación Funcional

Programación Declarativa (2 / 7)

Características

Expresividad

Extensible: regla del 10% - 90%

Protección

Elegancia Matemática

Page 9: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

9

1. Características Fundamentales de la Programación Funcional

Programación Declarativa (3 / 7)

Características

Expresividad

– Muestra con claridad el significado de la programación

Extensible: regla del 10% - 90%

Protección

Elegancia Matemática

Page 10: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

10

1. Características Fundamentales de la Programación Funcional

Programación Declarativa (4 / 7)

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

11

1. Características Fundamentales de la Programación Funcional

Programación Declarativa (5 / 7)

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

13

1. Características Fundamentales de la Programación Funcional

Programación Declarativa (7 / 7)

Tipos:

Programación Funcional o Aplicativa:

- Lisp, Scheme, Haskell, …

Programación Lógica: Prolog

Page 14: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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

La Programación Funcional impura permite la

“sentencia de asignación”

Page 15: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

15

1. Características Fundamentales de la Programación Funcional

Estructura de los programas en la Programación Funcional

El programa es una función compuesta de Funciones más simples

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

16

1. Características Fundamentales de la Programación Funcional

Tipos de lenguajes funcionales

La mayoría son lenguajes interpretados

Algunas versiones son lenguajes compilados

Gestión de la memoria

Gestión implícita de la memoria:

La gestión de la memoria es una tarea del intérprete.

El programador no debe preocuparse por la gestión de la memoria.

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

Page 17: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

17

1. Características Fundamentales de la Programación Funcional

En resumen:

El programador sólo se debe de preocupar por la

Descripción del Problema

Page 18: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

21

2. Reseña Histórica de Scheme LISP John McCarthy (MIT)

El programa “Advice Taker” : Fundamentos teóricos: Lógica Matemática

Objetivo: deducción e inferencias

LISP: LISt Processing (1956 – 1958) Segundo lenguaje histórico de Inteligencia Artificial

(después de IPL)

En la actualidad, segundo lenguaje histórico en uso (después de Fortran)

LISP está basado en el Lambda Calculus (Alonzo Church)

Scheme es un dialecto de LISP

Page 22: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

22

2. Reseña Histórica de Scheme

LISP

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

23

2. Reseña Histórica de Scheme

LISP

Contribuciones de LISP:

Funciones “Built – in”

Recolección de basura

Lenguaje de Definición Formal:

— El propio lenguaje LISP

Page 24: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

24

2. Reseña Histórica de Scheme

LISP

Aplicaciones: Programas de Inteligencia Artificial Verificación y prueba de Teoremas

Diferenciación e Integración Simbólica

Problemas de Búsqueda

Procesamiento del Lenguaje Natural

Visión Artificial

Robótica

Sistemas de Representación del Conocimiento

Sistemas Expertos

Etc.

Page 25: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

25

2. Reseña Histórica de Scheme

LISP

Dialectos (1 /2)

Mac LISP (Man and computer or Machine – aidedcognition): Versión de la Costa Este

Inter LISP (Interactive LISP): Versión de la Costa Oeste

- Compañía de Bolt, Beranek y Newman (BBN)

- Centro de Investigación de Xerox en Palo Alto (Texas)

- Máquina LISP

Page 26: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

26

2. Reseña Histórica de Scheme

LISP Dialectos (2 / 2)

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

- C-LISP: Universidad de Massachusetts

- 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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

28

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Compilación:

El código fuente (alto nivel) es transformadoen código ejecutable (bajo nivel), que puede ser ejecutado independientemente.

Page 29: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

29

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Compilación

Código fuenteCódigo fuente CompiladorCompilador

Page 30: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

30

Errores de compilaciónErrores de compilación

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Compilación

Código fuenteCódigo fuente CompiladorCompilador

Page 31: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

31

Código ejecutableCódigo ejecutable

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Compilación

Código fuenteCódigo fuente CompiladorCompilador

Page 32: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

32

Datos de entradaDatos de entrada

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Compilación

Código ejecutableCódigo ejecutableCódigo fuenteCódigo fuente CompiladorCompilador

Page 33: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

33

Errores de Errores de EjecuciónEjecución

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Compilación

Datos de entradaDatos de entrada

Código ejecutableCódigo ejecutableCódigo fuenteCódigo fuente CompiladorCompilador

ResultadosResultados

Page 34: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

34

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Compilación

Código ejecutableCódigo ejecutableCódigo fuenteCódigo fuente CompiladorCompilador

ResultadosResultados

Datos de entradaDatos de entrada

Page 35: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

35

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Interpretación

Page 36: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

36

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

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

Page 37: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

37

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

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

1. Análisis El código fuente es analizado para determinar la

siguiente sentencia correcta que va a ser ejecutada.

Page 38: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

38

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

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

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

39

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

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

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

40

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Interpretación

Código fuenteCódigo fuente IntérpreteIntérprete

Page 41: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

41

Errores de Errores de interpretacióninterpretación

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Interpretación

Datos de entradaDatos de entrada

Código fuenteCódigo fuente IntérpreteIntérprete

Page 42: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

42

ResultadosResultados

Errores de Errores de ejecuciónejecución

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Interpretación

Datos de entradaDatos de entrada

Código fuenteCódigo fuente IntérpreteIntérprete

Page 43: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

43

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Interpretación

ResultadosResultados

Datos de entradaDatos de entrada

Código fuenteCódigo fuente IntérpreteIntérprete

Page 44: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

44

Compilación

- Independencia

- Necesidades de memoria

- Eficiencia

- Global

- No interactividad

- Código cerradodurante la ejecución

Interpretación

- Dependencia

- Sin necesidades de memoria

- Menos eficiencia

- Local

- Interactividad

- Código abiertodurante la ejecución

2. Reseña Histórica de Scheme

Comparación entre Compilación e Interpretación

Page 45: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

46

2. Reseña Histórica de Scheme Comparación entre el ámbito léxico (o estático) y el

dinámico

Las reglas de ámbito determinan la declaración de identificadores no locales

Identificadores no locales:

Variables, Funciones o Procedimientos que son usados en otra función o procedimiento donde nohan sido declarados.

Page 47: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

47

2. Reseña Histórica de Scheme Comparación entre el ámbito léxico (o estático) y el

dinámico 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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

48

2. Reseña Histórica de Scheme Comparación entre el ámbito léxico (o estático) y el

dinámico Estructura de bloques Un procedimiento o función puede llamar a

- Sí mismo- Sus hijos (pero no a sus nietos…)- Sus hermanos (pero no a sus sobrinos)- Su padre, abuelo, bisabuelo, …- Los hermanos de su padres, abuelo, …

Un procedimiento o función puede ser llamadopor

- Sí mismo- Su padre (pero no por su abuelo, …)- Sus hijos, nietos, bisnietos, …- Sus hermanos y sus hijos, nietos, ...

Page 49: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

50

P

f l

m ng h

k

Jerarquía de la estructura de bloques

Page 51: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

51

f l

m ng h

k

Funciones que pueden ser llamadas por f

P

Page 52: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

52

f l

m ng h

k

Funciones que pueden llamar a f

P

Page 53: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

53

f l

m ng h

k

P

Funciones que pueden ser llamadas por h

Page 54: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

54

f l

m ng h

k

P

Funciones que pueden llamar a h

Page 55: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

55

2. Reseña Histórica de Scheme

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

La declaración de un identificador no local depende del contexto léxico más cercano

Reglas del anidamiento más cercano

Page 56: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

56

2. Reseña Histórica de Scheme

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

La declaración de un identificador no local depende del contexto léxico más cercano:

Sólo hay que leer el programa

para determinar la declaración de un identificador

Page 57: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

57

2. Reseña Histórica de Scheme

Comparación entre el ámbito léxico (o estático) y el dinámico Ámbito léxico o estático Reglas del anidamiento más cercano

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

- Si un identificador no local x es usado en f entonces la declaración de x debe ser encontrada en procedimiento más cercano gque incluya a f

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

Page 58: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

58

Declaración de procedimiento hDeclaración de una variable x (x1)Declaración de una variable y (y1)Declaración de una variable z (z1)

Declaración de procedimiento gDeclaración de una variable x (x2) Declaración de una variable y (y2)

Declaración de procedimiento fDeclaración de una variable x (x3)

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

59

2. Reseña Histórica de Scheme

Comparación entre el ámbito léxico (o estático) y el dinámico Ámbito léxico o estático Sin estructura de bloques

- Si x no es local para una función específicaentonces no es local para todas las funciones

Page 60: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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 variablesglobales no son recomendables

Page 61: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

61

2. Reseña Histórica de Scheme Comparación entre el ámbito léxico (o estático) y el

dinámico Ámbito dinámico

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

Reglas de la activación más cercana

Page 62: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

62

2. Reseña Histórica de Scheme Comparación entre el ámbito léxico (o estático) y el

dinámico Ámbito dinámico

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

Tienes que ejecutar el programa

para determinar la declaración de un identificador

Page 63: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

63

2. Reseña Histórica de Scheme Comparación entre el ámbito léxico (o estático) y el

dinámico Ámbito dinámico Reglas de la activación más cercana

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

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

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

Page 64: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

64

2. Reseña Histórica de Scheme

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

Observación:

El Ámbito dinámico permite que un identificador pueda estar asociado a declaraciones diferentes durante la ejecución del programa.

Page 65: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

65

ProgramaDeclaración de una variable x

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejemplo:

Comparación

entre

los ámbitos

léxico

y

dinámico

Page 66: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

66

Programa

f g

f

f

h

Pila de Activación Árbol de Activación

Page 67: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

67

Programa

f g

f

f

h

Programa

Pila de Activación Árbol de Activación

Page 68: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

68

f g

f

f

h

f

Programa

Programa

Pila de Activación Árbol de Activación

Page 69: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

69

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 70: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

70

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 71: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

71

f g

f

f

h

g

f

Programa

Programa

Pila de Activación Árbol de Activación

Page 72: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

72

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Page 73: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

73

f g

f

f

h

g

h

Programa

Programa

Pila de Activación Árbol de Activación

Page 74: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

74

f g

f

f

h

g

h

f

Programa

Programa

Pila de ActivaciónÁrbol de Activación

Page 75: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

75

f g

f

f

h

g

h

Programa

Programa

Pila de ActivaciónÁrbol de Activación

Page 76: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

76

f g

f

f

h

g

Programa

Programa

Pila de ActivaciónÁrbol de Activación

Page 77: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

77

f g

f

f

h

Programa

Programa

Pila de ActivaciónÁrbol de Activación

Page 78: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

78

f g

f

f

h

Programa

Pila de ActivaciónÁrbol de Activación

Page 79: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

79

f

gg

f

h

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

Programa

f

Programa

Programa ProgramaPrograma

g

Programag

Programah

g

Programa

Page 80: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

80

f

g

Programa

h

g

Programa

h

g

Programa

Programa

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

Page 81: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

81

Ejecución con

Ámbito léxico

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Page 82: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

82

Programa

f g

f

f

h

Ámbito léxico

Pila de Activación Árbol de Activación

Page 83: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

83

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 84: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

85

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 86: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

86

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 87: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

88

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito léxico

Page 89: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

89

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 90: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

90

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito léxico

Page 91: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

91

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 92: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

92

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 93: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

94

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito léxico

Page 95: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

95

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 96: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

96

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 97: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

98

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 99: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

99

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 100: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

100

f g

f

f

h

g

h

f

Programa

Programa

Pila de Activación Árbol de Activación

Page 101: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

101

f g

f

f

h

g

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito léxico

Page 102: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

102

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 103: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

103

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito léxico Uso de x2 en g

Page 104: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

104

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

léxico

Page 105: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

105

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito léxico

Page 106: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

106

Programa

f g

f

f

h

Pila de Activación Árbol de Activación

Ámbito léxico

Page 107: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

107

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 108: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

108

Programa

f g

f

f

h

Ámbito dinámico

Pila de Activación Árbol de Activación

Page 109: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

109

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 110: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

110

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Uso de x1 en programa

Page 111: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

111

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 112: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

112

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 113: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

113

f g

f

f

h

f

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Uso de x1 de programaen f

Page 114: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

114

f g

f

f

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 115: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

115

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 116: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

116

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 117: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

117

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 118: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

118

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 119: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

119

f g

f

f

h

g

f

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Observación: uso de x2 de g en f

Page 120: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

120

f g

f

f

h

g

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Page 121: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

121

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 122: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

122

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 123: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

123

f g

f

f

h

g

h

Programa

Programa

Pila de Activación Árbol de Activación

Ámbito dinámico

Uso de x2 de g en h

Page 124: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

124

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 125: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

125

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 126: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

126

f g

f

f

h

g

h

f

Programa

Programa

Pila de ActivaciónÁrbol de Activación

Ámbito dinámico

Observación: uso de x2 de g en f

Page 127: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

127

f g

f

f

h

g

h

Programa

Programa

Pila de ActivaciónÁrbol de Activación

Ámbito dinámico

Page 128: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

128

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito

dinámico

Page 129: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

130

ProgramaDeclaración de una variable x (x1)

Declaración de procedimiento fUso de x

Declaración de procedimiento gDeclaración de una variable x (x2)

Declaración de procedimiento hUso de xLlamada a f

Llamada a fLlamada a hSi condición = verdadero

entonces Llamada a gsi no Uso de x

fin siUso de xLlamada a fLlamada a g

Ejecución con

Ámbito dinámico

Page 131: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

131

f g

f

f

h

Programa

Programa

Pila de ActivaciónÁrbol de Activación

Ámbito dinámico

Page 132: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

132

Programa

f g

f

f

h

Programa

Ámbito dinámico

Pila de ActivaciónÁrbol de Activación

Page 133: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

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: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

134

2. Reseña Histórica de Scheme

Origen de Scheme

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

Pregunta:

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

Respuesta: un nuevo lenguaje Scheme Implementación más eficiente de la recursión

Funciones de primera clase

Reglas semánticas rigurosas

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

Revised 5 Report on the Algorithmic LanguageScheme

Page 135: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

135

2. Reseña Histórica de Scheme

Origen de Scheme

Estructura de los programas de Scheme

Secuencia de

- definiciones de funciones y variables

- y expresiones

Page 136: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA … · 2 Primera parte: Scheme Tema 1.- Introducción al Lenguaje Scheme Tema 2.- Expresiones y Funciones Tema 3.- Predicados y sentencias

PROGRAMACIÓN DECLARATIVAPROGRAMACIÓN DECLARATIVAINGENIERÍA INFORMÁTICA

ESPECIALIDAD DE COMPUTACIÓN

CUARTO CURSO

PRIMER CUATRIMESTRE

Tema 1.- Introducción al Lenguaje Scheme

UNIVERSIDAD DE CÓRDOBA

ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA

DEPARTAMENTO DEINFORMÁTICA Y ANÁLISIS NUMÉRICO