Please enable JavaScript to use CodeHS

Documentación Lua

Básicos

Impresión en la consola

-- Utiliza la función print() para imprimir texto en la consola
print("Hola")
print("mundo")
-- Resultado:
-- Hola
-- mundo.

-- Concatena cadenas y variables utilizando ".."
local species = "Marciano"
print("Saludos " .. species)
-- Resultado:
-- Saludos Marciano

Comentarios

Utilizamos los comentarios para describir lo que hacen determinados bloques de código en lenguaje llano (no código). Los comentarios no se ejecutan realmente. En su lugar, sólo están ahí para ayudarnos a leer el código.

Podemos hacer comentarios multilínea con "--[[comentario]]" y comentarios de una sola línea con "--".

--[[
Este programa pedirá al usuario dos números.
Luego imprimirá su suma.
]]
print("Introduce un número: )
local numOne = tonumber(io.read())
print("Introduce un segundo número: )
local numTwo = tonumber(io.read())
print("Suma: " .. (numOne + numTwo))

-- Este programa suma 1 y 2
local added = 1 + 2
print(added)

Variables

Utilizamos variables para almacenar valores. Podemos utilizar y alterar estos valores a lo largo de nuestro programa.

-- Inicializar una variable
local myVarName = 5

-- Asigna un nuevo valor a una variable existente
myVarName = 10

-- Imprime el valor de una variable
print(myVarName) -- Imprime "10".
print("El valor es: " .. myVarName) -- imprime "El valor es 10"

Entradas del usuario

Podemos utilizar las entradas del usuario para controlar nuestro código utilizando el comando io.read(). Primero, utiliza una sentencia print para preguntar al usuario. A continuación, utiliza io.read() para recoger las entradas del usuario. Podemos almacenar la entrada en una variable para utilizarla en nuestro programa.

Ten en cuenta que los valores introducidos por el usuario se almacenan como una cadena.

-- Este programa obtiene el nombre del usuario
print("¿Cuál es tu nombre?")
local name = io.read()
print("¡Hola" .. name .. "!")

-- Utiliza la función tonumber() para convertir las entradas del usuario en un número
print("Introduce un número: ")
local num = tonumber(io.read())

Matemáticas

Utiliza operadores matemáticos para alterar valores.

-- Operadores:
+ Suma
- Resta
* Multiplicación
/ División
^ Exponenciación
% Módulo (Resto)
() Paréntesis (Para el orden de las operaciones)

-- Ejemplos
var z = x + y
var w = x * y

-- Incrementar (añadir uno)
x = x + 1

-- Disminución (resta uno)
x = x - 1

-- Exponenciación
local squared = 5 ^ 2
print(squared) -- imprime 25

-- Módulo
local z = 10 % 4 -- 10 / 4 = 2 resto 2
print(z) -- imprime 2

Números aleatorios

Puedes generar números aleatorios utilizando el comando math.random(low, high).

-- Necesitas incluir este comando para activar la aleatoriedad
math.randomseed(os.time())

-- Genera un número entero aleatorio entre bajo y alto, ambos inclusive
math.random(low, high)

-- Ejemplo: Esto simula lanzar un dado de 6 caras
local roll = math.random(1, 6)

Funciones

Una función es un bloque de código reutilizable que se utiliza para realizar una única tarea. Utilizamos funciones en nuestro código para dividir nuestro programa en partes más pequeñas, hacer que nuestro programa sea más legible y evitar crear código repetitivo.

Nombre de las funciones: Debes nombrar las funciones en función de lo que hacen. Los nombres también deben utilizar la convención de las minúsculas camel.

Definición de funciones: Definir una función es lo mismo que crear una función. Dentro de la definición de la función, le indicas al ordenador qué órdenes debe ejecutar cuando se llame a la función.

Llamada a funciones: Llamar a una función es decirle al ordenador que ejecute el código que hay dentro de la definición de la función. Llama a una función escribiendo el nombre de la función seguido de un paréntesis. Nota importante: En Lua, tienes que definir una función antes de llamarla.

-- Define una función que suma dos números
local num1 = 10
local num2 = 12
local function addNumbers()
    local sum = num1 + num2
    print("Suma: " .. sum)
end

-- Llama a la función
addNumbers()
-- Resultado: imprime "Suma: 22"

Devolución de valores en funciones

Podemos utilizar el comando return para que una función devuelva un valor al código que la ha llamado.

-- Añadimos una sentencia return para utilizar el valor de la variable
-- variable sum en nuestro programa
local num1 = 10
local num2 = 12
local function addNumbers()
    local sum = num1 + num2
    return sum
end

local x = addNumbers()
-- se asigna a x el valor devuelto por la función addNumbers (22)

Utilización de parámetros con funciones

Podemos utilizar parámetros para introducir información en una función. Esto hace que nuestras funciones sean más generales y versátiles. Para crear parámetros, debes incluirlos en la definición de la función. Luego, cuando llames a la función, tienes que incluir argumentos, or valores para los parámetros.

-- En este programa, los parámetros se utilizan para introducir dos números
local function addNumbers(num1, num2)
    local sum = num1 + num2
    return sum
end

-- Llamamos a la función con argumentos,
-- o valores dentro de los paréntesis
-- Este programa imprimirá '7
print(addNumbers(3, 4))

Estructuras de control

Booleanos

Un booleano es un valor true or false. Puedes crear una variable booleana asignándole el valor true or false. Ten en cuenta que no hay comillas porque un valor booleano no es una cadena.

local myBoolean = true
local otherBoolean = false

Operadores lógicos

Utiliza operadores lógicos para comprobar varias condiciones a la vez o una condición de entre varias. Los operadores lógicos evalúan a booleanos.

-- Operador No
local y = true
local x = no y -- se asigna a x lo contrario de y, o false

-- Operador and: Evalúa a true si todos los operandos son true
local x = true
local y = false
local z = x and y -- A z se le asigna el valor de false

-- Operador or: Evalúa a true si al menos un operando es true
local x = true
local y = false
local z = x or y -- se asigna a z el valor de true

-- ¡Puedes combinar muchos booleanos!
local x = true
local y = false
local z = true
local lotsOfBooleans = x and (y or z) -- se evalúa como true

Operadores de comparación

Los operadores de comparación comparan los operandos a ambos lados del operador y deciden su relación. Los operadores de comparación evalúan a booleanos.

x == y -- ¿es x igual a y?
x ~= y -- x no es igual a y
x > y -- x es mayor que y
x >= y -- es x mayor o igual que y
x < y -- es x menor que y
x <= y -- ¿es x menor o igual que y?

--Ejemplo:
local grade = 80
local isPassing = grade >= 70
print(isPassing) -- Imprime true porque 80 es mayor que 70

Declaraciones if/else

Usa una declaración if/else para indicar al ordenador que tome una decisión entre varias condiciones. Si la primera condición es false, el ordenador pasará a la siguiente hasta que encuentre una que sea true. Si ninguna condición es true, se ejecutarán los comandos del bloque else.

-- Declaración if
if BOOLEAN_EXPRESSION then
	-- código a ejecutar if true
end

-- Declaración if/else
if BOOLEAN_EXPRESSION then
	-- código a ejecutar si true
else
	-- código a ejecutar si false
end

-- Algunos ejemplos de condicionales:

-- Comprueba si un número es negativo
local x = -1
if x < 0 then
	print("x es negativo")
end

-- Comprueba si un color es un color primario
local color = "purple"
if color == "red" or color == "blue" or color == "yellow" then
	print("Color primario.")
else
	print("No es un color primario.")
end

Para Loops

Utiliza un para loop para repetir un bloque de código un número fijo de veces.

-- Estructura general del for loop:
for i = 1, COUNT, INCREMENT do
    -- Código para repetir el número de veces COUNT
end

-- Este bucle for imprimirá "Hola" cinco veces
for i = 1, 5 do
	print("Hola")
end

-- Este ejemplo imprime los números del 0 al 10
for i = 0, 10 do
	print(i)
end

-- También puedes incluir un valor de incremento
-- Esto imprime los números impares del 1 al 11
for i = 1, 11, 2 do
    print(i)
end

Bucles while

Los bucles while repiten un bloque de código hasta que una condición se convierte en false.

-- Estructura general del bucle while:
while BOOLEAN_EXPRESSION do
	-- código a repetir hasta
	-- BOOLEAN_EXPRESSION sea false
end

-- Este while loop cuenta hacia atrás desde 15 hasta 10
local i = 15
while i > 9 do
	print(i)
	i = i - 1
end

-- Utiliza una instrucción break para salir de un loop
while true do
    -- código a repetir
    if condition then
        break
    end
end

Estructuras de datos

Arrays

Un array es una forma de almacenar varios valores o datos bajo un mismo nombre de variable. Puedes añadir elementos, eliminar elementos y alterar elementos dentro de un array.

-- Crea un array vacío
local arr = {}

-- Crea un array con valores
local arr = {1, 2, 4}

-- Un array puede tener cualquier tipo (x es una variable)
local arr = [4, "hola", x]

-- Accede a un elemento de un array con arr[índice].
local firstElement = arr[1]

-- Asigna a un índice de un array un nuevo valor
arr[3] = 9

-- Añade un elemento a un array como último elemento
table.insert(arr, element)

-- También puedes especificar dónde añadir el elemento en la lista
table.insert(arr, index, element)

-- Elimina el último elemento de un array
table.remove(arr)

-- Elimina un elemento en un índice concreto
table.remove(arr, index)

-- Longitud de un array
local length = #arr

-- Loops sobre un array
for i = 1, #arr do
    local element = arr[i]
    print(element)
end