iniciar-programa
define-nueva-instruccion cuenta2(n) como
  inicio
    si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           cuenta2(sucede(n));
        fin;
     si no-orientado-al-este entonces
      inicio
       repetir n veces deja-zumbador;
       repetir 2 veces gira-izquierda;
       si frente-libre entonces avanza;
       repetir n veces deja-zumbador;
       gira-izquierda;
     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
          si junto-a-zumbador entonces
            coge-zumbador;
        cuenta2(0);
        gira-izquierda;
        si frente-libre entonces avanza;
        repetir n veces deja-zumbador;
        gira-izquierda;
    fin;



   fin;

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

              fin;
              si no-orientado-al-oeste entonces
               inicio
               repetir n veces
                 deja-zumbador;
                gira-izquierda;
                 si frente-libre entonces
                   avanza;
                  repetir n veces deja-zumbador;
                  repetir 2 veces gira-izquierda;
                  si frente-libre entonces avanza;

               fin;


         fin;
         define-nueva-instruccion ponle (n) como
           inicio
               si junto-a-zumbador entonces
                 inicio
                   coge-zumbador;
                   ponle(sucede(n));
                 fin;
             si no-orientado-al-sur entonces
               inicio
                 repetir 2 veces gira-izquierda;
                 si frente-libre entonces avanza;
                 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;
               si no-orientado-al-norte entonces
                 inicio
                   repetir 2 veces gira-izquierda;
                    si frente-libre entonces avanza;
                     mientras junto-a-zumbador hacer
                       inicio
                          si junto-a-zumbador entonces
                            coge-zumbador;
                            gira-izquierda;
                            si frente-libre entonces
                              avanza;
                             deja-zumbador;
                           repetir 2 veces gira-izquierda;
                          si frente-libre entonces avanza;
                             gira-izquierda;

                           repetir 2 veces gira-izquierda;
                           si frente-libre entonces avanza;
                          repetir n veces deja-zumbador;
                          repetir 2 veces gira-izquierda;
                         si frente-libre entonces avanza;

                     fin;
                  gira-izquierda;
                  si frente-libre entonces avanza;
                ponle(0);
                mientras no-orientado-al-norte hacer
                gira-izquierda;
             fin;


            fin;
            define-nueva-instruccion ul(n) como
               inicio
                   si junto-a-zumbador entonces
                 inicio
                   coge-zumbador;
                   ul(sucede(n));
                 fin;
                repetir 2 veces gira-izquierda;
                repetir 2 veces
                si frente-libre entonces avanza;
                repetir n veces deja-zumbador;
                apagate;

               fin;

    inicia-ejecucion
    si frente-libre entonces
       avanza;
       cuenta(0);
       gira-izquierda;
       si frente-libre entonces
        avanza;
        si junto-a-zumbador entonces
          coge-zumbador;
            repetir 2 veces gira-izquierda;
          si frente-libre entonces avanza;
         repetir 2 veces gira-izquierda;
         pon(0);
         gira-izquierda;
         si frente-libre entonces avanza;

         mientras junto-a-zumbador hacer
           inicio
              si junto-a-zumbador entonces
                  coge-zumbador;
              repetir 2 veces gira-izquierda;
               si frente-libre entonces avanza;
                repetir 3 veces gira-izquierda;
                si frente-libre entonces avanza;
                si junto-a-zumbador entonces
                  coge-zumbador;
                  repetir 2 veces gira-izquierda;
                  si frente-libre entonces avanza;
                 multiplica(0);
                 gira-izquierda;
                 si frente-libre entonces avanza;
                 gira-izquierda;
                 si frente-libre entonces avanza;

           fin;
           repetir 2 veces gira-izquierda;
           si frente-libre entonces avanza;
           ul(0);






        apagate;
    termina-ejecucion
finalizar-programa
