SUBRUTINAS


A veces es necesario el mismo fragmento de código en múltiples lugares de tu programa. En este caso, puedes poner el fragmento de código en una subrutina y darle un nombre. Ahora puedes ejecutar este fragmento de código, simplemente llamando a su nombre. Veamos un ejemplo.
 

En este programa hemos definido una subrutina que hace que el robot gire alrededor de su centro. La principal tarea llama a la subrutina tres veces. Tenga en cuenta que nosotros llamamos a la subrutina escribiendo su nombre y pasar un argumento numérico  por escrito dentro de paréntesis. Si una subrutina no acepta los argumentos, sólo tiene que no añadir nada dentro de ellos.

El principal beneficio de las subrutinas es que sólo se almacenan una vez en el NXT y esto ahorra memoria. Pero cuando las subrutinas son cortas, puede ser mejor usar las funciones "inline" en su lugar. Éstas no se almacenan por separado, pero se copian en cada lugar que se utilizan. Esto consume más memoria pero no hay límite en el número de funciones "inline". Ellas pueden ser declaradas como sigue:

inline int Name( Args ) {
//body;
return x*y;
}
 

La Definición y llamada de las funciones "inline" es exactamente de la misma forma que con las subrutinas. Así que el ejemplo anterior, utilizando las funciones "inline", es el siguiente:

En el ejemplo anterior, podemos hacer que el tiempo a su vez sea un argumento de la función, como en los ejemplos siguientes:


Hay que tener en cuenta que en el paréntesis después del nombre de la función en línea, se especifica el argumento (s) de la función. En este caso indican que el argumento es un entero (hay algunas otras opciones) y que su nombre es turntime.
Cuando hay más argumentos, debes separarlos con comas. Date cuenta que en NXC, sub es lo mismo que void.