matematica

Páginas: 21 (5161 palabras) Publicado: 2 de mayo de 2013
II PROGRAMACIÓN EN Scheme
En este apartado vamos a ver como se pueden escribir programas funcionales en Scheme empleando
los conceptos de programación funcional.
II.1 Sintaxis básica
En primer lugar veremos como se representan los datos (las S-expresiones) para luego pasar a la
definición de funciones.
SÍMBOLOS: ÁTOMOS Y NÚMEROS
En Scheme los átomos se denominan símbolos.
• Estos seforman por caracteres distintos de: ( ) []{}; , " ' ` # \
• Además + - . no pueden aparecer al principio de un símbolo.
Ejemplos de símbolos válidos: abcd r cdr p2q4 errores? uno-dos *ahora&
INTERPRETACIÓN y NÚMEROS
Los números en Scheme se consideran una categoría aparte. Así para evaluar un número basta con
introducir a la entrada: (el número entre corchetes es el prompt de Scheme)
[1] 7
7[2]
Esto se debe a que el intérprete de Scheme sigue un ciclo entrada-evaluación-salida que evalúa cada
entrada del usuario. De forma que cada entrada puede considerarse un programa.
DEFINICIONES Y LITERALES
A la hora de evaluar una cadena "siete" es necesario asignarle una definición previa.
Las definiciones se realizan en Scheme a través de la expresión define:
(define identificador valor)(NO LO EMPLEAREMOS CON ESTE USO)
Pero esta es una característica de programación procedural y no la emplearemos. Sin embargo si lo
que queremos escribir la cadena como un símbolo constante (es decir que no se evalúe) debemos emplear
la función quote:
(quote siete) ó 'siete
Así podremos introducir:
[2] 'siete
siete
[3]
EXPRESIONES ARITMÉTICAS
Las operaciones aritméticas se consideran untipo más de función y se expresan en notación prefija:
(+ 1 2) 1 + 2
(* 3 (+ 4
5))
3*(4
+5)
2
así desde Scheme:
[3] (* 3 (+ 4 5))
27
[4]
LISTAS
En Scheme una lista se denota por una colección de elementos encerrados entre paréntesis y separados
por espacios en blanco. en concreto la lista vacía se representa por ( ).
Scheme proporciona la función cons como constructora de listas,permitiendo añadir un elemento de
cada vez. Su sintaxis es la siguiente:
(cons primerelem ListaResto)
Ejemplos:
[4] (cons 1 '( ) )
( 1 )
[5] (cons 2 '( 1 ) )
( 2 1 )
[6] (cons 'tres '( 2 1 ) )
( tres 2 1 )
[7] (cons '( 2 1) '( tres 2 1) )
( ( 2 1) tres 2 1)
[8]
Anidamiento
La última lista presenta a su vez la lista ( 2 1 ) anidada. Los elementos de una lista son aquellos que no
aparecenanidados dentro de otra, así:
( ( a b ( c d ) ) e ( f g ) h )
tiene 4 elementos : ( a b ( c d ) ), e, ( f g ) y h.
Composición
La generación de una lista completa se puede conseguir a través de cons junto con la composición
funcional.
Ejemplo: Para generar ( 2 1 ) podemos hacer (cons 2 (cons 1 '( ) ) )
Evaluación de listas (funciones como listas)
Al introducir y usar la lista vacía esnecesario emplear '( ) esto se debe a que Scheme al encontrarse
con una lista interpreta siempre el primer elemento como una función.
Así:
[8] ( 1 2 )
Error símbolo 1 no definido
[9]
El apóstrofe indica que todos los elementos dentro de la lista se deben interpretar como literales.
[9] '( ( 2 1 ) tres 2 1 )
( ( 2 1 ) tres 2 1)
[10]
3
NOTA: En el ejemplo anterior tres no necesita apóstrofeal pertenecer a la lista que a su vez está bajo
el efecto del apóstrofe externo.
Otro ejemplo:
[10] (cons '( a b ) '( c ( d e ) ) )
( ( a b ) c ( d e ) )
Funciones adicionales de Scheme para estructuras
• ( cXXXXr lista ) ,, donde cada "X" puede ser : a (car), d (cdr) ó no aparecer.
Ejemplo:
(cadadr '( 1 ( ( 2 3 ) 4 ) ) ) ≡ (car (cdr (car (cdr '(1((2 3)4))
)))
devolvería 4
• Aparte de:atom?, null?, list? y pair?, Scheme distingue dos tipos de átomos:
Numéricos: (number? n) devuelve #t si n es un número.
Simbólicos: (symbol? n) devuelve #t si n es un símbolo.
Ejemplos:
(number? -4.6) →
#t
(symbol? -4.6) →
#f
(number? '3) → #t (symbol? '3) → #f
(number? 'doce) →
#f
(symbol? 'doce) →
#t
(number? #t) → #f (symbol? #t) → #f
• (boolean? n) devuelve #t si n es un valor...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Matematica
  • Matematica
  • Matematicas
  • Las matemáticas
  • Matematica
  • Matematicas
  • Matematica
  • Matematicas

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS