iniciar-programa
   define-nueva-instruccion lleva como
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         lleva;
         deja-zumbador;
      fin
      sino
         avanza;
   fin;
   define-nueva-instruccion longitud(n) como
   inicio
      si frente-libre entonces
      inicio
         avanza;
         longitud(sucede(n));
      fin
      sino
      inicio
         gira-izquierda;
         gira-izquierda;
         mientras frente-libre hacer
            avanza;
         repetir 3 veces
            gira-izquierda;
         avanza;
         avanza;
         repetir 3 veces
            gira-izquierda;
         mientras junto-a-zumbador hacer
         inicio
            coge-zumbador;
            avanza;
            repetir 2 veces
               repetir n veces
                  deja-zumbador;
            gira-izquierda;
            gira-izquierda;
            avanza;
            gira-izquierda;
            gira-izquierda;
         fin;
      fin;
   fin;
   define-nueva-instruccion corre(n) como
   inicio
      si no si-es-cero(n) entonces
      inicio
         repetir n veces
            si junto-a-zumbador entonces
              coge-zumbador;
         avanza;
         deja-zumbador;
         gira-izquierda;
         gira-izquierda;
         avanza;
         gira-izquierda;
         gira-izquierda;
         si junto-a-zumbador entonces
            corre(precede(n));
      fin;

   fin;
   define-nueva-instruccion paso(n) como
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         paso(sucede(n));
      fin
      sino
      inicio
         gira-izquierda;
         gira-izquierda;
         avanza;
         repetir 3 veces
            gira-izquierda;
         mientras junto-a-zumbador hacer
         inicio
            corre(n);
         fin;
      fin;
   fin;
   define-nueva-instruccion final como
   inicio
      si junto-a-zumbador entonces
      inicio
         coge-zumbador;
         final;
         deja-zumbador
      fin
      sino
      inicio
         gira-izquierda;
         gira-izquierda;
         avanza;
         gira-izquierda;
         mientras frente-libre hacer
         avanza;
      fin;
   fin;
    inicia-ejecucion
      longitud(0);
      avanza;
      gira-izquierda;
      gira-izquierda;
      lleva;
      gira-izquierda;
      avanza;
      paso(0);
      avanza;
      final;   
      apagate;
    termina-ejecucion
finalizar-programa
