UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR...
Transcript of UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR...
![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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/33.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/34.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/35.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/36.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/37.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/38.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/39.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/40.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/41.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/42.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/43.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/44.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/45.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/46.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/47.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/48.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/49.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/50.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/51.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/52.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/53.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/54.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/55.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/56.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/57.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/58.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/59.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/60.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/61.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/62.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/63.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/64.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/65.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/66.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/67.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/68.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/69.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/70.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/71.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/72.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/73.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/74.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/75.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/76.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/77.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/78.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/79.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/80.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/81.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/82.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/83.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/84.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/85.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/86.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/87.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/88.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/89.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/90.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/91.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/92.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/93.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/94.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/95.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/96.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/97.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/98.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/99.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/100.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/101.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/102.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/103.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/104.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/105.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/106.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/107.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/108.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/109.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/110.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/111.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/112.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/113.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/114.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/115.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/116.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/117.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/118.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/119.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/120.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/121.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/122.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/123.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/124.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/125.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/126.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/127.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/128.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/129.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/130.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/131.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/132.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/133.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/134.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/135.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/136.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/137.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/138.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/139.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/140.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/141.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/142.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/143.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/144.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/145.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/146.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/147.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/148.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/149.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/150.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/151.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/152.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/153.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/154.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/155.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/156.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/157.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/158.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/159.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/160.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/161.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/162.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/163.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/164.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/165.jpg)
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](https://reader033.fdocuments.co/reader033/viewer/2022042207/5ea964e7c4797e4f7928a802/html5/thumbnails/166.jpg)
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