 iniciar-programa
define-nueva-instruccion derecha como inicio
    repetir 3 veces gira-izquierda;
fin;
define-nueva-instruccion vuelta como inicio
    mientras derecha-libre hacer inicio
        derecha;
        avanza;
        derecha;
        avanza;
    fin;
fin;
define-nueva-instruccion zumbador como inicio
   mientras junto-a-zumbador hacer coge-zumbador;
fin;
define-nueva-instruccion sube como inicio
    si frente-bloqueado entonces inicio
        gira-izquierda;
        mientras derecha-bloqueada hacer inicio
            avanza;
        fin;
        si derecha-libre entonces vuelta;
    fin;
fin;
define-nueva-instruccion baja como inicio
       mientras derecha-bloqueada y orientado-al-sur y frente-libre hacer inicio
           avanza;
           si frente-bloqueado entonces gira-izquierda;
       fin;
       si junto-a-zumbador entonces inicio
       mientras junto-a-zumbador hacer
           avanza;

       fin;
       si no-junto-a-zumbador entonces
         mientras algun-zumbador-en-la-mochila hacer
          deja-zumbador;
fin;
define-nueva-instruccion orienta como inicio
    mientras no orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer  avanza;
    si frente-bloqueado entonces derecha;

fin;
define-nueva-instruccion sube2 como inicio
    orienta;
    mientras izquierda-bloqueada hacer inicio
        avanza;
    fin;
    si izquierda-libre entonces inicio
        gira-izquierda;
        avanza;
        gira-izquierda;
        avanza;
     fin;
     mientras izquierda-bloqueada y orientado-al-sur hacer inicio
     avanza;
    si frente-bloqueado entonces inicio
        derecha;

        mientras frente-libre y orientado-al-oeste hacer inicio avanza;
            mientras frente-bloqueado hacer repetir 2 veces gira-izquierda;
        fin;
        fin;
    fin;
fin;
    inicia-ejecucion
    derecha;
    avanza;
    mientras junto-a-zumbador hacer inicio
        zumbador;
         mientras frente-libre y orientado-al-este hacer inicio
             avanza;
         fin;
             si frente-bloqueado entonces inicio sube;
         fin;
         mientras orientado-al-sur y derecha-bloqueada hacer inicio
              baja;
         si orientado-al-este y ningun-zumbador-en-la-mochila entonces inicio
          sube2;
          mientras frente-libre y no junto-a-zumbador hacer avanza;
         fin;
    fin;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa

