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
