iniciar-programa
   define-nueva-instruccion gira(n) como inicio
      repetir n veces
         gira-izquierda;
   fin;
   define-nueva-instruccion cuadro(n) como inicio
      gira(2);
      si frente-libre y izquierda-libre entonces inicio
         repetir 2 veces inicio
            avanza;
            gira(1);
         fin;
         repetir 4 veces inicio
            coge-zumbador;
            mientras no-junto-a-zumbador hacer inicio
               repetir n veces
                  deja-zumbador;
               avanza;
            fin;
            gira(1);
         fin;
         cuadro(sucede(n));
      fin;
   fin;
   define-nueva-instruccion auxiliar como inicio
      avanza;
      gira(3);
      avanza;
      gira(1);
   fin;
   define-nueva-instruccion diagonal como inicio
      mientras frente-libre y derecha-libre hacer inicio
         auxiliar;
         deja-zumbador;
      fin;
   fin;
   define-nueva-instruccion centro(n) como inicio
      si no-junto-a-zumbador y frente-libre entonces inicio
         deja-zumbador;
         auxiliar;
         centro(sucede(n));
      fin
      sino inicio
         si frente-libre o junto-a-zumbador entonces inicio
            diagonal;
            gira(1);
            mientras frente-libre hacer
               avanza;
            gira(1);
            repetir n veces
               avanza;
            gira(1);
            mientras no-junto-a-zumbador hacer
               avanza;
            si derecha-libre entonces
               cuadro(2);
         fin
         sino inicio
            gira(2);
            mientras no-junto-a-zumbador hacer
               avanza;
            coge-zumbador;
            gira(2);
            mientras frente-libre hacer
               avanza;
            gira(2);
            mientras frente-libre y derecha-libre hacer inicio
               auxiliar;
               coge-zumbador;
            fin;
            gira(2);
            avanza;
            centro(0);
         fin;
      fin;
   fin;
   inicia-ejecucion
      mientras no-orientado-al-norte hacer
         gira(1);
      deja-zumbador;
      diagonal;
      gira(2);
      mientras frente-libre hacer
         avanza;
      gira(3);
      centro(0);
      apagate;
   termina-ejecucion
finalizar-programa