Funciones

Q-SYS Control 101 Training (Spanish) : Control de Flujo

3 ) Comunicación Básica

12m 57s

4 ) Block Controller

0m 0s

6 ) Control de Flujo

33m 58s

7 ) Término del Entrenamiento Control 101

1m 24s

Descripción de la lección

Funciones 6m 49s

Crea funciones que se repiten y después ejecuta estas funciones con parámetros que cambian tanto en Lua como en el Block Controller.

Transcripción de video

Funciones 6m 49s
0:08
En un script, una función es una acción o serie de acciones que son iniciados por un estímulo en
0:14
particular. Otros lenguajes de programación les llaman procedimientos o una subrutina. Hasta ahora,
0:20
todo lo que hemos codificado sucede automáticamente tan pronto como corremos el script, pero
0:26
una función es una acción que tú defines en el script, y que posteriormente ejecutas cuando quieras y
0:32
como quieras
0:33
Hay cinco piezas en la construcción de una función en Lua. Primero, escribes la palabra “function”
0:39
(función), después si lo deseas, puedes darle un nombre a la función. Si le das un nombre a la
0:44
función, te permitirá llamar rápidamente el mismo proceso una y otra vez desde muchos lugares, en
0:50
lugar de tener que re escribir todo cada vez que deseas realizarla.
0:54
A continuación, dentro de un par de paréntesis debes incluir cualquier argumento que quieras darle a
0:59
la función. Puedes considerar que los argumentos son como variables locales – son “algo” que solo
1:05
será usado dentro de la función.
1:08
Lo siguiente: el cuerpo de la función, el cual es la lista de acciones que deseas que la función haga, y
1:14
finalmente cierras la función con la palabra end (fin).
1:18
Aquí tenemos una función muy sencilla llamada “f”, la cual tiene dos argumentos – “X” y “Y”. Dentro
1:25
del cuerpo de esta función estamos imprimiendo el resultado de X más Y. La palabra end completa la
1:32
función. Ahora, podemos llamar esta función solo colocando su nombre e incluyendo los argumentos
1:38
que queremos darle dentro del paréntesis.
1:40
Por ejemplo, si colocamos “f(1,2)” entonces se imprimará el resultado “3”. Fíjate que en este caso la
1:50
función está esperando dos argumentos, así que regresará un error si llamamos la función sin la
1:56
información que necesita. O si añadiera un tercer argumento aquí, la función no haría nada con esa
2:02
información ya que esta no tiene instrucciones para hacer algo con un tercer argumento.
2:06
Si esto te parece familiar, es porque ya hemos estado usando una función llamada…. Print. El
2:12
comando print es una función y cualquier cosa que pongas en su argumento, en el paréntesis, será la
2:18
información que esta función mande a la ventana de depuración.
2:22
Cuando trabajas con funciones más avanzadas, hay veces en las que te darás cuenta que no sabes
2:27
cuántos argumentos deseas darle. En este caso puedes usar “…” en lugar de los argumentos, lo cual
2:34
le dice a la función que se adapte a tantos argumentos se le provean.
2:38
Por otra parte, si tu función no requiere de ningún argumento, necesitarás colocar el paréntesis que
2:44
abre y cierra para completar la estructura de la función, y tendrás prácticamente nada entre ellos.
2:50
Por ejemplo, veamos un par se funciones sencillas.
2:53
Aquí hay una función llamada “goblue” sin argumentos. El cuerpo de la función solo cambia el
2:59
parámetro .Color de un control en particular a “azul” y ahí termina. Como esta función solo hace una
3:06
cosa, sin variables, no necesitamos de ninguna otra información o argumentos en el paréntesis.
3:12
Ahora, hagamos una sencilla función matemática llamada “plus5”. Esta incluirá un argumento “A”.
3:19
Usaremos esta función para sumar 5 al valor de un control. Así que el cuerpo de la función se verá de
3:25
esta manera: tomamos el valor entrante A.Value y lo redefinimos como su estado actual más 5.
3:33
Y como una buena práctica, imprimamos el nuevo A.Value antes de terminar. Ahora podemos
3:39
ejecutar esa función y colocar cualquier control que necesitemos como el argumento, y a ese control
3:45
se le sumará 5 a su valor.
3:47
También puedes añadir un comando return al cuerpo de tu función, el cual regresará cualquier
3:53
información que especifiques en el término de la función. Por ejemplo, si miramos nuestra primer
3:59
función, en lugar de incluir un comando print en la función, voy a definir una variable local “m” como
4:05
nuestro “X+Y”. Ahora no puedo imprimir m porque es una variable local, por lo que mi comando print
4:12
no podrá ser usado.
4:13
Pero si añado la frase “return m” al final de nuestra función, entonces le estamos diciendo a nuestra
4:19
función que nos entregue esta respuesta de regreso. Ahora puedo imprimir la función misma (print
4:26
(f(1,2)), lo cual regresará m, mismo que será enviado a la ventana de depuración.
4:33
Una cosa más ya que estamos de este lado de Lua, deber haber notado este pequeño ícono en la
4:39
izquierda de tu función. Si le das click, la estructura completa de la función se colapsará en una sola
4:45
línea de código para que no desordene el resto de tu pantalla. Siempre puedes expandirla de vuelta
4:50
para seguir editándola o puedes colapsarla de vuelta para hacerla más fácil de leer.
4:55
En el Block Controller, puedes definir una función yendo a la sección Variables & Functions. Aquí
5:01
verás dos bloques para definir funciones o “define function”, en donde uno de ellos tiene la opción
5:07
de return y el otro no. Así que, si quieres que esta función regrese información, puedes añadir esa
5:13
variable en este punto, considerando que esta función tiene un punto de no regreso. ¡BROMAS!
5:20
Ok, vamos a darle un nombre a nuestra función, y si quieres incluir argumentos que usará esta
5:25
función, puedes dar click en el ícono del engrane y añadir “inputs” (entradas) al cuerpo de este
5:30
bloque. Yo añadiré dos argumentos, y si quisiera que esta función imprima su suma, puedo ir a la
5:37
sección de System y tomar un comando Debug Print, luego ir a la sección de Operators y tomar un
5:44
bloque su suma matemática.
5:46
Puedo tomar los argumentos justo en la parte superior del bloque de función para añadirlos en su
5:51
cuerpo. Solo coloca el mouse sobre el argumento y los bloques relacionados con él serán revelados.
5:57
Yo arrastraré mi X y mi X1 en mi bloque aritmético. Ahora para correr esta función, puedo
6:04
encontrarla como una función disponible en mi lista de Variables and Functions.
6:09
Solo necesito llenar los dos argumentos con información real y cuando mi script de Block Controller
6:14
corre, correrá la función. Como siempre, te recomiendo que veas el código Lua generado por estos
6:20
bloques para reforzar tu aprendizaje de scripting. Puedes ver la función es creada de la misma
6:26
manera como aprendimos, y que se ejecuta usando los dos que colocamos en la sección de
6:30
argumentos.
6:32
En la siguiente sección hablaremos sobre crean condiciones para que una función como esta pueda
6:36
ser ejecutada. Pero primero, tenemos algunos ejercicios sobre funciones para que realices en tu hoja
6:42
de trabajo de control. Una vez que termines, pasa al siguiente video.