Inicio » Programacion » Facilino » Facilino Tutorial » [:es]Funciones y Procedimientos en Facilino[:en]Functions and Procedures in Facilino[:]

[:es]Funciones y Procedimientos en Facilino[:en]Functions and Procedures in Facilino[:]

[:es]En esta entrada se explica el uso de funciones y procedimientos en Facilino.

Las instrucciones de funciones y procedimientos podemos encontrarlas en la categoría «Funciones» dentro de la lista de categorías de Facilino.

Las funciones y procedimientos nos permitirán encapsular un conjunto de instrucciones que posteriormente podréis llamar desde cualquier lugar en vuestro programa. Existen dos tipo de funciones, las que no devuelven ningún valor de salida y las que devuelven un valor de salida. Las primeras, también conocidas como procedimientos, se utilizan para llamar a un conjunto de instrucciones, pero no se espera que como resultado de esa llamada obtener ningún valor a su salida y volverán al punto en el que se hizo la llamada. Por otro lado, las funciones, que devuelven algún valor a su salida retornarán obligatoriamente dicho valor antes de volver al punto de ejecución donde se hizo la llamada.

Además, las funciones pueden tener múltiples argumentos de entrada, que permitirán modificar el comportamiento de la función según su valor. Típicamente podemos aceptar como argumentos de entrada los valores que necesitamos para realizar algún cálculo y que por tanto afectará al valor devuelto en la salida. También podemos incluir en los argumentos de entrada expresiones, números o cualquier valor que podría condicionarnos la ejecución de las instrucciones que están encapsuladas por la función. Los argumentos de entrada pueden agregarse a la función simplemente desplegando el menú desplegable o «mutador» del icono azul en la esquina superior izquierda y arrastrando tantas variables como se deseen (el nombre de las variables debe ser único para cada función).

A cada función y/o procedimiento debemos asignarle un nombre que será único, para que no entre en conflicto con el resto de nombre o funciones existentes en el programa.

Tanto en los argumentos de entrada como el valor devuelto de salida se debe especificar el tipo de variable:

  • Entero: Número entero de 16bits, corresponde al tipo «int» en Arduino.
  • Entero Largo: Número entero de 32bits, corresponde al tipo «long int» en Arduino.
  • Byte: Número entero de 8bits, corresponde al tipo «byte» en Arduino.
  • Binaria: Número binario, corresponde al tipo «bool» en Arduino.
  • Decimal:Número real, corresponde al tipo «float» en Arduino.
  • Texto: Cadena de texto, corresponde al tipo «String» en Arduino.

La llamada de las funciones o procedimientos se puede hacer con los bloques correspondientes que se crearán en la barra de categorías en «Funciones» y que podremos seleccionar la función a llamar simplemente desplegando la lista y seleccionando la función con el nombre que deseemos llamar. Los argumentos de entrada se modificarán en caso de que se cambie el nombre de la función, con lo que todo lo que tengamos conectado a los argumentos de entrada se desconectará. Para el caso de las dos funciones creadas anteriormente, se muestran los bloques que deberíais tener. Como podéis observar, para el caso de «func1» la llamada no devuelve ningún valor de salida y por tanto lo que se espera es que se «enganche» con los conectores superior e inferior de la instrucción. Por otro lado, «func2» devuelve un valor de salida, con lo que este valor deberá «engancharse» a una entrada de otra instrucción de tipos compatibles.

Adicionalmente, las funciones que devuelven un valor disponen de un par de instrucciones más que podrían utilizarse dentro de la función que nos permite devolver el valor en cualquier parte de la función sin necesidad de tener que alcanzar el final de la misma. Concretamente, una instrucción devuelve un valor si se cumple una condición, mientras que la otra instrucción siempre devolvería un valor si llegara a ejecutarse.

 

 [:en]In this post, we explain the use of functions and procedures in Facilino.

We can find the set of instructions related with functions and procedures within the «Functions» category in Facilino.

Functions and procedures will allow us to stack a set of instructions that you will be able to call later on at any place in your program. There are two types of functions, the ones with out return value and the ones that return a value. The first type, also known as procedures, are typically used to call a set of instructions, but they are not expected to return any value and will return to the execution point they where called after finishing. On the other side, functions are the ones that return a value, such that can be used when returning from the function after call in it.

In addition to this, functions (and procedures) can have multiple input arguments that will allow you to change the function behaviour based on its value. Typically, we can accept input arguments to do some computations that will be return as the return argument. We can also include Strings, numbers or any value that might affect the way we want the function to be executed. Input arguments can be added by simply clicking on the «mutator» icon (blue icon on top-left corner) and dragging as many variables as desired.

We must set a unique function name to avoid conflicts with other procedures or variables in the program.

Either, input arguments or the returned value can have different types:

  • Integer: 16 bits integer number, corresponds to «int» type in Arduino.
  • Long Integer: 32bits, integer number, corresponds to «long int» type in Arduino.
  • Byte: 8bits integer number, corresponds to «byte» type in Arduino.
  • Binary: Binario number, corresponds to «bool» type in Arduino.
  • Float: Real number, corresponds to «float» type in Arduino.
  • Text: Text string, corresponds to «String» type in Arduino.

In order to call a function or a procedure, we need to use the block instructions that will be created within the «Functions» category in Facilino. With the dropdown list we can select the function we are interested in. The input arguments of each call will be modified based on the selected function name, so if you change it, all block instructions connected to those inputs, will be disconnected. Based on the previous example, we show the two block instructions that your should have. As you can see, «func1» does not return any value and top-bottom connectors can be used to stack it anywhere. On the other hand, «func2» returns a value, which means that its output must be connected to any other input of compatible types.

In addition to this, functions that return a value have a pair of instructions that might be of interest too. They are used to return a value without the need of reaching the end of the function. In particular, on of the block instructions returns a value conditionally, meaning that only returns the value if a condition is met and the other always returns a value in this block instruction is executed.

 [:]