iniciar-programa
   define-nueva-instruccion gira(n) como
   inicio
     repetir n veces
        gira-izquierda;
   fin;
   define-nueva-instruccion recoge como
   inicio
      repetir 4 veces
      inicio
           si frente-libre entonces
            inicio
               avanza;
               si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
                  si junto-a-zumbador entonces
                  inicio
                     coge-zumbador;
                     recoge;
                  fin
                  sino
                     deja-zumbador;
               fin;
               gira(2);
               avanza;
               gira(2);
            fin;
            gira-izquierda;
      fin;
   fin;
   define-nueva-instruccion dfs como
   inicio
      deja-zumbador;
      deja-zumbador;
      si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces
         coge-zumbador
     sino
     repetir 4 veces
      inicio
           si frente-libre entonces
            inicio
               avanza;
               si no-junto-a-zumbador entonces
                  dfs;
               gira(2);
               avanza;
               gira(2);
            fin;
            gira-izquierda;
      fin;
   fin;
    inicia-ejecucion
       si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces
       inicio
          gira-izquierda;
          si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces
             apagate;
        fin;
       dfs;
       mientras junto-a-zumbador hacer
          coge-zumbador;
       recoge;
       repetir 4 veces
       inicio
          si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces
             deja-zumbador;
          gira-izquierda;
       fin;
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
             mientras junto-a-zumbador hacer
                coge-zumbador;
          fin
          sino
            deja-zumbador;
       fin;
       apagate;
    termina-ejecucion
finalizar-programa
