Funciones en Lua
Funciones en Lua
En programación una función es un grupo de lineas de código que realizan una tarea especifica. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código.
Esto quiere decir que una función puede ser utilizada o invocada varias veces dentro de un mismo programa, ademas permiten recibir datos desde fuera de la función y asi mismo devolver datos.
Definiendo una función en Lua
Para crear una función en Lua, se utiliza la palabra reservada
function
, la estructura básica es la siguiente:
function nombre_de_la_funcion()
-- Cuerpo de la función
end
Pero también podemos declarar funciones como si se trataran de variables utilizando la siguiente estructura:
nombre_de_la_función = function()
-- Cuerpo de la función
end
Funciones con argumentos
Las funciones también pueden recibir argumentos, esto quiere decir que son parámetros o valores de entrada que son enviados hacia la función.
function nombre_de_la_función(argumento1, argumento2)
-- Cuerpo de la función
end
Retorno de valores
Las funciones también nos pueden devolver datos resultados de su lógica interna, pueden incluso devolver más de un dato, y esto se hace con la palabra reservada
return
.
function nombre_de_la_función(argumento1, argumento2)
-- Cuerpo de la función
return valor_a_retornar
end
Ejercicio
Imaginemos que queremos realizar un programa que ingrese tres años, y como respuesta dirá que año es bisiesto y cual no, primero miremos como seria el programa sin usar funciones.
Recordemos primero que:
Año bisiesto es el divisible entre 4, salvo que sea año secular -último de cada siglo, terminado en «00»-, en cuyo caso también ha de ser divisible entre 400.
print("Programa para saber años bisiestos")
print("ingrese el año 1")
anio1=io.read()
print("ingrese el año 2")
anio2=io.read()
print("ingrese el año 3")
anio3=io.read()
if (anio1%4 == 0 and anio1%100 ~= 0 ) or (anio1%400 == 0) then
print(anio1.." Es bisiesto")
else
print(anio1.." No es bisiesto")
end
if (anio2%4 == 0 and anio2%100 ~= 0 ) or (anio2%400 == 0) then
print(anio2.." Es bisiesto")
else
print(anio2.." No es bisiesto")
end
if (anio3%4 == 0 and anio3%100 ~= 0 ) or (anio3%400 == 0) then
print(anio3.." Es bisiesto")
else
print(anio3.." No es bisiesto")
end
Ahora observemos cómo cambia el código al usar funciones
function esBisiesto( a )
if (a%4 == 0 and a%100 ~= 0 ) or (a%400 == 0) then
print(a.." Es bisiesto")
else
print(a.." No es bisiesto")
end
end
print("Programa para saber años bisiestos")
print("ingrese el año 1")
anio1=io.read()
print("ingrese el año 2")
anio2=io.read()
print("ingrese el año 3")
anio3=io.read()
esBisiesto(anio1)
esBisiesto(anio2)
esBisiesto(anio3)
El resultado es el mismo, pero si lo notaste fueron menos lineas de código y todo por implementar una función.
keyword ...
En Conceptos básicos hablamos de los caracteres reservados los cuales no podíamos usar para nombrar un identificador, uno de ellos es
...
y hoy veremos su utilidad.
Si declaramos una función con dos argumentos pero le enviamos tres ocurrirá un error en el peor de los casos aunque posiblemente no ocurra nada, si le enviamos solo un argumento, el código se ejecutara pero uno de estos argumentos sera un tipo
nil
, lo que tal vez no deseemos que ocurra, para solucionar esto Lua usa ...
para referirse a parámetros variables (Lo que se entenderá mejor con un Código).
Imaginemos que tenemos una función que imprime 2 nombres
function imprimir(a,b)
print(a,b)
end
imprimir("Ocitronix","Lua")
Si lo ejecutamos nos muestra en pantalla Ocitronix seguido de la palabra Lua, pero que pasa si ahora queremos imprimir más de dos argumentos pero no sabemos cuantos argumentos en total, pues seria tan sencillo como:
function imprimir(...)
print(...)
end
imprimir("Ocitronix","Lua","2018","Enero")
Comentarios
Publicar un comentario