iniciar-programa
define-nueva-instruccion g(n) como
inicio
repetir n veces
inicio
gira-izquierda;
fin;
fin;
 define-nueva-instruccion kaka(n) como
 inicio
   si junto-a-zumbador entonces
   inicio
    coge-zumbador;
     kaka(n);
       repetir n veces
       deja-zumbador;

   fin;
 fin;
  define-nueva-instruccion multiplica(n) como
  inicio
      si junto-a-zumbador entonces
      inicio
        coge-zumbador;
        multiplica(sucede(n));

      fin
      sino
      inicio
      g(2);
      repetir precede(n) veces
      deja-zumbador;
       si frente-libre entonces
       avanza;
       g(2);
        kaka(n);
        si frente-libre entonces
        avanza;
      fin;
  fin;


define-nueva-instruccion copialo como
inicio
  si junto-a-zumbador entonces
  inicio
  coge-zumbador;
   copialo;
     deja-zumbador;
  fin
  sino
  inicio
  g(3);
  avanza;
  fin;
fin;

 define-nueva-instruccion factorial(n) como
 inicio
     si junto-a-zumbador entonces
     inicio
     coge-zumbador;
      factorial(sucede(n));
     fin
     sino
     inicio
         repetir 2 veces
         avanza;
         copialo;
           g(2);
           avanza;
           g(2);
           deja-zumbador;
           avanza;
           repetir n veces
           inicio
            multiplica(0);

           fin;
     fin;
 fin;

         define-nueva-instruccion reproduce como
         inicio
           si junto-a-zumbador entonces
           inicio
           coge-zumbador;
           reproduce;
            deja-zumbador;
            repetir 2 veces
            inicio
            avanza;
            fin;
            deja-zumbador;
            g(2);
            repetir 2 veces
            avanza;
            g(2);
           fin
           sino
           inicio
           g(2);
           mientras frente-libre hacer
           avanza;
           g(2);
           fin;

         fin;
     define-nueva-instruccion diferencia(n) como
       inicio
        si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        diferencia(sucede(n));

        fin
        sino
        inicio
         avanza;
         repetir n veces
         coge-zumbador;

          reproduce;
         repetir 2 veces
         avanza;
         repetir n veces
         deja-zumbador;
         g(2);
         avanza;
         repetir n veces
         deja-zumbador;
         si frente-libre entonces
         avanza;
         g(2);
        fin;

       fin;
              define-nueva-instruccion res como
              inicio
              si junto-a-zumbador entonces
              inicio
              coge-zumbador;
              res;
                deja-zumbador;
              fin
              sino
              inicio
                mientras frente-libre hacer
                avanza;
              fin;
              fin;
     inicia-ejecucion
     avanza;
      diferencia(0);
      factorial(0);
      g(2);
      si frente-libre entonces
      avanza;
      gira-izquierda;
      res;
        apagate;
    termina-ejecucion
finalizar-programa
