iniciar-programa
define-nueva-instruccion gira(l) como
repetir l veces gira-izquierda;
define-nueva-instruccion ordena(n) como inicio
    si junto-a-zumbador y orientado-al-oeste entonces inicio
       coge-zumbador;
       si frente-bloqueado entonces gira(3);
       avanza;
       si no junto-a-zumbador y orientado-al-oeste entonces
       mientras no junto-a-zumbador y frente-libre hacer avanza;
       ordena(sucede(n));
    fin sino inicio
        gira(3);
        si no junto-a-zumbador y orientado-al-norte entonces inicio
            avanza;
            gira(3);
        fin;
        repetir n veces inicio
            deja-zumbador;
            avanza;
        fin;
        mientras junto-a-zumbador hacer avanza;
        gira(3);
        avanza;
        gira(3);
    fin;
fin;
define-nueva-instruccion papo(k) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
papo(sucede(k));
fin sino inicio
repetir k veces deja-zumbador;
avanza;
repetir k veces deja-zumbador;
gira(2);
avanza;
gira(3);
si frente-libre entonces inicio
avanza;
gira(3);
fin;
fin;
fin;
define-nueva-instruccion kaka(h) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
kaka(sucede(h));
fin sino inicio
repetir h veces deja-zumbador;
gira(3);
avanza;
gira(1);
si frente-bloqueado y orientado-al-oeste entonces gira(3);
si frente-libre y orientado-al-oeste entonces inicio
avanza;
repetir h veces coge-zumbador;
gira(1);
avanza;
gira(3);
fin;
fin;
fin;
define-nueva-instruccion taza(z) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
taza(sucede(z));
fin sino inicio
mientras frente-libre hacer avanza;
gira(1);
mientras frente-libre hacer avanza;
repetir z veces deja-zumbador;
fin;
fin;
    inicia-ejecucion
    mientras no orientado-al-este hacer gira(1);
    mientras junto-a-zumbador hacer avanza;
    si no-junto-a-zumbador entonces inicio
    gira(2);
    avanza;
    gira(2);
    fin;
    gira(2);
     mientras junto-a-zumbador hacer inicio
    ordena(0);
    mientras no junto-a-zumbador y frente-libre hacer avanza;
    fin;
    gira(3);
    avanza;
    gira(3);
    mientras junto-a-zumbador y frente-libre hacer avanza;
    si no-junto-a-zumbador entonces inicio
    gira(2);
    avanza;
    gira(2);
    fin;
    gira(2);
    si frente-libre entonces inicio
    avanza;
    gira(3);
    fin;
     Mientras orientado-al-norte hacer papo(0);
    gira(2);
    mientras junto-a-zumbador y frente-libre hacer avanza;
    si no junto-a-zumbador entonces inicio
    gira(2);
    avanza;
    gira(2);
    fin;
    gira(2);
    mientras orientado-al-oeste hacer kaka(0);
    gira(3);
   mientras junto-a-zumbador y frente-libre hacer avanza;
   si no-junto-a-zumbador entonces inicio
   gira(2);
   avanza;
   gira(2);
   fin;
   gira(2);
   mientras junto-a-zumbador hacer inicio
    ordena(0);
    mientras no junto-a-zumbador y frente-libre hacer avanza;
    fin;
    gira(3);
    avanza;
    gira(3);
    mientras junto-a-zumbador y frente-libre hacer avanza;
    si no-junto-a-zumbador entonces inicio
    gira(2);
    avanza;
    gira(2);
    fin;
    gira(2);
    si junto-a-zumbador entonces taza(0);
    apagate;
    termina-ejecucion
finalizar-programa
