Transcripciones
1. Introducción: Bienvenido a la clase de programación
de Introducción a Lua. El objetivo de esta clase es
repasar los conceptos básicos de la programación, así
como
los fundamentos del uso de Lua Si nunca antes has
programado, esta clase será
perfecta para que pruebes por primera vez
cómo es
la codificación y aprendas todos
los conceptos que se utilizan en todos los lenguajes de
programación. Si ya tienes
algo de experiencia en codificación, aprenderás los
conceptos básicos de Lua muy rápidamente Sin embargo, los videos en las mesas son
una visita obligada. Eso es lo que realmente separa a
Lua de otros idiomas. Al final de la clase, se
te asignará un proyecto, lo que será una excelente
oportunidad para experimentes con el lenguaje
y construyas algo genial. Empezar con
Lua es muy fácil. Voy a estar pasando por cada
lección solo en un navegador web. Si vas a ua.org, puedes ir a este enlace de
descarga, ir a la demostración en vivo, y aquí hay algunos
sitios diferentes entre los que
puedes elegir Cada uno de estos tiene una
pequeña sección de texto por aquí que
te permite escribir código Lua, y puedes ejecutarlo
directamente en el navegador Una vez que esté todo listo,
continúe con la siguiente lección, donde escribiremos nuestro
primer bit de código Lua
2. Variables: Lo primero
que vamos
a discutir son las variables. Una variable es una pieza de datos
almacenados cuyo
valor se puede cambiar. Para demostrarlo, sigamos
adelante y pongamos uno en nuestro código. En la parte superior del
archivo, voy
a escribir mensaje igual, y luego entre
comillas, Lua es increíble En esta línea, acabamos de
crear una variable. El nombre de las variables es mensaje, y el valor que
contiene esta variable es el texto
Lua es impresionante Ahora bien, para asegurarnos de que
hicimos esto correctamente, vamos a imprimir el valor
de esta variable. Entonces en la impresión, en lugar
de Hello World, sigamos adelante y
pasemos el mensaje. Entonces el que corremos, veremos
el texto Lua es increíble. Simplemente va a
agarrar cualquier valor que contenga
esta variable. Y se pueden almacenar todo tipo de
datos. En este caso, se trata de almacenar texto. Y en la programación, texto como
este se llama cadena. Una cadena son solo algunas palabras o letras rodeadas de
comillas como esta. Una variable
también podría almacenar números. Por ejemplo, podríamos establecer esta variable de mensaje en
cinco, solo el número cinco. Y ten en cuenta que
no queremos comillas alrededor de las cinco porque
queremos que
se trate como un
número, no como una cadena. Y el mismo trato que antes, si estamos imprimiendo
el valor del mensaje, deberíamos ver cinco por
aquí en la salida. Podemos tener más o menos
tantas variables como queramos. Por ejemplo,
pongamos otra variable, y yo la llamaré pollo. Y pongámoslo igual a diez. Entonces ahora tenemos una variable de
mensaje, y tenemos una variable pollo. Pero incluso cuando corremos,
todavía va a decir cinco por aquí porque estamos
imprimiendo mensaje específicamente. Hagamos una tercera variable, y llamaremos a esta un resultado. Pero esta vez, hagamos
algo un poco diferente. En lugar de establecerlo
igual a un nuevo valor, pongámoslo igual a pollo. Entonces ahora, el resultado de la variable ahora contiene cualquier
valor que tenga el pollo. Dado que el pollo tiene diez, y vamos a intentar imprimir el
resultado esta vez, deberíamos ver diez en la salida porque el resultado contiene cualquier
valor que tenga el pollo, y estamos imprimiendo el resultado. Al programar,
el valor almacenado en una variable podría cambiar
más adelante en el programa. Entonces aunque, por ejemplo, pollo empieza a las diez, más tarde
podría cambiarlo a pollo igual a
25, por ejemplo. Y cuando imprimimos pollo, deberíamos ver 25, porque a pesar de que
empieza siendo diez, esta línea la cambia a 25, y la
imprimimos en ese punto. Esta variable de resultado se establece pollo aquí en la línea tres. En este punto, ya que
el programa se ejecuta de arriba a abajo, el
pollo se establece en diez, resultado se establece en pollo, lo que significa que el resultado
en realidad contiene diez, y podemos ver que si
imprimimos resultado y ejecutamos. Son diez. Otra forma en
que las variables pueden cambiar en tu programa es
realizando aritmética básica sobre ellas. Esto significa que podemos
hacer suma, resta, multiplicación o división
con estas variables Entonces probemos eso
con resultado. En lugar de establecer el resultado
igual al pollo, pongámoslo igual
a pollo más uno. Entonces lo que esto hace es
ya que el pollo equivale a diez, veremos diez más uno. Y cuando imprimimos resultado, veremos 11. Se realizó esta
aritmética aquí mismo. Y puedes realizar cualquier tipo. Como dije, se puede hacer menos
uno o veces decir veces 20. Veremos que dice 200, o puedes hacer división. Y de manera similar,
obtendremos el valor decimal. Ten en cuenta que esta matemática solo funciona cuando estamos
trabajando con números. Si decir pollo era una
cuerda, como, hola. Bueno, esto de pronto se vuelve extraño porque estamos tratando tomar la cuerda hola
y dividirla por 20. Y eso
realmente no tiene sentido. De hecho, cuando intentes
correr, veremos un error. Y cuando estás programando, es muy común que
te encuentres con errores. Es solo una
parte natural del aprendizaje y solo una
parte natural de la programación. Incluso los expertos se encuentran con errores. Y aquí podemos ver que
se trata de
realizar la aritmética En un valor de cadena, pollo
global. Entonces no se puede realizar la
aritmética en las cadenas, y es por eso que
necesitaríamos cambiarlo nuevo a un número
para que esto funcione correctamente E incluso después de que una variable ya
esté inicializada, aún
podemos cambiar su valor
más adelante con la aritmética Entonces con pollo, por ejemplo, podría decir pollo
equivale a pollo más diez. Entonces aquí tenemos pollo
arranca a la una, y luego esta línea
va a poner pollo igual al valor
actual del pollo, que es uno más diez. Entonces eso debería darnos 11, y si lo
imprimimos, veremos 11. Eso cubre los
conceptos básicos del uso de variables. Estas son la base
de cualquier programa, y tener una buena
idea de cómo funcionan te
convertirá en un desarrollador muy
capaz.
3. Declaraciones condicionales: A continuación, vamos a cubrir declaraciones I, LSF, y demás Estos tipos de declaraciones
pueden conocerse como declaraciones
condicionales
porque determinan si una sección
de nuestro código se
ejecutará o no en un momento dado en
función de una condición. Vamos a comenzar con
nuestro código luciendo así donde tenemos una variable de
mensaje, y lo estamos imprimiendo. Y cuando corremos, solo
vemos cero por aquí. Además, agreguemos otra
variable al programa, y sólo voy a
llamarlo condición. Puedes llamarlo como
quieras. Y también puedes configurarlo
a lo que quieras. Lo pondré igual a 25. Vamos a usar esta
variable como parte de una
sentencia condicional que va a cambiar el valor del mensaje. Vamos a comenzar
con una sentencia if, y eso comienza con si la
condición es mayor que cero, entonces y luego termina. Ahora entre esto
entonces y este fin, vamos a poner lo que realmente sucede cuando la
condición es cierta. Entonces voy a poner
mensaje igual a uno. Esta línea se lee como si el valor de condición fuera
mayor que cero, entonces y sólo cuando esa
condición
sea verdadera, va a realizar
lo que hay aquí dentro. Va a decir mensaje
es igual a uno. Eso lo podemos probar. El mensaje empieza en cero, pero si corremos, podemos
ver que va a uno. Alternativamente, cambiemos la
condición a negativo 25. Ahora bien, esta afirmación if ya
no será cierta porque negativo 25
no es mayor que cero. Como esta condición no es cierta, eso significa que esta línea de
aquí no funcionará. Nuevamente, cuando corremos, vemos que
el mensaje sigue siendo cero. Esta línea nunca sucede. Vamos a agregar otra
declaración condicional a nuestro código, y va a ser una idea muy
similar a la anterior. Pero esta vez
comprobará si condición es menor
o igual a cero entonces. Y aquí dentro, pondremos mensaje
igual a uno negativo. Así que la misma idea
que antes, que va a ver
es condición
menor o igual a cero. Y sólo si ese es el caso, ¿el mensaje
se pondrá en negativo? Y vamos a ver
que eso pasa. Esta línea se alcanza porque
su condición es verdadera. Pero nuevamente, todos nuestros programas
ocurren de arriba a abajo. Entonces primero, esta línea
pasa, luego esta línea, y luego va a
verificar esta condición, en nuestro caso, esta
condición no es cierta. Entonces esta línea no sucede. Entonces pasa
a esta condición, y como ésta es cierta, esta línea sí sucede. Escribir nuestro código de esta manera con dos declaraciones if separadas, una justo después de la
otra es aceptable, pero hay una forma mucho más fácil
y eficiente de escribir
exactamente esta misma cosa. Así que en realidad voy a eliminar esta segunda condición o
la segunda sentencia if, y en su lugar, vamos
a agregar a esta primera. Puedo poner otra cosa y decir
mensaje es igual a uno negativo. Este es un nuevo tipo de condición, donde solo dice otra cosa. La forma en que esto lee es que primero va a verificar
esta condición. Si la condición es
mayor que cero, entonces sucede esta línea. Pero si esta condición no
es cierta, o si condición es menor que cero en lugar
de mayor que, entonces va a decir otra cosa, y una vez que se alcanza esta otra cosa, entonces lo que sea entre else y el final es lo que se ejecuta. En este caso, mensaje
equivale a uno negativo. Esta es exactamente la misma
funcionalidad que antes, pero es más compacta con un
solo conjunto de if y luego else. Y
podemos probar esto. Si corremos, seguimos obteniendo nuestro
negativo en la salida. Hasta ahora, hemos usado declaraciones
if, hemos usado
declaraciones else, y finalmente, vamos a pasar
al último condicional que es una
especie de combinación
entre estos dos y se llama el else if. Adelante y pon uno aquí, y de hecho voy a quitar nuestro otro por ahora solo
para limpiarlo un poco. Pero en su lugar,
voy a agregar el LI. Entonces dices el if, una palabra así, y le
agregaremos una condición a esto. La condición es
menor que diez negativos, entonces, y en este caso, diremos mensaje
es igual a uno negativo. Entonces esto es diferente a
antes porque con
nuestra declaración, no
había ninguna condición
adherida a ella. Entonces lo que va a pasar es esta condición se
va a comprobar primero, y si es cierto,
vamos a hacer esto. Pero si esta condición no
es cierta, va a pasar
a aquí SIF, y va a
comprobar esta condición Y si esta es cierta, entonces esta línea aquí
va a correr. Pero si ninguna de estas
condiciones es cierta, entonces ninguna de
estas líneas va a correr en absoluto. Entonces probando esto ya que condición es negativa
25 en este momento, todavía
obtenemos nuestro negativo. Pero si cambiamos esto a, digamos cinco negativos en su lugar, así que con ese cinco negativo no
es mayor que cero, así pasa al SIF, y el cinco negativo tampoco es
menor que diez negativo Por lo que ninguna de estas
condiciones se cumplió, y eso significa que ese mensaje permanece en cero, en
qué comienza. Ahora para
amarrar todo es que puedes poner un else además
de todo lo demás. Entonces voy a poner mensaje igual, y pongámoslo a una cadena. No se cumplieron condiciones. Entonces con este
ejemplo negativo de cinco, esto no es cierto. Esto no es cierto, así que se va a golpear a lo
demás, y esta línea
va a suceder. Entonces podemos ver si
corremos, no se cumplieron condiciones. Ahora, con bloques
de código como este, puedes tener uno si. Puedes tener uno más. Pero entre lo demás y el si, puedes tener tantas de estas porciones
el if como quieras. Entonces voy a poner en
otra, en realidad. Diré ls si condición, y diremos que es igual
a cinco negativos. Entonces. Y en este caso, voy a decir mensaje equivale a hola. Ahora, ten en cuenta que aquí estoy usando el doble signo igual. Cuando estás usando
doble signo igual, así es como estás
probando para ver, es esto igual a esto. Pero cuando estás usando
un signo igual, eso se llama asignación, lo que significa que este valor está siendo asignado
directamente
a esta variable. Entonces no estamos poniendo
condición a cinco negativos. Estamos probando para ver es condición igual
a cinco negativos. Y si lo es, entonces
esta línea va a pasar. Y podemos probar eso, si corremos, veremos hola. Un último comentario sobre este tema es que en estas intersecciones, puedes tener tantas líneas
aquí como quieras Además de hola, podría hacer una impresión extra y decir: Hola. Cuando hago clic en Ejecutar, obtenemos
tanto la i como la hola, ambas líneas corren porque todo entre
esto y esto, toda
la sección interior con
sangría, eso va a ser ejecutada
4. Bucles: El siguiente tema son los bucles, y hay una razón por la que te
estoy mostrando estos justo después de las declaraciones
condicionales. Los bucles son secciones de
código que se ejecutan más de una
sola vez en función de
ciertas condiciones. Para presumir esto,
saltaremos directamente con nuestro primer tipo de
bucle, el bucle ile. Empiezo con el código
luciendo así donde tenemos nuestro mensaje, y lo
estamos imprimiendo. Y después del mensaje, vamos a escribir el
primer bucle, y es un bucle. Vamos a decir mensaje Y
es menos de diez, D. Y entonces aquí dentro, digamos mensaje es igual a
mensaje más uno. Repasemos esta
sección de código línea por línea para obtener una mejor
comprensión de lo que hace. Empezamos con ile, y entonces este mensaje
es menos de diez. Entonces esto es realmente similar a nuestras declaraciones
if donde
esta es una condición. Y sólo si esta
condición es cierta, ¿pasamos a la intersección? Y dentro de este bucle ile, estamos diciendo que el mensaje es igual al
valor actual del mensaje, que es cero más uno. Entonces después de que esta línea se ejecute, eso significaría que ese
mensaje equivaldría a uno. Pero lo que hace interesante a Loops es que una vez que llega hasta aquí, el final, en realidad va
a saltar hacia atrás e ir por qué, mensaje es menos de diez. Entonces en realidad va a
revisar el estado de nuevo, justo después de que
lo revisé la primera vez. Y el mensaje es ahora uno. Entonces va a preguntar,
¿uno es menos de diez? Y como lo es, eso
significa que el mensaje va
a aumentar a dos. Y luego una vez más,
volveré aquí son dos, menos de diez, y luego ahora son tres,
son tres, menos de diez, y una y otra y otra vez,
va a seguir haciendo un bucle, que es de donde viene el bucle de
nombre Hasta que finalmente, el mensaje
va a aumentar a ser diez, y va a decir que
son diez, menos de diez. Y como diez
no es menos de diez, eso quiere decir que la
condición ya no es cierta, y esta intersección
deja de correr. Ya no corre después de
eso. Y luego sigue adelante. Después de esto corre, eso significa que esta intersección corrió un total de diez veces y el mensaje terminó siendo diez.
Y eso lo podemos ver. Si imprimimos mensaje
y corremos, vemos diez. Ten en cuenta que
todo este proceso por el que
acabamos de platicar
sucede instantáneamente Dado que las computadoras son
increíblemente rápidas, el programa se encuentra con
este bucle while aquí y casi de inmediato puede
atravesar todas las iteraciones Incluso podrías saltar
este diez hasta 10,000, y aún así va a
correr instantáneamente Obtiene a través de las 10,000
iteraciones en poco tiempo. Hablando de ello, este mensaje equivale a mensaje más uno es un ejemplo
muy básico. Entre el do y el final, puedes tener tanto
código como quieras, al
igual que las sentencias if, y todo se ejecutará siempre y cuando la
condición sea verdadera. Por ejemplo, podríamos
agregar una segunda variable. Yo seguiré adelante y
solo lo llamaré prueba, y lo pondré igual a cero. Entonces dentro del bucle,
hagamos algo así como test es igual a
test menos cinco. Así que también voy a bajar
esto a diez, así que es un poco
más fácil de entender. Entonces igual que antes, este bucle va
a correr diez veces, lo que significa que esta línea aquí también va
a correr diez veces, lo que significa que esa prueba, si imprimimos prueba, será negativa 50. Se restó en
cinco, diez veces. Anteriormente, mencioné
que el bucle se ejecutará hasta que la condición ya no
sea cierta. Y como programador, es tu responsabilidad
asegurarte de que cada vez que
uses un bucle while, eventualmente terminará. De lo contrario, tu bucle
seguirá y seguirá para siempre. Y así como una experiencia de
aprendizaje, podemos seguir adelante y
probarlo solo para ver qué pasa. Lo que hace que el bucle termine
es la línea de lista porque el mensaje sigue creciendo hasta que el mensaje ya no
es menor que diez. Entonces, si cambiamos esto
a menos uno, bueno, ahora este bucle va
a seguir para siempre
porque el mensaje
siempre será menor a diez. Entonces, si corremos, podemos ver
que nos quedamos atascados. Entonces si vas Sí, en
realidad se agota el tiempo. Si haces esto en
tu propia computadora, ten
cuidado, tal vez tengas que
forzar el cierre del programa. Pero sí, eso es lo que pasa cada vez que el
bucle wile corre para siempre. Simplemente nunca para,
y se agota el tiempo. Entonces, antes de que nos olvidemos, volvamos a
cambiar esto a plus, y volvemos a la normalidad. Eso sobre cubre bucles wile. Así que pasemos al
segundo tipo de bucle, que se llama un bucle de cuatro. Este tipo de bucle es tan útil
como el ile, pero es útil para
diferentes situaciones. En la programación,
notarás que
normalmente hay muchas formas de
hacer algo, por lo que siempre
tendrás opciones cómo vas a
resolver problemas. Empecemos por hacer otra vez
una nueva variable, y voy a
llamarla pepinillo Realmente no importa
cómo lo llames. Y lo pondré igual a cero. Y este es el valor que
vamos a imprimir, pepinillo. Y después del bucle ile, vamos a iniciar
el bucle cuatro. Y así es como se ve. Dices cuatro. Yo es igual a uno, coma tres, uno, do Y luego aquí dentro, hagamos pepinillo es igual a
pepinillo más diez Ahora, mirando este código, es un poco menos
autoexplicativo en
comparación con el bucle ile. Así que vamos a
repasarlo poco a poco para que podamos entender mejor
lo que está pasando aquí. Esta primera línea especifica
tres valores diferentes. Primero, tenemos i es igual a uno. En un bucle de cuatro, esto va
a actuar como nuestro iterador, lo que básicamente significa que es un valor que se va a actualizar cada vez que
estos cuatro bucles de bucle El siguiente número en la secuencia, este tres es el número al que se acercará
nuestro iterador Y una vez que se
alcance ese número, el bucle terminará. Y finalmente, este último número es el valor de paso para el bucle. O en otras palabras, es la
cantidad que nuestro iterador
aumentará cada
vez que este bucle Entonces sé que eso fue mucha
información de una vez. Entonces déjame repasar lo que
sucederá cuando este bucle se ejecute. Se iniciará el bucle.
Empiezo a la una. Y nuevamente, este es nuestro iterador. Entonces comienza el bucle, el pepinillo
va a aumentar 0-10. Entonces cero más diez es diez. Por lo que ahora el pepinillo es diez.
Ahora termina el bucle. Se remonta al inicio. Pero esta vez, yo
aumenta por este valor. Entonces yo aumenta de
uno más uno es dos. Entonces ahora equivale a dos. Y desde dos, el valor
actual de i es menor que este valor, el tres, eso significa que
el bucle continuará. Así que vamos a
entrar en el bucle una vez más. pepinillo va a
aumentar en diez de nuevo, por lo que ahora el pepinillo es Y nuevamente, volvemos
al inicio del bucle. Voy a aumentar 2-3. Entonces ahora yo es igual a tres. Ahora que i es igual a
este número medio, tres es igual a
tres, eso significa que esta es la última
iteración del bucle Entonces el pepinillo va a
aumentar en 101 veces más, y luego finalmente se
hace el loop y se mueve Entonces eso significa esta línea
en el medio de aquí, o debería decir que toda
esta sección corrió tres veces en total,
la una a tres. Entonces podemos ver que el pepinillo después de
todo esto debería ser de 30. A su valor nominal, este bucle
podría parecer un
poco más complicado que el bucle
Wile que hicimos antes, ya que hay
algunos números más
para que podamos hacer un seguimiento Pero una vez que estás acostumbrado,
creo que es bastante
autoexplicativo. El bucle comenzará
en este número, aumentará en este número cada vez hasta que
llegue a este número. Entonces es una manera fácil de tener un conjunto
predeterminado de bucles. Lo interesante
y muy útil que puedes hacer con
cuatro bucles es que
puedes usar este valor de iterador
dentro del propio bucle Por ejemplo, podría
aumentar el pepinillo por i. Lo que esto significa es que
voy a empezar a la una, así que el pepinillo va
a aumentar en uno, luego va a
aumentar en dos, y luego va
a aumentar Uno más dos más tres es seis. Esta es una forma muy común de
usar cuatro bucles
porque habrá muchas circunstancias en las
que necesitarás este valor de iterador para
poder realizar
ciertos cálculos
5. Funciones: En programación, es
importante recordar que copiar y pegar tu código no
es muy buena práctica Si alguna vez encuentras la necesidad copiar una sección de tu código y pegarlo en otro lugar para que ahora haya dos copias
del mismo código, deberías
considerar usar una función. Una función es una sección
de código que define, y luego puede
llamar a esa sección de código para que se ejecute
en otra parte del programa. Entiendes a lo que me
refiero en un momento. Estamos comenzando el código
con solo mensaje igual a cero y luego imprimiendo
mensaje, que genera cero. Pero después del mensaje,
vamos a escribir nuestra
primera función. Vamos a decir
la palabra clave function, y el nombre de nuestra función
será aumentar mensaje. Y luego dentro
de esta función, diremos mensaje es igual a
mensaje más cinco. Entonces aquí, la
palabra clave function indica que lo siguiente es el
nombre de nuestra función. Los dos paréntesis son necesarios para indicar
que es una función Y luego todo antes de terminar, así que sea lo que sea que esté aquí, esto se va a ejecutar cada vez que se llame a
la función. Ahora bien, por defecto, solo porque
definimos esta función, eso no significa
necesariamente que este código
se vaya a ejecutar del bate. Al igual que si hago clic en Ejecutar,
veremos que nuestra salida
sigue siendo cero. Para que se ejecute este
código, necesitamos llamar a la función. Lo que solo significa que
escribimos el nombre de la función, aumentamos el mensaje y luego
ponemos los dos paréntesis Entonces esto se conoce
como llamar a la función, lo que solo significa que
cuando escriba esta línea, va a tomar
cualquier código que esté dentro de la función y ejecutarlo. Entonces veremos ahora que cuando
ejecutemos todo el programa, nuestro valor de mensaje es cinco. Y de igual manera, para
demostrarlo, podría copiar esta llamada de
función y decir, llamarla dos veces más. Entonces estamos llamando a esta
función tres veces en total, lo que significa que este código
se va a ejecutar tres veces, lo que al final significa
que nuestro mensaje es 15. Vamos a hacer
la función un poco más interesante. Cuando estás escribiendo una función, tienes la opción de
darle parámetros. Los parámetros son los que van
entre paréntesis, algo así como lo que
estamos haciendo con esta función de impresión aquí abajo Podríamos cambiarlo para
que esta función acepte un parámetro. Vamos a decir que acepta
algo llamado Pu, y luego podremos usar este
parámetro en la función. Entonces diremos más pu. En lugar de sumar
cinco cada
vez, va a agregar cualquier
valor que pasemos. Entonces cuando llamamos mensaje
aumentado, puedo poner aquí cualquier
valor que quiera. Puedo decir 99, por ejemplo, cuando
corro, conseguimos 99. Pero también puedo llamarlo un mensaje aumentado por
segunda vez, pero esta vez, voy a pasar en dos. Y esta vez, es uno oh uno. Llamó a este código dos veces. La primera vez
que Fu es igual a 99, y la segunda vez
Fu es igual a dos. Aunque en nuestro ejemplo, solo
tenemos un parámetro
en esta función, eres capaz de poner
tantos ahí como quieras, y lo haces poniendo
comas entre cada uno Entonces si quería
otro llamado Val y otro
me llamó, no importa. Los pones a todos en orden. Y luego cuando
llamas a la función, pasarías valores
adicionales para cada
uno de esos parámetros. Entonces así es como se vería eso si quisieras hacerlo de esa manera. Ahora bien, una
cosa muy importante que debes saber sobre las funciones es que tienes la opción de devolver un valor. Para explicar lo que esto significa, sigamos adelante y
alteremos nuestra función para que devuelva algo. Voy a
limpiar un poco este código, así que solo volvemos
al único parámetro Pu. Entonces, en lugar de que el
mensaje aumente solo
por el valor de Fu, hagámoslo para que
fu sea igual a fu por dos. Entonces vamos a
pasar un valor in, y luego inmediatamente
vamos a duplicar ese valor. Y luego volvamos a Fu. Ahora la función se está comportando un poco
diferente a lo que era antes Antes dijimos manualmente que el mensaje va
a aumentar en Fu, pero ahora solo estamos cambiando
Fu y luego regresando Fu. Lo que sucede es que
para
aplicar realmente esta función al mensaje, diríamos mensaje
es igual a aumentar mensaje, y luego pasemos en diez. Lo que va a pasar aquí es este diez
se va a pasar en SFU, entonces el fu se va a duplicar, así que diez se va
a convertir en 20, y luego va a
devolver el nuevo valor de Fu, que, como acabo de decir, es 20 Entonces, cuando algo se
devuelve en una función, eso básicamente significa
que la llamada a la función se va a reemplazar
por el resultado. Entonces como estábamos
regresando 20 aquí arriba, básicamente es
lo mismo que
reemplazarse solo con el resultado. Entonces básicamente es hacer eso. Y pero la belleza de ello es que eres capaz de pasar en el
valor que quieras. Y va a tomar
esto y aplicarlo. Entonces en este caso, escribí 99, el resultado es 198 Simplemente duplica este valor. Y luego como estamos
configurando mensaje igual a este valor devuelto, eso es lo que obtenemos en la impresión. La razón por la que esto
es útil es porque ahora si quería aplicar esta función para decir una
nueva variable como pollo, La forma en que lo tenía
configurado antes donde dije manualmente mensaje
dentro de esta función. Eso significaría que sólo se aplicaba a esta
variable, y eso es todo. Pero ahora cuando estoy
devolviendo algo, puedo usarlo para cualquier variable. Entonces podría decir pollo igual
a aumentar mensaje cinco. Y entonces si imprimo pollo, deberíamos ver diez. Algo genial que
puedes hacer con las funciones es pasar otras variables
como parámetros. Por ejemplo, en la
parte superior del programa, hagamos una nueva variable. Yo lo llamaré Mono, y
pongámoslo igual a 100. Entonces lo que puedo hacer es poder
pasar esta variable mono, digamos dentro de aquí. Así que sólo voy a decir mono. Entonces lo que está pasando es que el
valor del mono, que es 100, va a pasar
a un mensaje incrementado, y luego se puede
aplicar al pollo, lo que resulta en 200. Tener funciones en
nuestra correa de herramientas será increíblemente útil a medida que
avanza con la programación. Verás con qué frecuencia se deben
ejecutar
secciones de código en diferentes
puntos del programa. Y es mucho más fácil
administrar todo
cuando el código está en
un solo lugar en lugar copiar y pegar en
todo el archivo
6. Comentarios: Hasta el momento, todo lo
que hemos escrito en nuestro archivo LuA ha sido código Lua Pero con casi todos los
lenguajes de programación, hay una opción para que
los programadores pongan pequeñas notas que
no son tratadas como código, y estas notas se
llaman comentarios Por ejemplo, aquí en este código
de la lección anterior, tenemos una función que
se llama aumentar mensaje. Si estuviera escribiendo un
montón de código y tuviera un montón de funciones escritas a
lo largo de mis archivos, podría ser difícil hacer
un seguimiento de lo que hace cada
función. Por lo tanto, es útil
escribir comentarios en tu código para
ayudarte a recordar. Yo Lua, escribes
comentarios escribiendo dah, dah, y luego todo después se
considera un comentario Para que pueda escribir mi mensaje
duplica un valor y lo devuelve. Entonces, este mensaje aquí es
ignorado por el programa, pero me ayuda a mí o a
quien esté leyendo mi código. Simplemente te da un
poco de contexto extra. Es un pequeño recordatorio. Un truco genial que puedes
hacer de vez en cuando se llama comentar algún código Los comentarios son útiles para estos pequeños
recordatorios como este, pero también puedes usarlo para deshabilitar ciertas
secciones de código Entonces, por ejemplo, si quisiera
ver qué pasaría si eliminara
completamente esta
línea, podría eliminarla, o tal vez solo quiero borrarla
temporalmente haciendo d. Ahora esta línea
se considera un comentario, y cuando ejecuto el programa, básicamente finge
que
esta línea no está ahí en absoluto, pero al mismo tiempo, es muy fácil
para mí traerla de vuelta También la opción de
tratar secciones enteras de código como comentarios. Puedes hacer esto escribiendo, base
cuadrada base cuadrada, y luego cuando quieras
terminar la sección de comentarios, haces base cuadrada base cuadrada. Todo entre esto y
esto se considera un comentario, ninguna de estas líneas
aquí va a ser ejecutada. Tener el
hábito de comentar tu código es realmente importante Ayuda para tu
propia toma de notas, pero si alguien más
quiere revisar tu código, comentarios marcan una
gran diferencia en entender lo que tú
como programador, estabas tratando de hacer cuando lo
estabas escribiendo. Leer el código de otras personas
puede ser difícil a veces, pero
tener comentarios que te guíen en
el camino facilita mucho el
proceso.
7. Local vs. global: En Lua y muchos otros lenguajes de
programación, hay dos tipos
de variables, variables globales y variables
locales Hasta el momento hemos estado
trabajando con globales. Las variables globales son
cosas como mensaje. Una vez que lo definas, se puede
acceder a él en cualquier lugar a
lo largo del programa, y eso es a lo que se refiere
Global. Podríamos escribir mensaje en
cualquier parte del archivo, y el programa
sabría que nos estamos refiriendo a esta
variable aquí arriba. Alternativa a una
variable global es una variable local. Y todo lo que tienes que
hacer para hacer una variable local es agregar esta
palabra clave local de antemano. Y como su nombre lo indica, solo se puede acceder a
la variable local dentro la misma sección de código en la
que
se declaró la variable. Entonces, por ejemplo, actualicemos esta
función de mensaje de aumento para hacer algo diferente y
utilizar una variable local. Voy a hacer una nueva variable
local aquí y llamarla VR local. Y voy a
ponerla igual a FU. Después en la siguiente
línea, voy a hacer VR igual a R dividido por dos. Y luego finalmente,
vamos a devolver la realidad virtual. Así que ahora, en lugar de
duplicar el mensaje, ahora lo
estamos cortando por la mitad porque estamos estableciendo la realidad virtual igual
al pasado en valor, cortándola a la mitad
y luego regresando la realidad virtual Pero es importante tener en cuenta que la variable VR sólo va
a ser utilizada en esta sección
de código dentro de la función. Y como ese es el caso, usar local aquí tiene sentido. No queremos que la
realidad virtual se utilice en ningún lugar fuera de esta
sección de código aquí mismo. Y ahí es donde lo local se vuelve realmente útil es cuando estás
administrando tu proyecto. Hay una gran cantidad de variables a lo largo de
tu programa. Es más probable que
se
cometa un error cuando hay muchas
globales diferentes, porque si
después hiciste
una segunda variable y la llamé VR Bueno, puede que no quede claro qué var estamos hablando. Pero si todo es local a su sección relevante de código, no
habría ningún error a
qué Var se refiere esto, acaso nombraste dos
variables con el mismo nombre Entonces este es un hábito en el que te
animo mucho a meterte, especialmente con funciones de
escritura, diría que este es un escenario
muy común donde uso variables locales porque no quiero que
estas variables se usen fuera de la función en la
que las estoy declarando
8. Tablas: Todo lo que
hemos cubierto hasta ahora es muy común en el mundo de la
programación. Encontrarás todas estas cosas en prácticamente cualquier idioma. Sin embargo, nuestro siguiente
tema son las tablas, y esta es una estructura de datos
que es bastante única para Lua Cada idioma va a
tener opciones que son similares, pero las tablas en Lua son herramientas
únicas, increíblemente poderosas Los usa para almacenar
conjuntos de datos relacionados. Y como esos datos están todos
almacenados en un mismo lugar, hace que
sea mucho más fácil acceder y mantener
todo organizado. Se parecen mucho a las variables. Una variable almacena un dato
, y eso es todo. Nada más que
esa única cosa. Una tabla es capaz de almacenar múltiples piezas de datos
en una misma variable, excepto que es una tabla,
no una variable. Así que vamos a repasar
un ejemplo desde cero sobre cómo
utilizar tablas. Voy a empezar con nuestro mensaje
típico es igual a cero, y luego estamos imprimiendo mensaje. Después de esta variable de mensaje, hagamos una nueva tabla. Yo lo llamaré Puntajes de prueba. Entonces, cuando creamos
una nueva tabla, colocamos igual a llaves En Lua, si alguna vez ves
estos rizados, así es como sabes que
estamos trabajando con una mesa Y como no hay nada
entre las llaves, eso significa que es una mesa vacía Aquí inicializamos los
puntajes de las pruebas para que sean una tabla vacía. Para esta demostración,
vamos a almacenar un montón de
puntajes confeccionados en esta tabla. Para ello,
vamos a asignar una puntuación a su propio
índice en la tabla. Pasemos por cómo hacer esto. Primero, queremos escribir el nombre de la
tabla, los puntajes de las pruebas. Y luego justo después,
vamos a poner corchetes. Y luego entre
corchetes, vamos a poner un índice. Verás lo que esto
significa en un momento. Para comenzar,
pondremos en el Índice uno. Y pondré el índice uno en 95, por ejemplo. Y eso es todo. Asignamos nuestro primer puntaje a la
tabla de resultados de las pruebas en el índice uno. Ahora podemos pasar
al segundo puntaje de prueba. Demos los
resultados de las pruebas, y luego dos. Vamos a poner este en 87. Por ahora, pondremos
una puntuación de prueba más. Diré que las pruebas puntúan tres, y pondré esta en 98. Entonces en este punto, ahora tenemos
una tabla llamada puntuaciones de exámenes, y contiene tres puntajes, uno en cada uno de estos
tres índices. Ahora bien, para acceder a esos
datos que acabamos de poner, simplemente
necesitamos escribir
el nombre de la tabla y referirnos a cualquier índice del
que estemos hablando Entonces digamos que
queremos establecer mensaje
igual a los puntajes de las pruebas Índice dos. Entonces esto solo va a agarrar cualquier valor que esté en el índice dos, que es 87, y aquí estamos
imprimiendo mensaje, así que deberíamos ver 87. Ten en cuenta que solo
asignamos valores al índice uno, índice dos e índice tres. ¿Qué pasaría si
intentáramos acceder al Índice cuatro? No pusimos nada
ahí. Entonces, ¿qué pasaría? Si establecemos mensaje igual a los puntajes de las pruebas Índice cuatro
e intentamos ejecutar esto, en realidad
vemos NIL Entonces, cuando no se asigna nada
a un índice en particular, en
realidad contiene
el valor NIL Ahora NIL es una
palabra reservada en Lua, que solo representa
el significado de la nada Simplemente significa que nada existe
aquí mismo en esta posición. Entonces este método que
estamos asignando valores a la tabla está bien, pero hay una manera
más eficiente hacer exactamente lo mismo Voy a seguir adelante y
borrar estas tres líneas. Y en lugar de escribir tres líneas diferentes
para esas tareas, podemos volver a subir a esta sección
original de Berry rizada y poner esas tres partituras
diferentes. Y eso fue 95, 87 y 98. Entonces toda esta línea aquí logra
exactamente lo mismo que estábamos haciendo antes con las tres entradas manuales
para estas tres puntuaciones En otras palabras, este
valor está en el Índice uno, este valor está en el Índice dos, y este valor está en el Índice tres. Y
podemos probar esto. adelante y pongamos mensaje al Índice
tres de los puntajes de las pruebas, y obtenemos 98, que
es este valor. Si bien esta es la forma
más fácil poner valores en una tabla, hay otro método para hacer esto que aún es
importante pasar. Vamos a rehacer
todo esto
simplemente haciendo que los
puntajes de las pruebas comiencen vacíos, y de
manera similar a la forma en que lo hicimos antes, vamos a escribir
tres líneas separadas Pero esta vez,
vamos a usar esta función llamada
table insert. Misma idea desde antes donde
escribimos nuestras propias funciones. El
lenguaje de programación LuA viene con un montón de funciones escritas
para nosotros que podemos usar, y table dot insert
es una de ellas. Lo que
hace esta función es simplemente tomar un valor
y ponerlo en una tabla. La función tiene dos
parámetros que
tenemos que pasar
antes de poder usarla. El primer parámetro
es el nombre de la tabla. Entonces, vamos a escribir los puntajes de los exámenes. Ese es el nombre de la tabla en la
que queremos insertar. Y el siguiente parámetro es el valor que
queremos insertar. Primero pongamos en
nuestro puntaje de prueba de 95, y podemos hacer lo mismo. Con las otras dos anotaciones
y decir 87 y 98. Ahora bien, el beneficio de esta función de inserción de punto de tabla en comparación con lo que estábamos haciendo antes es que no tenemos que
especificar a qué índice queremos que vayan
estas puntuaciones. Y te encontrarás con
situaciones en las que realidad
no sabrás en
qué índice estás. Escribirás código
que solo diga, pondrás este valor en la tabla. Pero no sabrás en su momento cuántos artículos hay en la
tabla o si hay algún hueco. Entonces esta función de inserción cifra
todo eso para ti. Sólo una pequeña nota al margen. Al asignar valores
a una tabla en LuA, es típico
comenzar en el Índice uno, y luego subir desde allí Probablemente sea más común que los idiomas
comiencen en el índice cero, pero LuA es uno que
comienza en el Índice uno Pero ni siquiera hay que
usar números como índice. También puedes usar cuerdas. Se podría decir los resultados de los exámenes, y luego
entre corchetes, voy a decir, hola. Y luego pondremos ahí
el valor 90. Entonces, al igual que antes, sólo
puedo recordar esos mismos datos
al pasar en el índice
apropiado. Y obtenemos 90. Pero
como dije antes, el enfoque de una línea, si ya sabes qué datos van a estar
ahí, en este caso, 95 87 y 998, esta es la forma más
compacta de hacerlo. Y cuando tienes tablas llenas
de datos, como
lo hacemos aquí, es importante poder
revisar de manera eficiente y fácil todos esos datos
para encontrar lo que buscas, hacer algunos cálculos o hacer lo que sea para lo que
necesites esa información. Por suerte, para nosotros, Lua nos brinda
una opción muy fácil para iterar a través de todas las entradas de la
tabla y examinar los
datos que contiene Recuerda los cuatro
bucles de antes, podemos usarlos de una nueva manera aquí para poder
pasar fácilmente por la mesa. Y así es como se hace. Podemos decir cuatro, y
yo diré I S en parejas. Y entonces la tabla por la
que queremos
iterar son los puntajes de las pruebas D. Y luego dentro
del bucle cuatro, voy a decir
mensaje es igual a mensaje más S. Ahora, este bucle aquí va a
pasar por cada elemento de la tabla, y para cada ítem, realizará cualquier código que
esté dentro del bucle. Este I se refiere al
índice actual en el que está el bucle, y esta S se refiere
al valor o los datos que
existen en ese índice. En este caso, los puntajes de las pruebas tienen tres puntajes diferentes
en él actualmente. Eso quiere decir que
este bucle va a circular tres veces diferentes. La primera vez, voy
a ser uno, y S va a ser el valor
que esté en el Índice uno o 95. Entonces en ese punto, el mensaje
va a aumentar en 95. Entonces el loop va
a empezar de nuevo. Esta vez voy a ser dos, S va a ser 87 o
el valor en el índice dos. Y una vez más, el mensaje
va a aumentar. Esto en general sólo
va a sumar todos
los puntajes juntos y
ponerlo en mensaje. Entonces me voy a
deshacer de esta línea, y podemos correr y ver
que la suma es de 280. Eso es lo que obtenemos si
agregas 95 más 87 más 98. Hay una última cosa sobre las mesas por las que me
gustaría pasar. Una característica interesante de ellos es que puedes agregarles
propiedades, que es básicamente una variable que está ligada directamente
a la tabla misma. Sigamos adelante y sumemos
uno a los puntajes de esta prueba. Diré puntajes de prueba
punto sujeto es igual, y entre comillas matemáticas. Y eso es todo. Ahora podemos obtener esta propiedad simplemente llamándola similar a
cualquier otra variable, y deberíamos obtener matemáticas. Esta es una
manera conveniente de
marcar claramente lo que representa cada dato
. Pero en serio, todo lo que esta
línea está haciendo son los puntajes de las pruebas, y luego entre corchetes,
el sujeto de cadena. Es igual a matemáticas. Estas dos líneas logran lo mismo. Esto es sólo una forma alternativa de hacer esto y viceversa. Esto demuestra realmente
lo flexibles que son las tablas, y te permiten ser realmente personalizable con la forma en que se organiza
tu código.
9. Para terminar: Tiempo para hablar sobre el
proyecto para esta clase. Te voy a dar
este código aquí, y quiero que le agregues. Puedes escribir todo este código directamente
desde este video, o puedes descargar un archivo LuA sección del proyecto
de la clase, y luego copiarlo y
pegarlo todo en el mismo navegador de
las lecciones anteriores Aquí está el problema. Te doy esta función llamada
sumar todos los números. Pero por el momento,
no funciona correctamente. Se supone que esta función toma un número,
al que llamamos num
como parámetro, y necesita sumar todos
los enteros entre
uno y num Por ejemplo, si
pasamos en cuatro, eso significaría que agregaría uno más dos más
tres más cuatro, y el resultado sería diez. Entonces establecería ese diez
para resultar y devolver resultado. Ahora mismo, sin embargo, cuando corremos, siempre está devolviendo cero, no importa lo que pasemos para esta llamada a la
función de números de suma. Lo que tenemos que hacer es arreglar esto para que cualquier
valor que pasemos se utilice dentro la función y devuelva
una respuesta adecuada. Por cierto, cuando pasamos
en 12 para sumar todos los números, debemos esperar que el
resultado sea 78. Entonces, al principio, debes apuntar al menos este
número sea correcto aquí. Por supuesto, al final,
debería poder
aceptar cualquier número. La cantidad total de
código que tienes que escribir solo
debe ser de unas
cinco o seis líneas. Para resolver este problema, piense en las lecciones
anteriores. Uno de esos temas funciona particularmente bien
para este problema. Cuando se te ocurra
una solución, asegúrate de tomar una
captura de pantalla de tu código aquí y publicarlo en la página del proyecto de la
clase. Voy a echarle un vistazo y
darle algunos comentarios. Si pasas algún
tiempo pensando en este problema y no puedes
resolverlo del todo, asegúrate de contactarme,
y te daré algunas pistas. Hasta entonces, buena suerte. Después de completar el proyecto, eso concluirá esta clase. Muchas gracias por
pasar por este material conmigo. No lo has hecho ya,
por favor deja una reseña. Y si disfrutaste de la
clase, por favor, la recomiendo. Agradezco mucho
el apoyo. futuro,
recomiendo
profundizar en cada uno de los temas
tratados en la clase. Solo arañamos la superficie
de lo que Lua tiene para ofrecer. El idioma cuenta con
excelente documentación y tutoriales en ua.org Por lo que recomiendo encarecidamente
visitar ese sitio. Con todo lo dicho, creo
que eso lo cubre todo. Gracias de nuevo por
tomar mi clase, y espero
verte en la siguiente.