Las funciones son bloques de código reutilizables que realizan una tarea específica. En Lua, las funciones son ciudadanos de primera clase, lo que significa que pueden ser almacenadas en variables, pasadas como argumentos y devueltas por otras funciones. En esta sección, aprenderemos cómo definir, llamar y utilizar funciones en Lua.

Definición de Funciones

Para definir una función en Lua, utilizamos la palabra clave function seguida del nombre de la función, una lista de parámetros entre paréntesis y el cuerpo de la función entre end.

function nombreDeLaFuncion(param1, param2)
    -- Cuerpo de la función
    return resultado
end

Ejemplo Práctico

function suma(a, b)
    return a + b
end

print(suma(3, 4))  -- Salida: 7

En este ejemplo, hemos definido una función llamada suma que toma dos parámetros a y b, y devuelve su suma. Luego, llamamos a la función con los argumentos 3 y 4, y mostramos el resultado.

Funciones Anónimas

Las funciones en Lua también pueden ser anónimas, es decir, no tienen un nombre asociado. Estas funciones se pueden asignar a variables o pasar como argumentos a otras funciones.

Ejemplo Práctico

local multiplicar = function(a, b)
    return a * b
end

print(multiplicar(3, 4))  -- Salida: 12

En este ejemplo, hemos asignado una función anónima a la variable multiplicar y luego la hemos llamado con los argumentos 3 y 4.

Funciones como Primeras Clases

Como se mencionó anteriormente, las funciones en Lua son ciudadanos de primera clase. Esto significa que pueden ser manipuladas como cualquier otro valor.

Ejemplo Práctico

function aplicarOperacion(a, b, operacion)
    return operacion(a, b)
end

local suma = function(a, b)
    return a + b
end

local resultado = aplicarOperacion(5, 7, suma)
print(resultado)  -- Salida: 12

En este ejemplo, hemos definido una función aplicarOperacion que toma dos números y una función de operación como argumentos. Luego, hemos definido una función suma y la hemos pasado como argumento a aplicarOperacion.

Funciones Recursivas

Las funciones en Lua pueden ser recursivas, es decir, pueden llamarse a sí mismas. Esto es útil para resolver problemas que pueden dividirse en subproblemas más pequeños.

Ejemplo Práctico

function factorial(n)
    if n == 0 then
        return 1
    else
        return n * factorial(n - 1)
    end
end

print(factorial(5))  -- Salida: 120

En este ejemplo, hemos definido una función factorial que calcula el factorial de un número n de manera recursiva.

Ejercicios Prácticos

Ejercicio 1: Función de Potencia

Escribe una función llamada potencia que tome dos argumentos base y exponente, y devuelva base elevado a la exponente.

function potencia(base, exponente)
    local resultado = 1
    for i = 1, exponente do
        resultado = resultado * base
    end
    return resultado
end

print(potencia(2, 3))  -- Salida: 8

Ejercicio 2: Función de Máximo Común Divisor (MCD)

Escribe una función llamada mcd que tome dos argumentos a y b, y devuelva su máximo común divisor utilizando el algoritmo de Euclides.

function mcd(a, b)
    while b ~= 0 do
        local temp = b
        b = a % b
        a = temp
    end
    return a
end

print(mcd(56, 98))  -- Salida: 14

Resumen

En esta sección, hemos aprendido sobre las funciones en Lua, incluyendo cómo definirlas, llamarlas y utilizarlas de manera efectiva. También hemos explorado funciones anónimas, funciones como ciudadanos de primera clase y funciones recursivas. Finalmente, hemos reforzado estos conceptos con ejercicios prácticos.

En el próximo módulo, profundizaremos en las tablas, una de las estructuras de datos más importantes en Lua.

© Copyright 2024. Todos los derechos reservados