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 oeste como inicio
      mientras no-orientado-al-oeste 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 esqsupder como inicio
     norte;
     mientras frente-libre hacer inicio
        avanza;
     fin;
     este;
     mientras frente-libre hacer inicio
        avanza;
     fin;
  fin;

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

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

  define-nueva-instruccion recoge1 como inicio
     si no-orientado-al-oeste entonces inicio
        si junto-a-zumbador entonces inicio
           coge-zumbador;
           si no-junto-a-zumbador entonces inicio
              camina;
              recoge1;
              deja-zumbador;  (*deja 1 zumbador por cada monton*)
           fin sino inicio   (*monton de 1 zumbador que recogio*)
              camina;         (*aqui hay 2 zumbadores*)
              recoge1;
           fin;
        fin sino inicio
           camina;            (*aqui hay 0 zumbadores*)
           recoge1;
        fin;
     fin sino inicio
        esqsupder;
        mientras junto-a-zumbador hacer inicio
          coge-zumbador;
        fin;
     fin;
  fin;

    inicia-ejecucion
        esqsupder;
        marca1;
        esqsupder;
        sur;
        recoge1;
        apagate;
    termina-ejecucion
finalizar-programa
