iniciar-programa

    define-nueva-instruccion suma(n) como
   inicio
       si junto-a-zumbador entonces
          inicio
              coge-zumbador;
              suma(sucede(n));
           fin;
         si no-orientado-al-oeste entonces
           inicio
             repetir 2 veces gira-izquierda;
             si frente-libre entonces avanza;
             repetir n veces
                inicio
                  si junto-a-zumbador entonces
                     coge-zumbador
                  sino
                    inicio
                      repetir 2 veces gira-izquierda;
                      si frente-libre entonces avanza;
                      deja-zumbador;
                      repetir 2 veces gira-izquierda;
                      si frente-libre entonces avanza;
                    fin;
                fin;
              si frente-bloqueado entonces
                 inicio
                   repetir 2 veces gira-izquierda;
                    si frente-libre entonces avanza;
                  fin;
              mientras no-orientado-al-oeste hacer gira-izquierda;

           fin;


   fin;




define-nueva-instruccion resta(n) como
   inicio
     si junto-a-zumbador entonces
          inicio
              coge-zumbador;
              resta(sucede(n));
           fin;
         si no-orientado-al-oeste  entonces
            inicio
               repetir n veces deja-zumbador;
               repetir 2 veces gira-izquierda;
               repetir 2 veces
                si frente-libre entonces avanza;
             repetir n veces
                  inicio
                    si junto-a-zumbador entonces
                      coge-zumbador
                    sino
                      inicio
                           repetir 2 veces gira-izquierda;
                           si frente-libre entonces avanza;
                            deja-zumbador;
                           repetir 2 veces gira-izquierda;
                           si frente-libre entonces avanza;
                       fin;
                  fin;

              suma(0);
           fin;




   fin;
   define-nueva-instruccion cuenta(n) como
     inicio
       si junto-a-zumbador entonces
          inicio
             coge-zumbador;
             cuenta(sucede(n));
           fin;
               si no-orientado-al-oeste entonces
                inicio
                 si frente-libre entonces avanza;
                   repetir n veces
                       deja-zumbador;
                    gira-izquierda;
                    si frente-libre entonces avanza;

                   resta(0);
                fin;

     fin;



    define-nueva-instruccion cuenta0(n) como
     inicio
      si frente-libre entonces
       inicio
       si junto-a-zumbador entonces
         inicio
             coge-zumbador;
             cuenta0(sucede(n));
         fin;
           repetir n veces deja-zumbador;
            mientras frente-libre hacer
             inicio
              si no-orientado-al-este entonces
              repetir 2 veces gira-izquierda;
               si frente-libre entonces
                 inicio
                   mientras no-orientado-al-este hacer gira-izquierda;
                   cuenta(0);
                 fin


            fin;
          fin;
           si junto-a-zumbador entonces
              inicio
                coge-zumbador;
                cuenta0(precede(n));
              fin;
           repetir n veces deja-zumbador;
           apagate;


     fin;
   inicia-ejecucion
    si frente-bloqueado entonces apagate;
        cuenta0(0);
        apagate;
    termina-ejecucion
finalizar-programa
