Familias y docentes › Funciones
Guía
Módulo 2: Funciones
La programación funcional enseña a pensar en transformaciones sin efectos secundarios, y la recursión enseña a resolver un problema grande con uno igual pero más pequeño. Son ideas que hoy están en todos los lenguajes.
Duración sugerida: 45 minutos por lección.
Qué se aprende
| Lección | Al terminar, puede… |
|---|---|
| Máquinas que transforman | Definir y usar funciones propias. |
| Listas: trenes de vagones | Construir y recorrer listas. |
| Recursión: muñecas rusas | Escribir una función recursiva con su caso base. |
| map y filter | Usar map y filter con funciones propias. |
| Reto: la biblioteca con funciones | Resolver el problema de la biblioteca con listas y funciones. |
Cómo acompañar
- Para la recursión, dibujen las muñecas en papel: cada llamada, su número y lo que devuelve.
- Pregunten siempre «¿cuál es el caso base?» antes de escribir una función recursiva.
- Lean el código de adentro hacia afuera, como las máquinas de jugo.
A qué estar atentos
- Paréntesis que no cierran: el editor de figuras los pone solos; si escriben código, el mensaje de error dice la línea.
- Recursión sin caso base: el programa avisa que hay demasiadas muñecas.
Soluciones de los retos
Hay muchas soluciones posibles; esta es una. Úsenla para orientar, no para copiar.
Tu primera función: Define una función cuadrado que multiplique un número por sí mismo, y calcula (cuadrado 7).
(define (cuadrado n)
(* n n))
(cuadrado 7)Armar y desarmar trenes: Pon un vagón con el 5 delante del tren: el resultado debe ser (5 1 2 3).
(define tren '(1 2 3))
(cons 5 tren)Factorial con muñecas: Escribe suma-hasta: (suma-hasta 5) es 5 + 4 + 3 + 2 + 1 = 15. No olvides el caso base.
(define (suma-hasta n)
(if (= n 0)
0
(+ n (suma-hasta (- n 1)))))
(suma-hasta 5)Máquinas para trenes enteros: Del tren (1 2 3 4 5), quédate con los impares y elévalos al cuadrado: (1 9 25).
(define (cuadrado n)
(* n n))
(map cuadrado (filter odd? '(1 2 3 4 5)))La biblioteca con funciones: Calcula cuántos libros están disponibles (la respuesta es 2). Pista: length cuenta los vagones.
(define libros '((principito si) (cocori no) (mamita-yunai si)))
(define (disponible? libro)
(equal? (car (cdr libro)) 'si))
(length (filter disponible? libros))