universidad de cÓrdoba escuela politÉcnica superior...

166
PROGRAMACIÓN DECLARATIVA PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER CUATRIMESTRE Tema 2.- Expresiones y funciones UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO

Upload: others

Post on 27-Apr-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

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

ESPECIALIDAD DE COMPUTACIÓN

CUARTO CURSO

PRIMER CUATRIMESTRE

Tema 2.- Expresiones y funciones

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 SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

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 SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

3

Primera parte: Scheme

PROGRAMACIÓN DECLARATIVA PROGRAMACIÓN DECLARATIVA PROGRAMAPROGRAMA

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

Page 4: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

4

Programación Declarativa Tema 2.- Expresiones y funciones

Índice

1. Elementos básicos de Scheme

2. Expresiones

3. Funciones o procedimientos definidos por el programador

4. Procedimientos anónimos: la forma especial “lambda”

5. Definición de variables locales: la forma especial “let”

Page 5: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

5

Programación Declarativa Tema 2.- Expresiones y funciones

Índice

1. Elementos básicos de Scheme

2. Expresiones

3. Funciones o procedimientos definidos por el programador

4. Procedimientos anónimos: la forma especial “lambda”

5. Definición de variables locales: la forma especial “let”

Page 6: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

6

1. Elementos básicos de Scheme

• Caracteres

• Cadenas de caracteres

• Números

• Identificadores

Page 7: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

7

1. Elementos básicos de Scheme

• Caracteres

• Cadenas de caracteres

• Números

• Identificadores

Page 8: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

8

1. Elementos básicos de Scheme

• Caracteres

o Letras

o Dígitos

o Caracteres alfabéticos extendidos

o Espacios en blanco

o Punto y coma

o Caracteres especiales

Page 9: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

9

1. Elementos básicos de Scheme

• Caracteres

o Letras

a, b, ..., z, A, B, ..., Z

Las letras mayúsculas y minúsculas sonconsideradas iguales

Excepciones

Forman parte de una cadena: “Cadena”

Forman parte de un literal : ’Literal

Están precedidos de una barra inclinada: \A

Page 10: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

10

1. Elementos básicos de Scheme

• Caracteres

o Dígitos

0, 1, 2, …, 9

Page 11: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

11

1. Elementos básicos de Scheme

• Caracteres

o Caracteres alfabéticos extendidos

+ - . * / < = > ! ? : $ _ ~ ^

Algunos poseen un significado especial

Pueden formar parte de un identificador

Fin-de-mes, estrella*, saldo.final, etc.

Convenios de notación

!: se asocia a una función que modifica una variable: editar!

?: se asocia a un identificador que es un predicado: persona?

Page 12: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

12

1. Elementos básicos de Scheme

• Caracteres

o Espacios en blanco

Espacios en blanco, tabuladores, saltos de línea y saltos de página.

Se utilizan para

mejorar la legibilidad del programa

separar los “componentes léxicos”

Son significativos cuando forman parte de una cadena de caracteres:

“Cadena con espacios”

Page 13: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

13

1. Elementos básicos de Scheme

• Caracteres

o Punto y coma: “;”

Se utiliza para crear comentarios de una línea

; Ejemplo de comentario de una línea

;; Más realce: dos puntos y comas

Si aparece en una cadena de caracteres, pierdesu significado especial

“Punto y coma ; que no inicia un comentario”

Page 14: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

14

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Punto: .

Más y menos: + -

Paréntesis: ( )

Comilla simple: '

Backquote: `

Coma: ,

Coma y arroba: ,@

Comillas dobles: “ ”

Barra: \

Corchetes y llaves: [ ] { }

Sostenido: #

Page 15: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

15

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Punto: .

Forma parte de

Identificadores: saldo.final

Números: 2.5

Pares : (a . b)

Indica el comienzo de parámetros opcionales

(lambda (x1 x2 x3 . z))

Page 16: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

16

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

+ -

Operadores prefijos de adición y sustracción

(+ 3 4)

(- 10 7)

Pueden formar parte de

identificadores: fin-de-mes, iva+irpf

Observación: no debe haber espacios

números: -32

Page 17: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

17

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Paréntesis: ( )

Delimitadores de

Expresiones aritméticas: (* 2 (+ a 1))

Listas: (a b c d)

Page 18: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

18

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Comilla simple: '

Permite definir un literal

‘dato

Page 19: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

19

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Backquote: `

Usado para indicar datos “casi” constantes.

Permite construir una lista o vector en los queno se conocen todavía todos sus elementos

Este carácter es equivalente al comandoquasiquote y se usa junto con “coma y coma yarroba”: , ,@

(continúa)

Page 20: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

20

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Backquote: `(define c 3)

`(a b ,c)

(a b 3)

(define c 3)

(quasiquote (a b ,c))

(a b 3)

Page 21: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

21

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Coma: ,

Coma y arroba: , @

Se utilizan junto con backquote para evaluar datos “casi” constantes

, evalúa una expresión

,@ evalúa una lista

Page 22: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

22

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Coma: ,

Coma y arroba: ,@

`#(10 5 ,(sqrt 4) ,@(map sqrt ’(16 9)) 8)

#(10 5 2 4 3 8)

Page 23: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

23

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Comillas dobles: " "

Delimita cadenas de caracteres

"Cadena maravillosa"

Page 24: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

24

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Barra inclinada: \

Permite indicar constantes de tipo carácter

\a

También se usa como carácter de escape dentro de una cadena de caracteres

" Mi \"gran\" amigo"

Page 25: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

25

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Corchetes y llaves: [ ] { }

Caracteres reservados para futuras ampliaciones del lenguaje.

Page 26: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

26

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Sostenido (almohadilla) (1/3): #

Constantes lógicas:

#t: verdadero

#f: falso

Carácter constante:

#\a

Inicio de un vector:

#(1 1 1)

Page 27: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

27

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Sostenido (almohadilla) (2/3): #

Indica que el número es exacto: #e

> #e1e2

100

Indica que el número es inexacto: #i

> #i1e2

100.0

Page 28: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

28

1. Elementos básicos de Scheme

• Caracteres

o Caracteres especiales

Sostenido (almohadilla) (3/3) : #

Número binario: #b101

Número octal: #o323

Número decimal: #d910

Número hexadecimal: #fff

Page 29: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

29

1. Elementos básicos de Scheme

• Caracteres

• Cadenas de caracteres

• Números

• Identificadores

Page 30: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

30

1. Elementos básicos de Scheme

• Cadenas de caracteres

o Secuencias de caracteres delimitadas por comillas (").

o Las comillas pueden formar parte de una cadena de caracteres si van precedidas de la barra inclinada (\).

o Ejemplos

"esto es una cadena"

"dato 3 "

"Querida \"Marta\": "

"100“

"==>"

Page 31: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

31

1. Elementos básicos de Scheme

• Caracteres

• Cadenas de caracteres

• Números

• Identificadores

Page 32: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

32

1. Elementos básicos de Scheme

• Números

o Enteros

o Racionales

o Reales

o Complejos

Page 33: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

33

1. Elementos básicos de Scheme

• Números

o Enteros:

o 4, -56, 209,...

o binarios: #b101 (5 en base 10)

o octales: #o101 (65 en base 10)

o decimales: 101 ó #d101

o hexadecimales: #x101 (257 en base 10)

#f ó #F (15 en base 10)

Page 34: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

34

1. Elementos básicos de Scheme

• Números

o Racionales

5/3, -9/7, 37/17,...

o Reales

34.7, -93.001, 3.0, …

o Complejos

2+3i, 7.5-3.4i, +i, -…

Page 35: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

35

1. Elementos básicos de Scheme

• Caracteres

• Cadenas de caracteres

• Números

• Identificadores

Page 36: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

36

1. Elementos básicos de Scheme

• Identificadores

o Secuencia de letras, dígitos y caracteres “alfabéticos extendidos” que no comienza por un número.

o Ejemplos:

nuevo

lista->vector

X2

grande?

cambiar?

fin-de-mes

Page 37: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

37

1. Elementos básicos de Scheme

• Identificadores

o Secuencia de letras, dígitos y caracteres “alfabéticos extendidos” que no comienza por un número.

o Ejemplos: identificadores válidos pero no recomendables

+

**

<=?

Page 38: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

38

1. Elementos básicos de Scheme

• Identificadores

o No se distinguen las letras mayúsculas y minúsculas

o Los siguientes identificadores representan el mismo objeto:

nuevo

NUEVO

Nuevo

NueVo

NuEvO

Page 39: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

39

1. Elementos básicos de Scheme

• Identificadores

o Los identificadores son utilizados para representar

Palabras claves

Variables

Funciones

Símbolos

Page 40: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

40

1. Elementos básicos de Scheme

• Identificadores

o Palabras claves

=> and begin case

cond define delay do

else if lambda let

letrec let* not or

quasiquote quote set!

unquote unquote-splicing

Page 41: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

41

1. Elementos básicos de Scheme

• Identificadores

o Variables

Uso de palabras claves como variables

Algunos intérpretes permiten que las palabras claves sean usadas como variables

No es recomendable:

Limita la portabilidad

Aumenta la ambigüedad

Ejemplo: (define define 9)

Page 42: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

42

1. Elementos básicos de Scheme

• Identificadores

o Símbolo

Representar un símbolo cuando aparece como un literal o dentro de un literal.

‘uno

(quote uno)

Page 43: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

43

Programación Declarativa Tema 2.- Expresiones y funciones

Índice

1. Elementos básicos de Scheme

2. Expresiones

3. Funciones o procedimientos definidos por el programador

4. Procedimientos anónimos: la forma especial “lambda”

5. Definición de variables locales: la forma especial “let”

Page 44: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

44

2. Expresiones

• Descripción

• Tipos de expresiones

Page 45: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

45

2. Expresiones

• Descripción

• Tipos de expresiones

Page 46: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

46

2. Expresiones

• Descripción

o Una expresión una instrucción que devuelve unvalor.

o Las expresiones son escritas mediante unanotación prefija delimitada por paréntesis

o Un programa escrito en Scheme es una secuenciade

expresiones

y definiciones de funciones y variables.

Page 47: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

47

2. Expresiones

• Descripción

• Tipos de expresiones

Page 48: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

48

2. Expresiones

• Tipos de expresiones

o Literales

o Variables

o Operadores, funciones o procedimientos

o Formas especiales

Page 49: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

49

2. Expresiones

• Tipos de expresiones

o Literales

o Variables

o Operadores, funciones o procedimientos

o Formas especiales

Page 50: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

50

2. Expresiones

• Tipos de expresiones

o Literales

Los literales son expresiones que se autoevalúan

Cada expresión se evalúa a un dato cuyarepresentación gráfica es equivalente a laexpresión.

Page 51: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

51

2. Expresiones

• Tipos de expresiones

o Literales

Tipos de literales

Números

Cadenas

Constantes lógicas (#t y #f)

Definidos usando la comilla o quote

Page 52: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

52

2. Expresiones

• Tipos de expresiones

o Literales

Ejemplos (1/4)

Literal valor

"muestra" "muestra"

(quote muestra) muestra

'muestra muestra

Page 53: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

53

2. Expresiones

• Tipos de expresiones

o Literales

Ejemplos (2/4)

Literal valor

3 3(quote 3) 3'3 3

20.5 20.5(quote 20.5) 20.5'20.5 20.5

Page 54: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

54

2. Expresiones

• Tipos de expresiones

o Literales

Ejemplos (3/4)

Literal valor

(quote (a b c)) (a b c)

'(a b c) (a b c)

(quote ()) ()

'() ()

Page 55: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

55

2. Expresiones

• Tipos de expresiones

o Literales

Ejemplos (4/4)

Literal valor

(quote "hola") "hola“"hola" "hola"

#t #t(quote #t) #t'#t #t

Page 56: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

56

2. Expresiones

• Tipos de expresiones

o Literales

o Variables

o Operadores, funciones o procedimientos

o Formas especiales

Page 57: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

57

2. Expresiones

• Tipos de expresiones

o Variable

Identificador que tiene asociada una posiciónde memoria en la que se puede almacenar unvalor.

Page 58: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

58

2. Expresiones

• Tipos de expresiones

o Variable

Declaración o definición

(define <nombre> <expresión>)

<nombre> es un identificador

<expresión> es una expresión de Scheme

Page 59: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

59

2. Expresiones

• Tipos de expresiones

o Variable

define

Reserva una posición de memoria que asocia a la variable.

Si la variable ya existe entonces sólo se produce la asignación del valor.

Page 60: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

60

2. Expresiones

• Tipos de expresiones

o Variable

Se usan las reglas de ámbito léxico o estático para determinar el valor de una variable.

El valor dependerá del contexto más próximo que contenga a la variable.

Page 61: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

61

2. Expresiones

• Tipos de expresiones

o Variable

Ejemplos:

(define x 10)x 10

(define y 20)y 20

Page 62: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

62

2. Expresiones

• Tipos de expresiones

o Variable

Modificación

Definiendo de nuevo la variable(define a 12)a 12(define a 15)a 15

Uso de la forma especial set!(define a 12)(set! a 15)a 15

Page 63: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

63

2. Expresiones

• Tipos de expresiones

o Variable

set!

El símbolo de admiración "!" indica que la forma especial modifica el valor de la variable

No se puede utilizar la forma especial set! sobre una variable que no haya sido previamente definida o declarada.

Observación:

la programación funcional se caracteriza por evitar el uso de set!

Page 64: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

64

2. Expresiones

• Tipos de expresiones

o Variable

Scheme: un lenguaje débilmente tipificado o dinámicamente tipificado,

Los tipos no están asociados a las variables

Los tipos están asociados a los valores

Una variable puede ser definida con un valorde un cierto tipo y después se le puedeasignar el valor de otro tipo.

Page 65: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

65

2. Expresiones

• Tipos de expresiones

o Variable

Scheme: un lenguaje débilmente tipificado o dinámicamente tipificado

Ejemplo:

(define clave "luna-roja")clave "luna-roja"

(define clave 10)clave 10

(set! clave 'x)clave x

Page 66: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

66

2. Expresiones

• Tipos de expresiones

o Literales

o Variables

o Operadores, funciones o procedimientos

o Formas especiales

Page 67: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

67

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Secuencia de una o más expresiones encerradasentre paréntesis.

Page 68: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

68

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Sintaxis

(<operador> <operando1> ...)

Se utiliza la notación prefija

Operador:

Predefinido: +, *, sqrt, expt, acos, ...

Definido por el programador

Operando: expresión más simple

Page 69: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

69

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Evaluación

1. Se evalúan el operador y los operandosa. Se usa un orden no especificadob. Se utilizan las reglas de ámbito estáticoc. Se obtienen un procedimiento y unos

argumentos.

2. Se aplica el procedimiento a los argumentos generando el resultado final de la expresión.

Page 70: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

70

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Los procedimientos definidos por el programador y los suministrados por el intérprete tienen el mismo tratamiento.

Se aconseja no redefinir operadores predefinidos por el lenguaje.

Ventajas:

Eficiencia

Portabilidad

Page 71: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

71

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: suma

Admite cero argumentos

(+ ) 0

Un argumento

(+ 3) 3

Dos argumentos

(+ 3 4) 7

Page 72: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

72

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: suma

Tres o más argumentos

(+ 2.7 10 5.0 7) 24.7

(+ 4 5 12 7 6) 34

Page 73: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

73

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: suma

Los argumentos pueden ser sub-expresiones

(+ (+ 2.5 4) (+ 3.0 9)) 18.5

Utilización de la forma “sangrada”

(+

(+ 2.5 4)

(+ 3.0 9)

) 18.5

Page 74: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

74

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: suma

Equivalencia

(+ (+ 2.5 4) (+ 3.0 9)) 18.5

(+ 2.5 4 3.0 9) 18.5

Page 75: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

75

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: suma

Observación:

Siempre hay que separar el operador de los argumentos usando espacios en blanco

(+3 7 5)

Error

Page 76: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

76

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: productoCero argumentos

(* ) 1

Un argumento(* 2) 2

Dos argumentos(* 2 3) 6

Tres o más argumentos(* 3 4.0 1.5 2) 36.0

Page 77: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

77

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: producto

Expresiones anidadas(* (* 3.5 3) (* 7 2.5)) 119.75

Expresiones “sangradas”(*

(* 3.5 3)(* 7 2.5)

) 119.75

Page 78: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

78

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: producto

Equivalencia

(* (* 3.5 3) (* 7 2.5)) 119.75

(* 3.5 3 7 2.5) 119.75

Page 79: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

79

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: diferencia

No admite cero argumentos

(- ) Error

Un argumento

(- 3) -3

Dos argumentos

(- 10 3) 7

Page 80: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

80

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: diferencia

Tres o más argumentos

(- 10 2 3 4) 1

Equivalente a

(- 10 (+ 2 3 4)) 1

Page 81: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

81

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: diferencia

Anidamiento de expresiones

(- (- 100 25) (- 3 12)) 84

(-(- 100 25)(- 3 12)

) 84

Page 82: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

82

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: división

No admite cero argumentos

(/ ) Error

Un argumento

(/ 9)

(/ 9.0) 0.1111111

91

Page 83: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

83

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: división

Dos argumentos

(/ 10 2) 5

(/ 10 3) 3

(Nota: scheme hace una suma 3+ )

(/ 10 3) 3.333333

31

31

Page 84: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

84

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: división

Tres o más argumentos

(/ 60 3 4 ) 5

Equivalente a

(/ 60 (* 3 4)) 5

Page 85: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

85

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos:

Anidamiento de expresiones(+

(* 2(- 7 4)

)(/ 10 2)

) 11

Page 86: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

86

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: expresiones con variables

(define pi 3.141592)pi 3.141592

(define radio 10)radio 10

(* pi (* radio radio)) 314.1592

Page 87: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

87

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: expresiones con variables

(define area (* pi (* radio radio))

)

area 314.1592

Page 88: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

88

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: expresiones con variables(/

(* 4 pi (* radio radio radio))3

) 4188.7893(define volumen

(/ (* 4 pi (* radio radio radio))3

))volumen 4188.7893

Page 89: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

89

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos:

(define mejor-pi (/ 355.0 113.0))

mejor-pi 3.1415929

Page 90: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

90

2. Expresiones

• Tipos de expresiones

o Operadores, funciones o procedimientos

Ejemplos: funciones predefinidas

(sqrt 2) 1.4142135623730951

(- pi (acos -1.0)) 0

(exp 1) 2.718281828459045

(expt 2 3) 8

Page 91: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

91

2. Expresiones

• Tipos de expresiones

o Literales

o Variables

o Operadores, funciones o procedimientos

o Formas especiales

Page 92: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

92

2. Expresiones

• Tipos de expresiones

o Formas especiales

Expresiones que tienen al principio una palabra clave del lenguaje scheme.

Page 93: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

93

2. Expresiones

• Tipos de expresiones

o Formas especiales

TiposCrean un nuevo contexto de ámbito léxico do, lambda, let, let* y letrec

Controlan la ejecución begin, case, cond, do, if, and, or

Manejo de errores assert, bkpt y error.

Extensiones sintácticas macro y syntax

Page 94: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

94

Programación Declarativa Tema 2.- Expresiones y funciones

Índice

1. Elementos básicos de Scheme

2. Expresiones

3. Funciones o procedimientos definidos por el programador

4. Procedimientos anónimos: la forma especial “lambda”

5. Definición de variables locales: la forma especial “let”

Page 95: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

95

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

• Evaluación mediante el modelo de sustitución

• Definiciones internas y estructuras de bloque

Page 96: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

96

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

• Evaluación mediante el modelo de sustitución

• Definiciones internas y estructuras de bloque

Page 97: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

97

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

o Asocia una expresión compuesta a un identificador dentro de un contexto léxico o estático

o Sintaxis(define (<nombre> <argumentos>)

<cuerpo>)

donde <nombre>: identificador de Scheme <argumentos>: parámetros de la función <cuerpo>declaración de variablesdeclaración de funciones internasuna o más expresiones

Page 98: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

98

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

o Ejemplos(define (cuadrado x)

(* x x))

Se invoca el procedimiento "cuadrado"(cuadrado 2) 4

(cuadrado 3.0) 9.0

(cuadrado (+ 3 6)) 81

(cuadrado (cuadrado 4)) 256

Page 99: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

99

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

o Ejemplos

Llamando a la función “cuadrado” con variables

(define x 3)(define y 4)

(+ (cuadrado x) (cuadrado y)

) 25

Page 100: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

100

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

o Ejemplos

Uso de "cuadrado" para definir otra función

(define (suma-de-cuadrados x y)(+

(cuadrado x) (cuadrado y)

))

(suma-de-cuadrados 3 4) 25

Page 101: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

101

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

o Ejemplos

Uso de "suma-de-cuadrados" para definir otra función:

(define (f z) (suma-de-cuadrados (* z 2) (/ z 2))

)

(f (* 2 5)) 425

Page 102: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

102

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

• Evaluación mediante el modelo de sustitución

• Definiciones internas y estructuras de bloque

Page 103: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

103

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Modelos

Evaluación según el orden de aplicación (applicative-order evaluation).

Evaluación según el orden normal(normal-order evaluation).

Page 104: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

104

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden de aplicación: pasos

Evalúa los argumentos y después aplica la función

1. Se evalúan los valores de los argumentos (en un orden no determinado).

2. Se aplica la función a los valores de los argumentos.

Page 105: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

105

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden de aplicación: ejemplo (1/3)

Evaluación de (f (* 2 5))

1. Evaluación del valor de z: 10

2. Aplicación de f a 10(suma-de-cuadrados (* 10 2) (/ 10 2))

3. Evaluación de los parámetros de suma-de-cuadrados (en un orden no determinado)(suma-de-cuadrados 20 5)

Page 106: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

106

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden de aplicación: ejemplo (2/3)

Evaluación de (f (* 2 5))

4. Aplicación del suma-de-cuadrados a los parámetros 20 y 5(+ (cuadrado 20) (cuadrado 5))

5. Aplicación de la función “cuadrado” a sus argumentos

(+ (* 20 20) (* 5 5)…

Page 107: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

107

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden de aplicación: ejemplo (3/3)

Evaluación de (f 10)

6. Evaluación de las expresiones

(+ 400 25)

425

Page 108: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

108

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden de aplicación

Observaciones

Este modelo permite comprender cómo se aplica una función.

Se utiliza un contexto o ámbito local para la evaluación de los parámetros formales.

Page 109: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

109

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden normal: pasos

Se expande completamente y después se reduce

1. Se sustituye cada función o argumento por expresiones cada vez más simples.

Se obtiene una expresión compuesta exclusivamente por operadores primitivos

2. Se evalúa la expresión con los operadores primitivos.

Page 110: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

110

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden normal: ejemplo

Evaluación de (f (* 2 5))

1. Sustitución de f y z(suma-de-cuadrados (* (* 2 5) 2) (/ (* 2 5) 2))

2. Sustitución de “suma-de-cuadrados”(+ (cuadrado (* (* 2 5) 2)) (cuadrado (/ (* 2 5) 2))

3. Sustitución de “cuadrado”(+

(* (* (* 2 5) 2) (* (* 2 5) 2)) (* (/ (* 2 5) 2) (/ (* 2 5) 2))

)

Page 111: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

111

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Evaluación en el orden normal: ejemplo

Evaluación de (f (* 2 5))4. Evaluación de las expresiones

(+ (* (* (10 2) (* 10 2)) (* (/ 10 2) (/ 10 2))

)

(+ (* 20 20) (* 5 5))

(+ 400 25)

425

Page 112: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

112

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Comparación del orden normal y el orden aplicativo

El proceso es diferente pero el resultado es el mismo

El “orden normal”

Es más ineficiente, porque realiza más operaciones

Por ejemplo: evalúa cuatro veces la expresión (* 2 5)

Necesita más recursos de memoria

Page 113: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

113

3. Funciones o procedimientos definidos por el programador

• Evaluación mediante el método de sustitución

o Variantes de la evaluación en orden normal

Evaluación retardada (delayed evaluation)

Es útil si se manejan “estructuras infinitas de datos”

Evaluación de llamada por necesidad (call byneed evaluation)

Impide evaluaciones múltiples que surgen en la evaluación en orden normal estricta.

Page 114: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

114

3. Funciones o procedimientos definidos por el programador

• Definición de funciones o procedimientos

• Evaluación mediante el modelo de sustitución

• Definiciones internas y estructuras de bloque

Page 115: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

115

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Regla de anidamiento más cercano Si un identificador aparece en una función

entonces su significado se determina

1. Comprobando si es una variable local o función interna

2. O si es un parámetro formal

3. O buscando en el contexto léxico más próximo que engloba a la función.

Page 116: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

116

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Ejemplo 1

(define (prueba x)

(* 2 x)

)

(prueba 3) 6

Page 117: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

117

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Ejemplo 2

(define (prueba x)

(define x 9)

(* 2 x)

)

(prueba 3) 18

Page 118: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

118

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Ejemplo 3

(define (area radio)(define pi (/ 355.0 113.0))

(* pi radio radio))(area 1) 3.1415929203539825

Page 119: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

119

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Ejemplo 4

(define pi (/ 355.0 113.0))

(define (area radio)(* pi radio radio)

)(area 1) 3.1415929203539825

Page 120: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

120

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Funciones anidadas

Una función también puede incluir ladefinición de otras funciones internas oauxiliares.

Las funciones internas o auxiliares sólo sonaccesibles dentro del contexto en el que hansido definidas.

Page 121: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

121

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Funciones anidadas

Ejemplo 5(define (hipotenusa cateto1 cateto2)

(define (cuadrado x) (* x x))(sqrt (+

(cuadrado cateto1) (cuadrado cateto2))

))(hipotenusa 3 4) 5(cuadrado 2) Error

Page 122: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

122

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Funciones no anidadas

Ejemplo 6(define (cuadrado x) (* x x))(define (hipotenusa cateto1 cateto2)

(sqrt (+ (cuadrado cateto1) (cuadrado cateto2))

))(hipotenusa 3 4) 5(cuadrado 2) 4

Page 123: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

123

3. Funciones o procedimientos definidos por el programador

• Definiciones internas y estructuras de bloque

o Contexto o ámbito léxico de una función

Funciones anidadas

Ejemplo 7(define (volumen radio)

;; variable local(define pi (/ 355.0 113.0));; función auxiliar(define (cubo x) (* x x x));;(/ (* 4 pi (cubo radio)) 3)

)

(volumen 1) 4.18879056047198

Page 124: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

124

Programación Declarativa Tema 2.- Expresiones y funciones

Índice

1. Elementos básicos de Scheme

2. Expresiones

3. Funciones o procedimientos definidos por el programador

4. Procedimientos anónimos: la forma especial “lambda”

5. Definición de variables locales: la forma especial “let”

Page 125: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

125

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Permite crear una función sin nombre

o Utilidad

Funciones auxiliares temporales

Evita definir funciones que nunca seránutilizadas fuera del contexto en el que hansido declaradas.

Funciones con parámetros opcionales

Nota: se explicará más adelante

Page 126: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

126

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Sintaxis(lambda (<argumentos>) <cuerpo>)

donde <argumentos>parámetros de la función

<cuerpo>declaración de variablesdeclaración de funciones internasuna o más expresiones

Page 127: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

127

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Equivalencia

(define (cubo x) (* x x x)

)

(define cubo (lambda (x) (* x x x))

)

Page 128: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

128

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Ejemplo:

((lambda (x y z)

(* x y (+ 3 z))) 2 3 4

) 42

Page 129: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

129

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Ejemplo(define (volumen radio)

;; variable local(define pi (/ 355.0 113.0));;(/

(* 4.0pi ((lambda (x) (* x x x)) radio) )

3.0)

)(volumen 1) 4.18879056047198

Page 130: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

130

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Ejemplo

No es obligatorio el uso de lambda(define (volumen radio)

;; variable local(define pi (/ 355.0 113.0));;(/

(* 4pi (* radio radio radio) )

3))

Page 131: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

131

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Se recomienda el uso de lambda si un parámetroestá asociado a una expresión compleja que se repite muchas veces.

Page 132: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

132

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Ejemplo

(define (volumen circunferencia)(define pi (/ 355.0 113.0))

(/ (* 4

pi ((lambda (x) (* x x x))

(/ circunferencia 2 pi))

) 3

))

Page 133: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

133

4. Procedimientos anónimos: la forma especial “lambda”

• Descripción

o Ejemplo: variable local que calcula el radio(define (volumen circunferencia)

(define pi (/ 355.0 113.0))(define radio (/ circunferencia 2 pi))

(/ (* 4

pi ((lambda (x) (* x x x))

radio)

) 3

))

Page 134: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

134

Programación Declarativa Tema 2.- Expresiones y funciones

Índice

1. Elementos básicos de Scheme

2. Expresiones

3. Funciones o procedimientos definidos por el programador

4. Procedimientos anónimos: la forma especial “lambda”

5. Definición de variables locales: la forma especial “let”

Page 135: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

135

5. Definición de variables locales: la forma especial “let”

• Introducción

• Descripción

• Comparación entre “let” y “define”

• Forma especial “let*”

Page 136: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

136

5. Definición de variables locales: la forma especial “let”

• Introducción

• Descripción

• Comparación entre “let” y “define”

• Forma especial “let*”

Page 137: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

137

5. Definición de variables locales: la forma especial “let”

• Introducción

o La forma especial lambda también se utiliza para definir variables locales.

o A menudo, las funciones necesitan variables distintas de las que han sido enlazadas como parámetros formales.

Page 138: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

138

5. Definición de variables locales: la forma especial “let”

• Introducción

o Ejemplo (1/5)

Uso de “la fórmula de Herón” para calcular el área de un triángulo.

donde a, b y c: lados del triángulo s: semi-perímetro = (a + b + c) / 2

csbsassárea )

Page 139: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

139

5. Definición de variables locales: la forma especial “let”

• Introducción

o Ejemplo (2/5)

Primera versión: variable local creada con define

(define (Heron a b c);; variable local: semi-perímetro(define s (/ (+ a b c) 2.0));;(sqrt (* s (- s a) (- s b) (- s c)))

)

Page 140: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

140

5. Definición de variables locales: la forma especial “let”

• Introducción

o Ejemplo (3/5)

Segunda versión: función auxiliar

(define (Heron a b c);; función auxiliar(define (auxiliar s)

(sqrt (* s (- s a) (- s b) (- s c)));; llamada a la función auxiliar(auxiliar (/ (+ a b c) 2.0)

)

Page 141: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

141

5. Definición de variables locales: la forma especial “let”

• Introducción

o Ejemplo (4/5)

Tercera versión: función anónima (lambda)

(define (Heron a b c)( (lambda (s)

(sqrt (* s (- s a) (- s b) (- s c)))(/ (+ a b c) 2.0)

))

Page 142: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

142

5. Definición de variables locales: la forma especial “let”

• Introducción

o Ejemplo (5/5)

Cuarta versión: forma especial “let”

(define (Heron a b c)(let ;; variable local de let

( (s (/ (+ a b c) 2.0))

);; cuerpo de let(sqrt (* s (- s a) (- s b) (- s c)))

))

Page 143: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

143

5. Definición de variables locales: la forma especial “let”

• Introducción

• Descripción

• Comparación entre “let” y “define”

• Forma especial “let*”

Page 144: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

144

5. Definición de variables locales: la forma especial “let”

• Descripción

o Forma especial let

Constructor de enlace de variables que extiende el contexto léxico actual.

Permite la definición de variables locales

Permite evaluar expresiones en un ámbito léxico específico.

Page 145: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

145

5. Definición de variables locales: la forma especial “let”

• Descripción

o Sintaxis

(let ;; zona de variables locales

(

(<variable1> <expresión1>)

(<variable2> <expresión2>)...

(<variablen> <expresiónn>));; cuerpo de let<cuerpo>

)

Page 146: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

146

5. Definición de variables locales: la forma especial “let”

• Descripción

o Semántica

Paso 1: se evalúan las expresiones en un orden no determinado (“evaluación en paralelo”)

El ámbito de cada variable local secircunscribe al cuerpo de let y, por tanto, noincluye a las expresiones que asociadas a lasvariables.

Paso 2: el valor de cada expresión se asigna a la variable correspondiente.

Paso 3: evalúa el cuerpo en el contexto extendido que incluye las variables de let.

Page 147: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

147

5. Definición de variables locales: la forma especial “let”

• Descripción

o Sintaxis

(let ;; zona de variables locales

(

(<variable1> <expresión1>)

(<variable2> <expresión2>)...

(<variablen> <expresiónn>));; cuerpo de let<cuerpo>

)

Page 148: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

148

5. Definición de variables locales: la forma especial “let”

• Descripción

o Forma especial de “lambda” equivalente a “let”

( (lambda (<variable1> < variable2> ... <variablen>)

<cuerpo>)

<expresión1><expresión2>...<expresiónn>

)

Page 149: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

149

5. Definición de variables locales: la forma especial “let”

• Descripción

o Ejemplo (1/5)

Se desea computar la función

f(x, y)= x (1 + x y)2 + y (1 - y) + (1 + x y) (1 - y)

Se utilizará dos variables locales: a y b.a = 1 + x y b = 1 – y

quedando f(x,y) = x a2 + y b + a b

Page 150: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

150

5. Definición de variables locales: la forma especial “let”

• Descripción

o Ejemplo (2/5)

Primera versión: uso de “define”(define (f x y)

;; variables locales(define a (+ 1 (* x y)))(define b (- 1 y));;(+

(* x (square a))(* y b)(* a b)

))

Page 151: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

151

5. Definición de variables locales: la forma especial “let”

• Descripción

o Ejemplo (3/5)

Segunda versión: función auxiliar(define (f x y)

;; función local(define (auxiliar a b)(+ (* x (square a))

(* y b)(* a b)

));; llamada a la función local(auxiliar (+ 1 (* x y)) (- 1 y))

)

Page 152: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

152

5. Definición de variables locales: la forma especial “let”

• Descripción

o Ejemplo (4/5)

Tercera versión: uso de lambda(define (f x y)

( (lambda (a b)(+

(* x (square a))(* y b)(* a b)

))(+ 1 (* x y)) (- 1 y))

)

Page 153: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

153

5. Definición de variables locales: la forma especial “let”

• Descripción

o Ejemplo (5/5)

Cuarta versión: uso de let(define (f x y)

(let ( (a (+ 1 (* x y)) ) (b (- 1 y) )

)(+ (* x (square a))

(* y b)(* a b)

))

)

Page 154: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

154

5. Definición de variables locales: la forma especial “let”

• Introducción

• Descripción

• Comparación entre “let” y “define”

• Forma especial “let*”

Page 155: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

155

5. Definición de variables locales: la forma especial “let”

• Comparación entre “let” y “define”

1. Ámbito de las variables

El ámbito creado por define abarca todo el contexto en el que puede ser ejecutado.

let (lambda) crea un ámbito específico para las variables locales El ámbito de una variable declarada con let

es el cuerpo de let. let permite construir expresiones que

enlazan variables tan localmente como sea posible.

Page 156: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

156

5. Definición de variables locales: la forma especial “let”

• Comparación entre “let” y “define”

o Ejemplo

Supóngase que x (externa) tiene el valor 5 y que se evalúa la siguiente expresión(+ ;; primer sumando = 33

(let ((x 3))(+ x (* x 10))

);; segundo sumando = 5

x) 38

Page 157: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

157

5. Definición de variables locales: la forma especial “let”

• Comparación entre “let” y “define”

2. Asignación de valores iniciales define Realiza una evaluación secuencial de las

expresiones de las variables Una expresión asociada a una variable

puede usar los valores de las variables anteriores

let Evalúa en paralelo (o no determinado) las

expresiones de las variables Una expresión de una variable no puede usar

los valores de las variables anteriores.

Page 158: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

158

5. Definición de variables locales: la forma especial “let”

• Comparación entre “let” y “define”

o Ejemplo (1/2) En un contexto externo, “x” vale 2 Se evalúa la siguiente expresión

(let;; variables locales( (x 3)(y (+ x 2)) ;; “y” toma el valor 4

);; cuerpo de let(* x y)

) 12

Page 159: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

159

5. Definición de variables locales: la forma especial “let”

• Comparación entre “let” y “define”

o Ejemplo (2/2) Por el contrario, la siguiente secuencia

(define x 3)(define y (+ x 2))

;;(* x y)

15

Page 160: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

160

5. Definición de variables locales: la forma especial “let”

• Introducción

• Descripción

• Comparación entre “let” y “define”

• Forma especial “let*”

Page 161: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

161

5. Definición de variables locales: la forma especial “let”

• Forma especial “let*”o Descripción Variante de la forma especial let que sí permite

evaluar las variables locales de forma secuencial o consecutiva.

o Reglas de contexto El ámbito de cada variable local se extiende

desde su inicialización hasta el cuerpo de let*. Por tanto, la evaluación de la segunda variable se

realiza en un contexto en el cual la primera variable enlace es visible,

y así sucesivamente.

Page 162: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

162

5. Definición de variables locales: la forma especial “let”

• Forma especial “let*”

o Ejemplo

(let* ( (x 3)(y (+ x 2))

);;(* x y)

) 15

Page 163: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

163

5. Definición de variables locales: la forma especial “let”

• Forma especial “let*”

o Sintaxis: similar a la de let

(let* ;; zona de variables locales

(

(<variable1> <expresión1>)

(<variable2> <expresión2>)...

(<variablen> <expresiónn>));; cuerpo de let*<cuerpo>

)

Page 164: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

164

5. Definición de variables locales: la forma especial “let”

• Forma especial “let*”o Ejemplo: let y let* (1/2)

(let ( ;; variables locales de let(x 2)(y 3)

);; cuerpo de let(let* (;; variables locales de let*

(x 7)(z (+ x y)));; cuerpo de let*(* z x)

)) 70

Page 165: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

165

5. Definición de variables locales: la forma especial “let”

• Forma especial “let*”o Ejemplo: let y let* (2/2)

(let ( ;; variables locales de let(x 2)(y 3)

);; cuerpo de let(let* (;; variables locales de let*

(z (+ x y))(x 7));; cuerpo de let*(* z x)

)) 35

Page 166: UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR …ma1fegan/2014-2015/pd/temas/Tema-2/PD... · ampliaciones del lenguaje. 26 1. Elementos básicos de Scheme ... • Identificadores

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

ESPECIALIDAD DE COMPUTACIÓN

CUARTO CURSO

PRIMER CUATRIMESTRE

Tema 2.- Expresiones y funciones

UNIVERSIDAD DE CÓRDOBA

ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA

DEPARTAMENTO DEINFORMÁTICA Y ANÁLISIS NUMÉRICO