iniciar-programa
define-nueva-instruccion  cuenta(n) como inicio
si frente-libre entonces inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
  si junto-a-zumbador y frente-libre entonces avanza;
  cuenta(0)
  fin
  sino inicio
  si no-junto-a-zumbador entonces inicio
  avanza;
  cuenta(1);

  FIN;

fin;
        fin;
         SI SI-ES-CERO (PRECEDE(N)) ENTONCES INICIO
   mientras no orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;

   mientras no-orientado-al-norte hacer gira-izquierda;
avanza;
        SI ALGUN-ZUMBADOR-EN-LA-MOCHILA ENTONCES deja-zumbador;
  fin;


        fin;
        DEFINE-NUEVA-INSTRUCCION ACOMODA(N)  COMO INICIO

        SI JUNTO-A-ZUMBADOR  ENTONCES inicio
        COGE-ZUMBADOR;
        ACOMODA(SUCEDE(N));
        FIN
        SINO INICIO
        MIENTRAS NO-JUNTO-A-ZUMBADOR  Y FRENTE-LIBRE HACER AVANZA;
        SI JUNTO-A-ZUMBADOR  entonces ACOMODA(0);
        MIENTRAS NO ORIENTADO-AL-ESTE HACER GIRA-IZQUIERDA;
        si frente-libre  entonces avanza;
        SI NO JUNTO-A-ZUMBADOR entonces INICIO
        REPETIR N VECES INICIO
         SI ALGUN-ZUMBADOR-EN-LA-MOCHILA ENTONCES deja-zumbador;
         FIN;
FIN;
         FIN;
         fin;
 DEFINE-NUEVA-INSTRUCCION junta  COMO INICIO
  SI JUNTO-A-ZUMBADOR  ENTONCES inicio
        COGE-ZUMBADOr;
            junta;
 mientras no orientado-al-SUR hacer gira-izquierda;
mientras frente-libre hacer avanza;
mientras no orientado-al-Oeste hacer gira-izquierda;
mientras frente-libre hacer AVANZA;
deja-zumbador;
     fin;
     fin;

         define-nueva-instruccion a como inicio

           si frente-libre entonces  INICIO
           acomoda(0);

    mientras no orientado-al-oeste hacer gira-izquierda;

cuenta(0);
si frente-libre entonces  inicio
mientras no-orientado-al-norte hacer gira-izquierda;
avanza;
mientras no orientado-al-SUR hacer gira-izquierda;
mientras frente-libre hacer avanza;
mientras no orientado-al-Oeste hacer gira-izquierda;
AVANZA;
MIENTRAS FRENTE-LIBRE Y NO JUNTO-A-ZUMBADOR HACER AVANZA;
 a;
 fin
  sino inicio
    mientras no orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;

mientras no orientado-al-Oeste hacer gira-izquierda;
AVANZA;
MIENTRAS FRENTE-LIBRE Y NO JUNTO-A-ZUMBADOR HACER AVANZA;
si junto-a-zumbador entonces inicio
cuenta(0);
mientras no orientado-al-SUR hacer gira-izquierda;
mientras frente-libre hacer avanza;
mientras no orientado-al-Oeste hacer gira-izquierda;
si frente-libre entonces AVANZA;
MIENTRAS FRENTE-LIBRE Y NO JUNTO-A-ZUMBADOR HACER AVANZA;
    a;
    fin;
    fin;
    fin
     sino inicio
    mientras no orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;

mientras no orientado-al-Oeste hacer gira-izquierda;
AVANZA;
MIENTRAS FRENTE-LIBRE Y NO JUNTO-A-ZUMBADOR HACER AVANZA;
si junto-a-zumbador entonces inicio
cuenta(0);
mientras no orientado-al-SUR hacer gira-izquierda;
mientras frente-libre hacer avanza;
mientras no orientado-al-Oeste hacer gira-izquierda;
si frente-libre entonces AVANZA;
MIENTRAS FRENTE-LIBRE Y NO JUNTO-A-ZUMBADOR HACER AVANZA;
    a;
     fin;

    fin;


        fin;









    inicia-ejecucion
    mientras frente-libre y junto-a-zumbador hacer avanza;
    mientras no orientado-al-oeste hacer gira-izquierda;
    si frente-libre entonces avanza;

          a;


   mientras no orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-norte hacer gira-izquierda;
avanza;
   junta;

        apagate;
    termina-ejecucion
finalizar-programa
