iniciar-programa

define-nueva-instruccion comparar(d) como inicio
 si(junto-a-zumbador)entonces inicio
   coge-zumbador;
   comparar(sucede(d));
 fin
 sino inicio
   avanza;
   repetir d veces inicio
     si(junto-a-zumbador)entonces inicio
       coge-zumbador;
       fin;
   fin;

   repetir d veces deja-zumbador;

 fin;
fin;

define-nueva-instruccion tomar como inicio
  mientras(no-orientado-al-este)hacer gira-izquierda;
mientras(no-junto-a-zumbador)hacer avanza;
repetir 50 veces coge-zumbador;
mientras(no-orientado-al-oeste)hacer gira-izquierda;
mientras(frente-libre)hacer avanza;
gira-izquierda; gira-izquierda; gira-izquierda;
fin;

define-nueva-instruccion uno(x) como inicio
 si(izquierda-bloqueada)entonces inicio
   avanza;
   uno(sucede(x));
  fin
  sino inicio
    mientras(frente-libre)hacer avanza;
    gira-izquierda;
    mientras(frente-libre)hacer avanza;
    gira-izquierda; gira-izquierda;
    avanza;
    repetir x veces deja-zumbador;
    gira-izquierda; gira-izquierda;
    avanza;
    tomar;
    avanza;
    repetir x veces deja-zumbador;
  fin;
fin;


define-nueva-instruccion segundo(m) como inicio
  si(izquierda-bloqueada)entonces inicio
    avanza;
    segundo(sucede(m)) ;
    fin
   sino inicio
      mientras(frente-libre)hacer avanza;
      gira-izquierda;
      mientras(frente-libre)hacer avanza;
      repetir m veces deja-zumbador; gira-izquierda; avanza;
      tomar;
      repetir m veces deja-zumbador; gira-izquierda; gira-izquierda;
      gira-izquierda; avanza;
      tomar;
      repetir m veces deja-zumbador;
   fin;
fin;

    inicia-ejecucion


tomar;
avanza; avanza;
mientras(no-orientado-al-este)hacer gira-izquierda;
mientras(frente-libre)hacer avanza;
gira-izquierda; gira-izquierdA;
uno(0);
repetir 4 veces avanza;
mientras(no-orientado-al-este)hacer gira-izquierda;
mientras(frente-libre)hacer avanza;
gira-izquierda; gira-izquierdA;
segundo(0);
avanza; gira-izquierda; gira-izquierda;
comparar(0);

        apagate;
    termina-ejecucion
finalizar-programa
