iniciar-programa

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

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


define-nueva-instruccion marcar como
inicio
   si no-junto-a-zumbador entonces
     inicio
        deja-zumbador;
        norte;
        si frente-libre entonces
          inicio
             avanza;
             marcar;
             sur;
             avanza;
          fin;
       sur;
        si frente-libre entonces
          inicio
             avanza;
             marcar;
             norte;
             avanza;
          fin;
      este;
        si frente-libre entonces
          inicio
             avanza;
             marcar;
             oeste;
             avanza;
          fin;
        oeste;
        si frente-libre entonces
          inicio
             avanza;
             marcar;
             este;
             avanza;
          fin;

     fin;
fin;

define-nueva-instruccion camina como
inicio
   si frente-libre entonces
     inicio
       avanza;
     fin sino inicio
       si orientado-al-oeste entonces
         inicio
           norte;
           si frente-libre entonces
             inicio
               avanza;
               este;
             fin;
         fin sino inicio
              norte;
              si frente-libre entonces
                inicio
                   avanza;
                   oeste;
                fin;
         fin;
     fin;

fin;



    inicia-ejecucion
    ir_11;
       marcar;
       mientras no-orientado-al-norte hacer
          inicio
            mientras junto-a-zumbador y no orientado-al-norte hacer camina;
            si no-junto-a-zumbador entonces
              inicio
                marcar;
                ir_11;
                deja-zumbador;
              fin;
          fin;
       ir_11;
       coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
