iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;

define-nueva-instruccion medio como inicio
si frente-libre entonces inicio
avanza;
avanza;
medio;
avanza;
fin
sino gira(2);
fin;


define-nueva-instruccion avanzae como inicio
si frente-libre entonces avanza
sino inicio
gira(2);
mientras frente-libre hacer avanza;
gira(2);
fin;
fin;


define-nueva-instruccion cuadro(n) como inicio
repetir n veces deja-zumbador;
avanzae;
gira(3);
avanzae;
gira(1);
si no junto-a-zumbador entonces inicio
cuadro(sucede(n));
fin
sino inicio
gira(1);
avanzae;
gira(1);
avanzae;
avanzae;
gira(2);
si junto-a-zumbador entonces apagate;
cuadro(sucede(n));
fin;
fin;

define-nueva-instruccion impar como inicio
gira(3);
medio;  
gira(3);
cuadro(1);
fin;

define-nueva-instruccion determinar como inicio
si frente-libre entonces inicio
avanza;
si frente-libre entonces avanza;
determinar;
fin
sino impar;
fin;
    inicia-ejecucion
    mientras no orientado-al-norte hacer gira(1);
    determinar;
        apagate;
    termina-ejecucion
finalizar-programa
