Una función es un bloque de código que tiene una cabecera y un cuerpo. En el lenguaje C estándar, la definición y declaración de
la función se hacen en el fichero de cabecera (*.h). Sin embargo el IDE del Arduino nos hace la
vida más sencilla, y si necesitamos declarar una función, podemos hacerlo
dentro del mismo código del programa principal (sketch).
Por ejemplo, si queremos crear una función que sume dos
números enteros y nos devuelva el resultado, la llamada a la función podría ser
algo así como
miSuma (número1, número2);
y nos devolvería el siguiente = número1+número 2
Pero para que lo anterior lo entienda el IDE de Arduino como
la declaración de una función, hace falta escribir el código siguiendo una serie de reglas
concretas:
REGLA 1.- Hay que definir cada tipo de elemento que
vaya a usar o generar, para que pueda tratarlo convenientemente. No es lo
mismo que te digan “vierte un litro de agua y en un litro de aceite” que nos
digan “coge una tonelada de arena y un metro cúbico de cemento”. Para lo
primero nos hará falta “reservar” un par de botellas de nuestra despensa y para
los segundo tendremos que “reservar” alguna cuba industrial de las que se usan
en las construcciones. Pues bien, nuestro Arduino, como nosotros tiene recursos
limitados, y por ello necesita anticipar qué uso de su memoria tendrá que
dedicar a cada cosa, y reservar ese espacio para que no se use en ningún otro
proceso.
REGLA 2.- Hay que ponerle
un nombre único a la función, para que podamos usarla cada vez que
queramos. Algo representativo de lo que va a hacer, por ejemplo,
encederLaBombilla, subirLaTemperatura, etc..
REGLA 3.-En caso de que la función vaya a devolver un valor, por
ejemplo en el ejemplo anterior donde teníamos una función llamada miSuma, hay que ponerle un nombre a la variable
donde se va almacenar el resultado, sin olvidar que le tenemos que aplicar
la primera regla también, y tenemos que definir el tipo de resultado que va a
suministrar (un texto, un valor numérico, etc..)
REGLA 4.- Hay que definir
exactamente lo que va a hacer la función, en nuestro ejemplo de la función
miSuma, pues sería algo al estilo
resultado=
número1+número2
REGLA 5.- Hay que definir
si la función devolverá algún resultado o por el contrario consiste solo en
la ejecución se una serie de instrucciones concretas. En nuestro caso usaremos
que queremos que nos devuelva el resultado de la ecuación, sería algo como
return resultado
REGLA 6.- No hay que
olvidarse de las llaves. Para que el IDE de Arduino sepa de qué se compone
nuestra función, hay que usar un par de llaves, una tras definir el nombre de
la función y otra, cerrando, tras la última instrucción. A fin de cuentas es
como un bocadillo, todos son diferentes, los tenemos de tortilla, de chorizo, …
pero siempre están contenidos entre dos trozos de pan.
Pues bien ahora que sabemos las seis reglas necesarias para
definir una función, veamos como quedaría nuestra función miSuma.
int miSuma (int número1, int número 2)
{
int resultado;
resultado = número1 + número 2;
return resultado;
}
Como vemos :
- lo primero que hemos dicho es definir que tipo de función vamos a crear. En nuestro caso le hemos dicho que la función miSuma será un número entero (integer en inglés, int para el IDE), y tras ello (aplicando la sexta regla) abrimos una llave para especificar que lo que sigue será lo que definirá la función,
- lo segundo que hemos hecho es ponerle un nombre único a la función: miSuma. Por convección se comienza en minúscula y se concatena las palabras empezándolas por mayúsculas para facilitar su lectura. Y además le hemos dicho que para ejecutar esta función requerirá que le pasen dos cosas, a estas cosas, se le llaman Argumentos, y como aplicamos la primera regla, definimos qué clase de argumentos serán, texto, número, o lo que sea, en nuestro caso también serán, cada uno de ellos, enteros (integer en inglés, int para el IDE), así mismo (aplicando la tercera regla) a cada objeto que se le pase, además de definir qué tipo de argumentos serán, tendremos que ponerle un nombre para luego poder hacer uso de él cuando haga falta,
- lo tercero que hacemos es definir el nombre de la variable donde guardaremos el resultado de la función, y aplicando la primera regla, definimos el tipo de resultado que será, en nuestro caso (integer en inglés, int para el IDE),
- lo cuarto que hacemos es definir concretamente qué es lo que va a hacer nuestra función,
- lo quinto, definir que queremos que una vez calculada la fórmula, queremos que nos devuelva el resultado, eso lo hacemos usando la palabra reservada return, y finalmente
- lo sexto, cerramos la función con una llave.
Notad que:
1.- Existen una serie de palabras reservadas que no se pueden usar para ningún otro propósito que el definido para ellas en el IDE. En nuestro ejemplo están marcadas en naranja, y son int (para referirnos a números enteros) y return (para ordenar a la función a que devuelva el resultado cuando termine de ejecutarse).
2.- Que después de cada sentencia acabamos con ";", para indicarle al IDE que hemos llegado al fin de una sentencia. A excepción de la declaración inicial de la función que no termina en ";" sino abriendo una llave "{".
3.- Que hemos formateado el texto, incluyendo una sangría a la derecha, con objeto de facilitar la lectura, aunque no es requisito del IDE, que se rige solo por las llaves y los ";"
No hay comentarios:
Publicar un comentario