iniciar-programa
 define-nueva-instruccion norte como inicio mientras no orientado-al-norte hacer gira-izquierda; fin;
 define-nueva-instruccion sur como inicio mientras no orientado-al-sur hacer gira-izquierda; fin;
 define-nueva-instruccion oeste como inicio mientras no orientado-al-oeste hacer gira-izquierda; fin;
 define-nueva-instruccion este como inicio mientras no orientado-al-este hacer gira-izquierda; fin;

  define-nueva-instruccion caven(x) como inicio
     si junto-a-zumbador entonces inicio
        coge-zumbador;
        caven(sucede(x));
     fin
     sino inicio
           este;
           si frente-libre entonces avanza;
           repetir x veces deja-zumbador;
         fin;

 fin;
 define-nueva-instruccion ariba como inicio
     norte;
     si frente-libre entonces avanza;

 fin;
 define-nueva-instruccion bajan(c) como inicio
     si junto-a-zumbador entonces inicio
         coge-zumbador;
         bajan(sucede(c));
     fin
     sino inicio
         sur;
         si frente-libre entonces avanza;
         repetir c veces deja-zumbador;
         norte;
         si frente-libre entonces avanza;
         repetir c veces deja-zumbador;
         sur;
         si frente-libre entonces avanza;
         este;
     fin;
 fin;
 define-nueva-instruccion suben como inicio
     si junto-a-zumbador entonces inicio
         sur;
         si frente-libre entonces avanza;
         si junto-a-zumbador entonces inicio
            coge-zumbador;
            norte;
            si frente-libre entonces avanza;
            si junto-a-zumbador entonces coge-zumbador;
            repetir 2 veces si frente-libre entonces avanza;
            deja-zumbador;
            sur;
            repetir 2 veces si frente-libre entonces avanza;
            suben;
         fin
         sino inicio
           norte;
           si frente-libre entonces avanza;
           este;
           caven(0);
         fin;
     fin
     sino inicio
        caven(0);
     fin;
 fin;

     define-nueva-instruccion coge(n) como inicio
         si junto-a-zumbador entonces inicio
             coge-zumbador;
             coge(sucede(n));
         fin
         sino inicio
             mientras no junto-a-zumbador y frente-libre hacer avanza;
             si junto-a-zumbador entonces inicio
                 repetir n veces deja-zumbador;
                 coge(0);
             fin;
             si frente-bloqueado entonces inicio
                 sur;
                 repetir 2 veces si frente-libre entonces avanza;
                 este;
                 repetir n veces deja-zumbador;
             fin;

         fin;

     fin;
     define-nueva-instruccion cuantospasa(n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            cuantospasa(sucede(n));
        fin
        sino inicio
            repetir n veces deja-zumbador;
            sur;
            si frente-libre entonces avanza;
            si junto-a-zumbador entonces repetir n veces coge-zumbador;
        fin;

        fin;
        define-nueva-instruccion pasajeros(n) como inicio
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               pasajeros(sucede(n));
            fin
            sino
            inicio
                este;
                si frente-libre entonces avanza;
                repetir n veces deja-zumbador;
            fin;

        fin;
    inicia-ejecucion
     si junto-a-zumbador entonces inicio
        mientras frente-libre hacer inicio
           ariba;
           bajan(0);
           suben;
        fin;
        mientras junto-a-zumbador hacer coge-zumbador;
        norte;
        repetir 2 veces si frente-libre entonces avanza;
        oeste;

        mientras no junto-a-zumbador y frente-libre hacer avanza;
         coge(0);
        mientras frente-libre hacer inicio
           norte;
           si frente-libre entonces avanza;
           cuantospasa(0);
           pasajeros(0);
        fin;
     fin;
     este;
     mientras frente-libre hacer avanza;
        apagate;
    termina-ejecucion
finalizar-programa
