iniciar-programa
   define-nueva-instruccion gira(n) como
   inicio
      repetir n veces
        gira-izquierda;
   fin;
    define-nueva-instruccion lleva como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          lleva;
          deja-zumbador;
        fin
        sino
        inicio
           gira(2);
           mientras frente-libre hacer
              avanza;
           gira(1);
           avanza;
           gira(1);
           mientras junto-a-zumbador hacer
           avanza;
        fin;
    fin;
    define-nueva-instruccion trae1 como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          trae1;
          deja-zumbador;
        fin
        sino
        inicio
           gira(2);
           mientras frente-libre y no junto-a-zumbador hacer
           avanza;
           gira(2);
           si junto-a-zumbador entonces
               avanza;
        fin;
    fin;
    define-nueva-instruccion trae como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          trae;
          deja-zumbador;
        fin
        sino
        inicio
           gira(2);
           avanza;
        fin;
    fin;
   define-nueva-instruccion num(n) como
   inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          num(sucede(n));
       fin
       sino
       inicio
          gira(1);
          avanza;
          gira(1);
          repetir n veces
             avanza;
          gira(2);
       fin;
    fin;
    define-nueva-instruccion cuenta(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          cuenta(sucede(n));
       fin
       sino
       inicio
          avanza;
          num(precede(0));
          repetir n veces
          inicio
             avanza;
             gira(1);
             trae;
             gira(2);
             avanza;
             gira(3);
          fin;
       fin;
    fin;
    inicia-ejecucion
        mientras no orientado-al-este hacer
           gira-izquierda;
       avanza;
       gira(1);
       avanza;
       gira(1);
       cuenta(0);
       gira(2);
       mientras orientado-al-este hacer
       inicio
          mientras frente-libre y no junto-a-zumbador hacer
             avanza;
          si junto-a-zumbador entonces
          inicio
             trae1;         
             avanza;
          fin
          sino
            gira(1);
       fin;
       avanza;
       gira(1);
       mientras frente-libre hacer
          avanza;
       gira(2);
       mientras orientado-al-este hacer
       inicio
          mientras frente-libre y no junto-a-zumbador hacer
             avanza;
          si junto-a-zumbador entonces
          inicio
             lleva;
             gira(1);
             avanza;
             gira(1);
             mientras frente-libre hacer
                avanza;
             gira(2);
          fin
          sino
            apagate;
       fin;
       apagate;
    termina-ejecucion
finalizar-programa
