Documentación de HispanoLang

Referencia completa de sintaxis, comandos y características del lenguaje

⚡ 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 valor
funcion 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