Sei sulla pagina 1di 3

Taller 3: Funciones como ciudadanos de primera clase y abstracción -

Fundamentos de Programación
*
Carlos Andres Delgado S, Msc
01 de Septiembre de 2019
Reglas del taller
1. Este taller puede ser trabajado en grupos de hasta 3 personas.

2. El taller debe ser entregado el Viernes, 20 de Septiembre de 2019 13:59:59 hora de Colombia, por el
campus virtual. Se permiten entregas atrasadas con una sanción acumulativa de 15 % por hora o fracción.
Por ejemplo, si entrega a las 14:00:01 se aplicará el retraso por una hora, si entrega a las 15:00:01 se le
aplicará una sanción del 30 % y ası́ sucesivamente. Por esta razón, entregue lo suficiente antes del plazo
para evitar sanciones.

3. Debe entregar el código fuente organizado en carpetas dentro del primer nivel del archivo comprimido, no
cree una jerarquı́a compleja difı́cil de revisar. El no cumplimiento de esta regla traerá sanciones a su nota.
4. No se permite copiar código de Internet ni de sus compañeros. Si se encuentra código copiado el taller
será anulado por completo.

5. Entregue un sólo archivo comprimido. No entregue archivos comprimidos dentro de archivos comprimidos,
ya que esto dificulta la revisión enormemente. El no cumplimiento de esta regla traerá sanciones a su nota.
6. No insertar comentarios en caja ni pegar imágenes, para que el archivo se guarde en formato de texto. Esto
se debe a que el docente usa scripts para pruebas automáticas, no cumplir este punto traerá sanciones a
su nota.

7. Las primeras lı́neas de cada archivo de código fuente, deben tener los integrantes del grupo con sus nombres
y código completos. El no cumplimiento de esta regla traerá sanciones a su nota.

1. Problemas del taller


En este taller debe utilizar los conceptos vistos en abstracción funcional, de datos y local para diseñar las
funciones. El uso de estas estrategias es parte de la nota de las funciones que diseñe, no basta con que cumplan
lo solicitado. En caso de que no use la abstracción en los puntos estos se sancionarán con 60 % de su nota.

1. [25 puntos] Diseñe un filtro que recibe una lista de una estructura llamada mascota, la cual tiene los
siguientes campos:
Nombre: Sı́mbolo
Edad: Número
Color ojos: Sı́mbolo
Tipo: Estructura tipo
Dentro de la estructura tipo se tiene:
* carlos.andres.delgado@correounivalle.edu.co

1
Especie: Sı́mbolo
Número de patas: Número
Número de dientes: Número
Diseñe una función llamada filtrar-mascota la cual recibe una lista de mascotas y una función. Esta
función retorna todos los elementos en que la función de entrada es cierta. Muestre ejemplos para:
Retorna la lista de mascotas con un nombre dado (usted indica cual)
Retorna la lista de mascotas con una edad mayor a la que usted indique
Retorna la lista de mascotas de una especie dada
Retorna la lista de mascotas que tiene un número menor de dientes al que usted indica
Retorna la lista de mascotas tiene un color de ojos dado y un número de patas dado.
2. [25 puntos] Diseñe una función calcular-serieF la cual recibe un número natural positivo y una función.
Esta permite calcular los n términos de la serie de Fibunnacci la cual tiene la siguiente estructura:
 
 1 si n=0 
f (n) = 1 si n=1
f (n − 1) + f (n − 2) en otro caso
 

A cada elemento de la serie de fibunnacci se le aplica la función.Ejemplo:


( c a l c u l a r − s e r i e F 5 ( lambda ( x ) x ) )
;; Retorna ( list 1 1 2 3 5 8)
( c a l c u l a r − s e r i e F 5 ( lambda ( x ) s q r ( x ) ) )
;; Retorna ( list 1 1 4 9 25 64)

3. [25 puntos] Vamos a realizar ordenamiento personalizado, por ejemplo ordenar primero los pares y luego
los impares o bien primero los múltiplos de 3. Diseñe la función ordenamiento-personalizado la cual
recibe una lista de números y una función predicado que indica cómo es el ordenamiento. Ejemplo:
( o r d e n a m i e n t o − p e r s o n a l i z a d o ( list 1 2 3 4 ) ( lambda ( x y ) ( i f ( odd ? x ) x y ) ) )
;; Retorna ( list 1 3 2 4)

Dado que la función predicado funciona como un filtro (elimina los que no cumplen) debe pensar en una
estrategia para no perder información.
4. [25 puntos] La función exponencial se puede calcular mediante un método denominado la serie de Taylor,
el cual consiste en una suma infinita de términos ası́:
x x2 x3 xn
ex = 1 + + + + ... + (1)
1! 2! 3! n!
Ası́ por ejemplo podemos calcular e2 expandiendo 5 términos de la serie, tomando en cuenta que el primero
cuenta como el término 0.
2 22 23 24 25
ex = 1 + + + + + = 7,26666 (2)
1! 2! 3! 4! 5!
Siendo el valor real 7.38. Como se puede observar entre mayor sea el n, más cercano es el valor real.
Diseñe una función calcular-exponencial-taylor que reciba el x y el n para calcular ex esta función
debe retornar el calculo acumulado entre 0 y n. Tomando el ejemplo anterior
( calcular−exponencial−taylor 2 5)
;; Retorna ( list 1 3 5 6.3333 7 7.266666)

Dado que se cuenta desde 0, la lista va tener n + 1 elementos. Como puede observar:

El primero de la lista es 1

2
x
El segundo de la lista es 1 + 1!
x x2
El tercero de la lista es 1 + 1! + 2!
x x2 x3
El cuarto de la lista es 1 + 1! + 2! + 3!
x x2 x3 x4
El quinto de la lista es: 1 + 1! + 2! + 3! + 4!
x x2 x3 x4 x5
Finalmente, el sexto elemento es: 1 + 1! + 2! + 3! + 4! + 5!

Nota: Debe utilizar una función recursiva auxiliar definida en un local para calcular el factorial.

Potrebbero piacerti anche