iniciar-programa
define-nueva-instruccion gira(k) como repetir k veces gira-izquierda;
                 define-nueva-instruccion vaca(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
vaca(sucede(n));
fin sino inicio
avanza;
deja-zumbador;
mientras frente-libre hacer inicio
avanza;
repetir precede(n) veces avanza;
deja-zumbador;
mientras derecha-bloqueada hacer inicio
repetir n veces avanza;
si junto-a-zumbador entonces inicio
si frente-libre entonces avanza;
fin;
si no-junto-a-zumbador y frente-libre entonces deja-zumbador;
fin;
si orientado-al-oeste y derecha-libre y frente-libre entonces avanza;
si derecha-libre y frente-libre entonces gira(3);
fin;
fin;
fin;
          define-nueva-instruccion coca(n) como inicio
 si frente-libre entonces inicio
 si junto-a-zumbador y frente-libre entonces inicio
 si frente-libre entonces avanza;
 si derecha-libre y no-orientado-al-oeste entonces gira(3);
 coca(1);
 fin;
 si no-junto-a-zumbador y frente-libre entonces inicio
 avanza;
 si derecha-libre y no-orientado-al-oeste entonces
 gira(3);
 coca(2);
  fin;
         fin sino inicio
    gira(1);
  avanza;
  gira(1);
  repetir 2 veces avanza;
  gira(3);
 fin;
 si si-es-cero(precede(n)) entonces inicio
 deja-zumbador;
 fin;
 si si-es-cero(precede(precede(n))) entonces inicio
 gira(1);
 avanza;
 deja-zumbador;
 gira(2);
 avanza;
 gira(1);
 fin;
     fin;
    inicia-ejecucion
mientras no-orientado-al-este hacer gira(1);
avanza;
gira(1);
vaca(0);
gira(2);
avanza;
gira(1);
    coca(0);
    coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
