# Bloques de procedimientos Los bloques en esta categoría permiten crear y utilizar nuevos comandos, llamados _procedimientos_. Los _procedimientos_ son comandos definidos por quien programa. Permiten describir de forma más precisa qué es lo que hace el programa. Por ejemplo, si que quiere programar el comportamiento de un semáforo, sería útil tener definidos los comandos _Encender luz roja_, _Encender luz amarilla_ y _Encender luz verde_ en lugar de usar los comandos primitivos de Arduino en la Escuela que dicen simplemente "encender led". ## Invocación a un Procedimiento BLOCK:procedures_callnoreturn: Este bloque permite invocar a un procedimiento. Utilizando el ícono del lápiz se puede cambiar el nombre del procedimiento que se está invocando. Para que la invocación funcione correctamente, el procedimiento debe estar definido en algún lugar del programa. Utilizando el ícono del engrane se puede crear un bloque de definición para el procedimiento en cuestión (este ícono sólo aparece en los bloques de invocación de los procedimientos que no estén definidos así que, una vez que el procedimiento esté definido, desaparecerá). ## Definición de un Procedimiento BLOCK:procedures_defnoreturn: Este bloque define el comportamiento de un procedimiento. Utilizando el ícono del lápiz se puede cambiar el nombre del procedimiento que se está definiendo. Cuando se invoque a este procedimiento, se ejecutarán las instrucciones que se encuentren dentro del cuerpo de este bloque. Notar por su forma que es un bloque de definición y no un comando. Esto significa que agregar este bloque al programa sólo define el significado pero no ordena su ejecución. Para que el programa efectivamente ejecute el procedimiento definido por este bloque se debe invocar al procedimiento utilizando un bloque de invocación de procedimiento en alguna parte del código que sí vaya a ejecutarse. Se puede agregar un bloque de invocación utilizando el ícono de la mano.