iniciar-programa
define-nueva-instruccion gira(x) como
inicio
   repetir x veces gira-izquierda;
fin;

define-nueva-instruccion adelante como
inicio
   si frente-libre entonces
     inicio
        avanza;
     fin
   sino
     inicio
        si derecha-libre y izquierda-libre entonces
          inicio
             si orientado-al-este entonces
               inicio
                  gira(1);
                  avanza;
                  gira(1);
               fin
             sino
               inicio
                  gira(3);
                  avanza;
                  gira(3);
               fin;
          fin
        sino
      inicio
         mientras no-orientado-al-sur hacer gira-izquierda;
      fin;
     fin;
fin;

define-nueva-instruccion llega como
inicio
   avanza;
   avanza;
   gira(3);
fin;

define-nueva-instruccion regresa como
inicio
   gira(2);
   mientras frente-libre hacer avanza;
   gira(3);
fin;

define-nueva-instruccion proceso como
inicio
   si no orientado-al-sur entonces
     inicio
        si junto-a-zumbador entonces
          inicio
             coge-zumbador;
             adelante;
             proceso;
             deja-zumbador;
          fin
        sino
          inicio
             adelante;
             proceso;
          fin;
     fin
   sino
     inicio
        gira(3);
        mientras frente-libre hacer avanza;
        gira(1);
        mientras frente-libre hacer avanza;
        gira(1);
        mientras junto-a-zumbador hacer avanza;

     fin;
fin;


define-nueva-instruccion comienza como
inicio
   repetir 10 veces
     inicio
        llega;
        proceso;
        regresa;
     fin;
fin;
    inicia-ejecucion
    comienza;
        apagate;
    termina-ejecucion
finalizar-programa
