⚡ Funciones
Las funciones son como los electrodomésticos de tu cocina: cada uno hace una tarea específica que puedes usar muchas veces. El microondas calienta, la licuadora mezcla, la tostadora tuesta. En programación, las funciones son bloques de código reutilizables que hacen tareas específicas.
¿Qué son las Funciones?
Imagina que cada vez que quieras calentar algo, tuvieras que conectar cables, ajustar resistencias, controlar temperatura... imposible. Por eso existen electrodomésticos: pones la comida, presionas un botón, y listo.
Las funciones son lo mismo: encapsulan código que usarás muchas veces.
// Sin funciones: repetimos código
mostrar "Calentando pizza..." // Calentando pizza...
mostrar "Tiempo: 2 minutos" // Tiempo: 2 minutos
mostrar "Listo!" // Listo!
mostrar "Calentando sopa..." // Calentando sopa...
mostrar "Tiempo: 3 minutos" // Tiempo: 3 minutos
mostrar "Listo!" // Listo!
// Con funciones: código reutilizable
funcion calentar(comida, minutos) {
mostrar "Calentando " + comida + "..."
mostrar "Tiempo: " + minutos + " minutos"
mostrar "Listo!"
}
calentar("pizza", 2) // Calentando pizza... / Tiempo: 2 minutos / Listo!
calentar("sopa", 3) // Calentando sopa... / Tiempo: 3 minutos / Listo!- Sin funciones: repites el mismo código una y otra vez
- Con funciones: escribes el código una vez y lo usas múltiples veces
- Las funciones tienen un nombre descriptivo (calentar, mezclar, tostar)
- Puedes 'llamar' (usar) la función cuantas veces quieras
- Las funciones hacen tu código más limpio, organizado y fácil de mantener
Declaración de Funciones
Para crear una función usas la palabra 'funcion', le das un nombre, y defines qué hace entre llaves.
funcion nombreFuncion() ... código ...funcion tostarPan() {
mostrar "Tostando pan..."
mostrar "Temperatura: Alta"
mostrar "Tiempo: 3 minutos"
mostrar "¡Pan tostado listo!"
}
// Llamamos la función
tostarPan() // Tostando pan... / Temperatura: Alta / Tiempo: 3 minutos / ¡Pan tostado listo!
funcion licuarFrutas() {
mostrar "Licuando frutas..."
mostrar "Velocidad: Máxima"
mostrar "¡Smoothie listo!"
}
// Podemos llamarla múltiples veces
licuarFrutas() // Licuando frutas... / Velocidad: Máxima / ¡Smoothie listo!
licuarFrutas() // Licuando frutas... / Velocidad: Máxima / ¡Smoothie listo!- Declaración: funcion nombreFuncion() con bloque de código
- El nombre debe ser descriptivo (tostar, calentar, mezclar)
- Las llaves contienen el código que se ejecutará
- Para usar la función: nombreFuncion() (se llama 'llamar la función')
- Los paréntesis () son obligatorios, incluso si están vacíos
Funciones con Parámetros
El microondas tiene configuración: tiempo, potencia. La tostadora tiene nivel de tostado. Los parámetros son esas configuraciones que le das a la función.
funcion nombreFuncion(parametro1, parametro2) ... código ...funcion calentar(comida, minutos, potencia) {
mostrar "Calentando " + comida
mostrar "Tiempo: " + minutos + " minutos"
mostrar "Potencia: " + potencia
mostrar "¡Listo!"
}
calentar("pizza", 2, "Alta") // Calentando pizza / Tiempo: 2 minutos / Potencia: Alta / ¡Listo!
calentar("leche", 1, "Media") // Calentando leche / Tiempo: 1 minutos / Potencia: Media / ¡Listo!
calentar("arroz", 5, "Alta") // Calentando arroz / Tiempo: 5 minutos / Potencia: Alta / ¡Listo!
funcion tostar(alimento, nivel) {
mostrar "Tostando " + alimento
mostrar "Nivel: " + nivel
mostrar "¡Tostado perfecto!"
}
tostar("pan", 3) // Tostando pan / Nivel: 3 / ¡Tostado perfecto!
tostar("bagel", 5) // Tostando bagel / Nivel: 5 / ¡Tostado perfecto!- Parámetros = configuración del electrodoméstico
- Van entre paréntesis, separados por comas: (tiempo, potencia)
- Al llamar la función, pasas los valores: calentar('pizza', 2, 'Alta')
- El ORDEN importa: primer parámetro = primer valor
- Puedes tener 0, 1, 2 o más parámetros según necesites
Retornar Valores
Cuando usas la licuadora, no solo hace ruido: te da un smoothie. Las funciones pueden 'retornar' (devolver) un resultado.
retornar valorfuncion calcularTiempoMicroondas(gramos) {
variable minutos = gramos / 100
retornar minutos
}
variable tiempo1 = calcularTiempoMicroondas(500)
mostrar "Para 500g necesitas: " + tiempo1 + " minutos" // Para 500g necesitas: 5 minutos
variable tiempo2 = calcularTiempoMicroondas(300)
mostrar "Para 300g necesitas: " + tiempo2 + " minutos" // Para 300g necesitas: 3 minutos
funcion licuar(fruta1, fruta2) {
variable smoothie = fruta1 + " con " + fruta2
retornar smoothie
}
variable bebida = licuar("frutilla", "banana")
mostrar "Tu smoothie: " + bebida // Tu smoothie: frutilla con banana
variable otraBebida = licuar("mango", "naranja")
mostrar "Tu smoothie: " + otraBebida // Tu smoothie: mango con naranja- 'retornar' devuelve un valor desde la función
- Puedes guardar el resultado en una variable
- Puedes usar el resultado directamente en operaciones
- 'retornar' termina la función inmediatamente
- El código después de 'retornar' no se ejecuta
Funciones sin y con Retorno
Algunos electrodomésticos solo hacen su trabajo (lavaplatos lava, pero no te da nada). Otros te dan un resultado (licuadora te da smoothie, cafetera te da café).
// Función SIN retorno: solo hace algo
funcion lavarPlatos(cantidad) {
mostrar "Lavando " + cantidad + " platos..."
mostrar "Ciclo: Normal"
mostrar "¡Platos limpios!"
}
lavarPlatos(10) // Lavando 10 platos... / Ciclo: Normal / ¡Platos limpios!
// Función CON retorno: te da algo
funcion hacerCafe(tipo) {
variable cafe = "Café " + tipo + " listo"
retornar cafe
}
variable miCafe = hacerCafe("Americano")
mostrar miCafe // Café Americano listo
variable tuCafe = hacerCafe("Cappuccino")
mostrar tuCafe // Café Cappuccino listo
// Puedes usar el retorno en cálculos
funcion calcularCalorias(porcion) {
variable calorias = porcion * 150
retornar calorias
}
variable totalCalorias = calcularCalorias(2) + calcularCalorias(3)
mostrar "Total de calorías: " + totalCalorias // Total de calorías: 750- Función sin retorno: hace una acción (mostrar, modificar)
- Función con retorno: produce un resultado que puedes usar
- Sin retorno: solo llamas lavarPlatos(10)
- Con retorno: guardas en variable → variable x = hacerCafe('Latte')
- Puedes usar el retorno en cálculos: calcularCalorias(2) + calcularCalorias(3)
Ámbito (Scope)
Lo que pasa dentro del microondas se queda dentro del microondas. Las variables creadas dentro de una función solo existen ahí dentro.
variable temperaturaExterna = 25
funcion calentar(comida) {
variable temperaturaInterna = 100 // Solo existe aquí
mostrar "Dentro del microondas: " + temperaturaInterna + "°C"
mostrar "Temperatura externa: " + temperaturaExterna + "°C"
mostrar "Calentando: " + comida
}
calentar("sopa") // Dentro del microondas: 100°C / Temperatura externa: 25°C / Calentando: sopa
mostrar "Afuera: " + temperaturaExterna + "°C" // Afuera: 25°C
funcion cocinar() {
variable platoPrincipal = "Pasta" // Solo existe aquí
mostrar "Cocinando: " + platoPrincipal
}
cocinar() // Cocinando: Pasta- Variables DENTRO de función = locales (solo existen dentro)
- Variables FUERA de función = globales (se ven en todas partes)
- Función puede usar variables globales
- Variables locales NO pueden usarse fuera de la función
- Ejemplo: temperaturaInterna solo existe dentro de calentar()
Funciones que Llaman a Otras Funciones
A veces una receta usa varios electrodomésticos: primero la licuadora, luego el microondas. Las funciones pueden llamar a otras funciones.
funcion picar(ingrediente) {
mostrar "Picando " + ingrediente // Picando cebolla / Picando zanahoria
retornar ingrediente + " picado"
}
funcion cocinar(ingrediente, minutos) {
mostrar "Cocinando " + ingrediente + " por " + minutos + " minutos"
retornar ingrediente + " cocido"
}
funcion prepararSopa() {
variable cebolla = picar("cebolla")
variable zanahoria = picar("zanahoria")
mostrar "Agregando agua y sal" // Agregando agua y sal
variable resultado = cocinar("sopa", 10) // Cocinando sopa por 10 minutos
retornar resultado
}
variable sopa = prepararSopa()
mostrar "Resultado: " + sopa // Resultado: sopa cocido
funcion calcularPorciones(personas) {
retornar personas * 250
}
funcion cocinarArroz(personas) {
variable gramos = calcularPorciones(personas)
mostrar "Cocinando " + gramos + "g de arroz" // Cocinando 1000g de arroz
retornar "Arroz para " + personas + " personas"
}
variable plato = cocinarArroz(4)
mostrar plato // Arroz para 4 personas- Las funciones pueden llamar a otras funciones
- Esto se llama 'composición' o 'modularidad'
- Cada función hace una tarea específica
- Las combinas para hacer tareas complejas
- Es como usar varios electrodomésticos para una receta completa
- Hace el código más organizado y reutilizable
Consejos y Buenas Prácticas
Recomendaciones para escribir funciones efectivas y mantener tu código limpio.
- Usa nombres descriptivos: calcularPrecio, no cp() o calc()
- Una función = una tarea específica
- Funciones cortas (menos de 20 líneas ideal)
- Si retorna algo, siempre retorna el mismo tipo
- Evita modificar variables globales dentro de funciones
- Documenta funciones complejas con comentarios
- No hagas funciones gigantes que hagan 10 cosas
- No uses nombres genéricos: funcion procesar(), funcion hacer()
- Si tu función hace más de una cosa, divídela en varias