iniciar-programa
   define-nueva-instruccion gira(n) como inicio
      repetir n veces
         gira-izquierda;
   fin;
   define-nueva-instruccion orienta como inicio
      mientras no-orientado-al-norte hacer
         gira(1);
      avanza;
      gira(3);
      avanza;
      gira(2);
   fin;
   define-nueva-instruccion recoge como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         recoge;
         si frente-libre entonces
            avanza;
      fin
      sino inicio
         gira(1);
         avanza;
         gira(1);
      fin;
   fin;
   define-nueva-instruccion saca como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         saca;
         deja-zumbador;
      fin
      sino inicio
         gira(3);
         avanza;
      fin;
   fin;
   define-nueva-instruccion cola como inicio
      si junto-a-zumbador entonces inicio
          coge-zumbador;
          cola;
          avanza;
          saca;
          gira(2);
          avanza;
          gira(3);
      fin
      sino inicio
         avanza;
         recoge;
         gira(2);
         avanza;
      fin;
   fin;
   define-nueva-instruccion nojusto como inicio
      gira(2);
      mientras no-junto-a-zumbador hacer
         avanza;
      mientras junto-a-zumbador y frente-libre hacer
         avanza;
      gira(2);
      si no-junto-a-zumbador entonces
         avanza;
   fin;
   define-nueva-instruccion sijusto como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         sijusto;
         deja-zumbador;
      fin
      sino inicio
         avanza;
         si no-junto-a-zumbador entonces inicio
           mientras no-junto-a-zumbador y frente-libre hacer
              avanza;
           gira(2);
         fin
         sino inicio
            sijusto;
         fin;
         si junto-a-zumbador entonces
            avanza;
      fin;
   fin;
   define-nueva-instruccion finaliza como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         finaliza;
         deja-zumbador;
      fin
      sino inicio
         si frente-libre entonces
            avanza;
         si no-junto-a-zumbador entonces inicio
            gira(1);
            avanza;
            gira(1);
            mientras junto-a-zumbador hacer
               avanza;
         fin
         sino inicio
            finaliza;
         fin;
         si junto-a-zumbador entonces
            avanza;
      fin;
   fin;
   define-nueva-instruccion termina como inicio
      gira(1);
      avanza;
      si no-junto-a-zumbador entonces inicio
         gira(1);
         mientras no-junto-a-zumbador hacer
            avanza;
      fin
      sino inicio
         gira(3);
         mientras junto-a-zumbador y frente-libre hacer
            avanza;
         gira(2);
         si no-junto-a-zumbador entonces
            avanza;
      fin;
      finaliza;
   fin;
   inicia-ejecucion
      orienta;
      si junto-a-zumbador entonces inicio
         cola;
      fin
      sino inicio
         apagate;
      fin;
      nojusto;
      sijusto;
      termina;
      apagate;
   termina-ejecucion
finalizar-programa