iniciar-programa
define-nueva-instruccion media-vuelta(n) como inicio
repetir n veces inicio
gira-izquierda;
fin;
fin;


 define-nueva-instruccion atras como inicio
 repetir 2 veces
 gira-izquierda;
 avanza;
 repetir 2 veces
 gira-izquierda;
 fin;


define-nueva-instruccion multiplica (n) como inicio

   si junto-a-zumbador entonces inicio

      coge-zumbador;

      multiplica(n);

      repetir n veces inicio

         deja-zumbador;

      fin;

   fin

   sino inicio

     sal-de-instruccion;
   fin;

fin;



define-nueva-instruccion permutar(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
permutar(sucede(n));
fin
sino
inicio
repetir n veces
deja-zumbador;
si frente-libre entonces inicio
avanza;
fin;
repetir n veces
deja-zumbador;
coge-zumbador;
fin;
fin;
define-nueva-instruccion pasar(n)   como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
pasar(sucede(n));
fin
sino inicio
mientras frente-libre hacer inicio
avanza;
fin;
media-vuelta(2);
repetir n veces
deja-zumbador;
fin;
fin;
define-nueva-instruccion marca(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
marca(sucede(n))
fin
sino inicio
repetir n veces
si frente-libre entonces inicio
avanza;
fin
sino inicio
gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
repetir 100 veces
deja-zumbador;
apagate;
fin;
repetir n veces
deja-zumbador;
fin;
fin;
define-nueva-instruccion cuenta (n) como inicio

   si junto-a-zumbador entonces inicio

      coge-zumbador;

      cuenta( sucede (n) );

   fin

   sino inicio

      avanza;
      si junto-a-zumbador entonces inicio
     multiplica (n);
     fin
     sino inicio
     repetir n veces
     deja-zumbador;
     pasar(0);
     media-vuelta(3);
     pasar(0);
     apagate;
     fin;
     fin;
fin;



define-nueva-instruccion cancelar como inicio
mientras junto-a-zumbador hacer inicio
avanza;
fin;
si no junto-a-zumbador entonces inicio
atras;
media-vuelta(3);
avanza;
gira-izquierda;
avanza;
mientras junto-a-zumbador hacer inicio
cuenta(0);
fin;
fin;
fin;


define-nueva-instruccion programacentral como inicio
               avanza;
               media-vuelta(3);
               pasar(0);
               mientras frente-libre hacer inicio
               avanza;
               fin;
               media-vuelta(3);
               avanza;
               media-vuelta(3);
               pasar(0);
               gira-izquierda;
               avanza;
               media-vuelta(3);
               si junto-a-zumbador entonces inicio
               marca(0);
               fin;
               media-vuelta(2);
               mientras frente-libre hacer inicio
               avanza;
               fin;
              gira-izquierda;
              avanza;
              gira-izquierda;
              marca(0);
              media-vuelta(2);
              mientras frente-libre hacer inicio
              avanza;
              fin;
              media-vuelta(3);
              avanza;
              media-vuelta(3);
              mientras no junto-a-zumbador hacer inicio
              si frente-libre entonces
              avanza;
              fin;
              media-vuelta(2);
              mientras frente-libre hacer inicio
              permutar(0);
              fin;
              gira-izquierda;
              avanza;
              gira-izquierda;
              mientras no-junto-a-zumbador hacer inicio
              si frente-libre entonces
              avanza;
              fin;
              media-vuelta(2);
              mientras frente-libre hacer inicio
              permutar(0);
              fin;
              media-vuelta(3);

avanza;
media-vuelta(3);
avanza;
              cancelar;
              fin;










    inicia-ejecucion
    programacentral;
        apagate;
    termina-ejecucion
finalizar-programa
