iniciar-programa

define-nueva-instruccion gato(a) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
gato(sucede(a));
si no junto-a-zumbador entonces inicio
gira-izquierda;
avanza;
gira-izquierda;
repetir a veces avanza;
fin;
fin;
fin;
define-nueva-instruccion gt(e) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
gt(sucede(e));
si no junto-a-zumbador entonces inicio
mientras no orientado-al-norte hacer gira-izquierda;
avanza;
repetir e veces deja-zumbador;
fin;
fin;
fin;
define-nueva-instruccion g(s) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
 g(sucede(s));
 si no junto-a-zumbador y frente-libre entonces inicio
 si frente-libre entonces avanza;
 gato(0);
 repetir 2 veces gira-izquierda;
 avanza;
 repetir s veces inicio
  gt(1);
  repetir 2 veces gira-izquierda;
  avanza;
  repetir 3 veces gira-izquierda;
  si frente-libre entonces avanza;
   fin;
  fin;
  fin;
  fin;
  define-nueva-instruccion gto(d) como inicio
  si junto-a-zumbador entonces inicio
  coge-zumbador;
  gto(sucede(d));
  si no junto-a-zumbador entonces inicio
  repetir 2 veces gira-izquierda;
  mientras no junto-a-zumbador y frente-libre hacer avanza;
  repetir 2 veces gira-izquierda;
  si junto-a-zumbador entonces avanza;
  repetir d veces deja-zumbador;
  fin;
  fin;
  fin;
define-nueva-instruccion deja(f) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
deja(sucede(f));
si no junto-a-zumbador entonces inicio
repetir 3 veces gira-izquierda;
avanza;
repetir 3 veces gira-izquierda;
mientras frente-libre hacer avanza;
repetir 2 veces gira-izquierda;
mientras junto-a-zumbador hacer avanza;
repetir f veces deja-zumbador;
fin;
fin;
fin;
    inicia-ejecucion
    MIENTRAS NO orientado-al-norte hacer gira-izquierda;
    si frente-libre entonces avanza;
    repetir 3 veces gira-izquierda;
    si frente-libre entonces avanza;
    repetir 2 veces gira-izquierda;
    g(1);
    repetir 2 veces gira-izquierda;
    mientras frente-libre hacer inicio
    si junto-a-zumbador entonces avanza;
    mientras no junto-a-zumbador y frente-libre hacer avanza;
    gto(1);
    fin;
    repetir 2 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
    si frente-libre entonces avanza;
    repetir 3 veces gira-izquierda;
    mientras frente-libre hacer inicio
    mientras no junto-a-zumbador y frente-libre  hacer avanza;
    deja(1);
    si junto-a-zumbador entonces inicio
    repetir 2 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 3 veces gira-izquierda;
    si frente-libre entonces avanza;
    repetir 3 veces gira-izquierda;
    fin;
    fin;
     si frente-bloqueado entonces inicio
     repetir 2 veces gira-izquierda;
     mientras frente-libre hacer avanza;
     repetir 2 veces gira-izquierda;
     fin;
        apagate;
    termina-ejecucion
finalizar-programa
