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

      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-norte entonces
       inicio
          repetir 2 veces
          si frente-libre entonces avanza;
           si junto-a-zumbador entonces coge-zumbador;
           alcance(0);
           repetir n veces
             inicio
                deja-zumbador;
                si frente-libre entonces avanza;
              fin;

          mientras no-orientado-al-norte hacer
           gira-izquierda;
       fin;


   fin;
   define-nueva-instruccion ultimo(n) como
      inicio
         si frente-libre entonces
           inicio
             avanza;
             ultimo(sucede(n));
           fin;
         repetir 3 veces gira-izquierda;
         si frente-libre entonces avanza;
         gira-izquierda;
         si frente-libre entonces avanza;
         repetir n veces deja-zumbador;
         apagate;




      fin;
   define-nueva-instruccion tiro (n) como
     inicio
       si frente-libre entonces
          inicio
            avanza;
            tiro(sucede(n));
           fin;
          repetir 2 veces gira-izquierda;
          mientras no-junto-a-zumbador y frente-libre hacer
              avanza;
          mientras junto-a-zumbador y frente-libre hacer avanza;
            repetir 2 veces gira-izquierda;
            si frente-libre entonces avanza;
            repetir 3 veces gira-izquierda;
            si frente-libre entonces avanza;
            repetir 3 veces gira-izquierda;
            repetir n veces
              inicio
                   si frente-libre entonces avanza
                   sino
                      inicio
                          repetir 3 veces gira-izquierda;
                          si frente-libre entonces avanza;
                          gira-izquierda;
                          si frente-libre entonces avanza;
                          deja-zumbador;
                          apagate;

                      fin;
               fin;

                        repetir 2 veces gira-izquierda;
                        mientras frente-libre hacer avanza;
                        repetir 2 veces gira-izquierda;
                       ultimo(1);




     fin;
    inicia-ejecucion
          repetir 3 veces gira-izquierda;
          repetir 2 veces
          si frente-libre entonces avanza;
          mientras junto-a-zumbador hacer
            coge-zumbador;
            si frente-libre entonces avanza;
            repetir 2 veces gira-izquierda;
            si junto-a-zumbador entonces coge-zumbador;
            cuenta(0);
           deja-zumbador;
            gira-izquierda;
           mientras junto-a-zumbador y frente-libre hacer avanza;
           si junto-a-zumbador entonces
           tiro(0)
           sino
            tiro(1);








        apagate;
    termina-ejecucion
finalizar-programa
