iniciar-programa

define-nueva-instruccion norte como inicio
   mientras no orientado-al-norte hacer inicio
    gira-izquierda;
   fin;
  fin;

define-nueva-instruccion sur como inicio
   mientras no orientado-al-sur hacer inicio
      gira-izquierda;
     fin;
  fin;

define-nueva-instruccion este como inicio
   mientras no orientado-al-este hacer inicio
    gira-izquierda;
    fin;
  fin;

define-nueva-instruccion oeste como inicio
   mientras no orientado-al-oeste hacer inicio
      gira-izquierda;
     fin;
  fin;

define-nueva-instruccion ir11 como inicio
  oeste;
    mientras frente-libre hacer inicio
     avanza;
    fin;
    sur;
    mientras frente-libre hacer inicio
     avanza;
    fin;
    este;
 fin;

define-nueva-instruccion recoger(n) como inicio
   si junto-a-zumbador entonces inicio
       coge-zumbador;
        recoger (sucede(n));
     fin sino inicio
        si no si-es-cero  (precede(precede(precede(precede(n)))))entonces inicio
            deja-zumbador;
          fin;
     fin;

  fin;

define-nueva-instruccion checar como inicio
    si orientado-al-este entonces inicio
             norte;
             si frente-libre entonces inicio
             avanza;
             fin sino inicio
                apagate;
               fin;
             gira-izquierda;
           fin sino inicio
             norte;
             si frente-libre entonces inicio
             avanza;
               fin sino inicio
                 apagate;
              fin;
             repetir 3 veces inicio
                gira-izquierda;
              fin;
         fin;
  fin;

define-nueva-instruccion repasar como inicio
   mientras algun-zumbador-en-la-mochila hacer inicio
      si junto-a-zumbador entonces inicio
         recoger(0);
        fin;
       si frente-libre entonces inicio
             avanza;
          fin sino inicio
          checar;
    fin;
  fin;
 fin;

define-nueva-instruccion revisar como inicio
     repetir 4 veces inicio
       si frente-libre entonces inicio
         avanza;
          gira-izquierda;
          gira-izquierda;
             si junto-a-zumbador entonces inicio
                 avanza;
                 deja-zumbador;
                 gira-izquierda;
              fin sino inicio
              avanza;
              gira-izquierda;
              fin;
            fin sino inicio
             repetir 3 veces inicio
               gira-izquierda;
              fin;
         fin;

       fin;
  fin;

define-nueva-instruccion busqueda como inicio

      si junto-a-zumbador entonces inicio
        coge-zumbador;
         si no junto-a-zumbador entonces inicio
           revisar;

           norte;
       si frente-libre entonces inicio
         avanza;
          busqueda;
          sur;
          avanza;
         fin;

         sur;
         si frente-libre entonces inicio
           avanza;
           busqueda;
           norte;
           avanza;
         fin;

          este;
          si frente-libre entonces inicio
           avanza;
           busqueda;
           oeste;
           avanza;
          fin;

          oeste;
          si frente-libre entonces inicio
             avanza;
             busqueda;
             este;
             avanza;
            fin;
            fin sino inicio
           deja-zumbador;
       fin;
    fin;
     fin;



    inicia-ejecucion
    busqueda;
    ir11;
      repasar;
        apagate;
    termina-ejecucion
finalizar-programa
