iniciar-programa

define-nueva-instruccion vuelta como
inicio
gira-izquierda;
gira-izquierda;
fin;

define-nueva-instruccion recoge-dos como
inicio
mientras orientado-al-norte hacer
inicio
mientras junto-a-zumbador hacer
coge-zumbador;
mientras no-orientado-al-sur hacer
gira-izquierda;
mientras frente-libre hacer
avanza;
mientras no-orientado-al-este hacer
gira-izquierda;
si frente-libre entonces
    inicio
    avanza;
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    mientras junto-a-zumbador hacer
    avanza;
    vuelta;
    avanza;
    vuelta;
    fin;
    fin;
mientras no-orientado-al-oeste hacer
gira-izquierda;
mientras JUNTO-A-ZUMBADOR hacer
avanza;
mientras algun-zumbador-en-la-mochila hacer
deja-zumbador;
 fin;

define-nueva-instruccion recoge(n) como
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
recoge(sucede(n));
fin
sino
inicio
repetir n veces
    inicio
    si algun-zumbador-en-la-mochila entonces
    inicio
    deja-zumbador;
    fin
    sino
    inicio
    si junto-a-zumbador entonces
    coge-zumbador;
    avanza;
    deja-zumbador;
    vuelta;
    avanza;
    vuelta;
    fin;
     si algun-zumbador-en-la-mochila entonces
     inicio
    deja-zumbador;
     fin
      sino
    inicio
    si junto-a-zumbador entonces
    coge-zumbador;
    avanza;
    deja-zumbador;
    vuelta;
    avanza;
    vuelta;
    fin;

   fin;

fin;


fin;

    inicia-ejecucion
    mientras no-junto-a-zumbador y frente-libre hacer
    avanza;
    mientras no-orientado-al-norte hacer
    gira-izquierda;
        mientras ORIENTADO-AL-NORTE hacer
        inicio
    mientras junto-a-zumbador  y frente-libre hacer
    avanza;
    si no-junto-a-zumbador entonces
    inicio
    gira-izquierda;
    gira-izquierda;
    avanza;
    gira-izquierda;
    gira-izquierda;
    fin;
    recoge(0);
    avanza;
    si junto-a-zumbador entonces
    inicio
    recoge-dos;
    fin
    sino
    inicio
    mientras no-orientado-al-sur hacer
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mientras no-orientado-al-este hacer
    gira-izquierda;
    si frente-libre entonces
        inicio
        avanza;
        mientras no-orientado-al-norte hacer
        gira-izquierda;
        fin;

    fin;
    fin;
    si orientado-al-este entonces
        inicio
        mientras no-orientado-al-norte hacer
        gira-izquierda;
        mientras derecha-bloqueada hacer
        avanza;
        mientras no-orientado-al-este hacer
        gira-izquierda;
        si frente-libre entonces
        avanza;
        mientras algun-zumbador-en-la-mochila hacer
        deja-zumbador;

        fin;


        apagate;
    termina-ejecucion
finalizar-programa
