iniciar-programa
 define-nueva-instruccion arriba como
   inicio
     mientras no-orientado-al-este hacer gira-izquierda;
     mientras frente-libre hacer avanza;
     gira-izquierda;
     mientras frente-libre hacer avanza;
     gira-izquierda;

   fin;
   define-nueva-instruccion pon como
      inicio
         repetir 4 veces
            inicio
              si frente-libre entonces
                 inicio
                    avanza;
                    si no-junto-a-zumbador entonces
                       repetir 2 veces
                       deja-zumbador;
                       repetir 2 veces gira-izquierda;
                       si frente-libre entonces avanza;
                       repetir 2 veces gira-izquierda;

                 fin;
                gira-izquierda;

            fin;
       fin;
       define-nueva-instruccion vuelta como
         inicio


                   repetir 2 veces gira-izquierda;
                   mientras frente-libre hacer avanza;
                   repetir 3 veces gira-izquierda;
                   si frente-libre entonces avanza;
                   repetir 3 veces gira-izquierda;



         fin;
  define-nueva-instruccion recorre como
    inicio
      arriba;
       mientras frente-libre o frente-bloqueado hacer
          inicio
             mientras no-junto-a-zumbador y frente-libre hacer avanza;
             si junto-a-zumbador entonces
               inicio
                coge-zumbador;
                  si no-junto-a-zumbador entonces
                    inicio
                      deja-zumbador;
                     pon;
                     si frente-libre entonces avanza
                      sino
                       vuelta;
                    fin
                   sino
                     inicio
                       deja-zumbador;
                       si frente-libre entonces avanza
                       sino
                         si izquierda-libre entonces
                        vuelta;
                      fin;

              fin;

          si  frente-bloqueado y izquierda-bloqueada entonces
              inicio
               si junto-a-zumbador entonces
                 inicio
                   coge-zumbador;
                     si no-junto-a-zumbador entonces
                        inicio
                           deja-zumbador;
                           pon;
                         fin
                        sino
                         deja-zumbador;
                      sal-de-instruccion;
                   fin;
               sal-de-instruccion;
             fin;
             si frente-bloqueado entonces
              inicio
                  si junto-a-zumbador entonces
                    inicio
                      coge-zumbador;

                      si no-junto-a-zumbador entonces
                         inicio
                            deja-zumbador;
                           pon;
                         fin
                        sino
                         deja-zumbador;
                      fin;
                      vuelta;
              fin;


            fin;


   fin;
   define-nueva-instruccion quita como
     inicio
       arriba;
       mientras frente-libre o frente-bloqueado hacer
          inicio
             mientras no-junto-a-zumbador y frente-libre hacer avanza;
             si junto-a-zumbador entonces
                inicio
                  coge-zumbador;
                   si no-junto-a-zumbador entonces
                      deja-zumbador;
                   si frente-libre entonces avanza
                   sino
                    si izquierda-libre entonces vuelta;
                 fin;


               si frente-bloqueado  y izquierda-bloqueada entonces
                 inicio
                    si junto-a-zumbador entonces
                      inicio
                        coge-zumbador;
                        si no-junto-a-zumbador entonces
                          deja-zumbador;
                      fin;

                   sal-de-instruccion;


                  fin;
                si frente-bloqueado  entonces
                   inicio
                     si junto-a-zumbador entonces
                       inicio
                          coge-zumbador;
                        si no-junto-a-zumbador entonces
                          deja-zumbador;
                       fin;
                        vuelta;
                    fin;


          fin;

     fin;
     define-nueva-instruccion ultimo(n) como
       inicio

         mientras frente-libre o frente-bloqueado hacer
            inicio
                 si junto-a-zumbador entonces
                     inicio
                       coge-zumbador;
                       ultimo(sucede(n));
                     fin;
             mientras frente-libre y no-junto-a-zumbador hacer avanza;

                 si frente-bloqueado y no-junto-a-zumbador y izquierda-bloqueada entonces
                     inicio
                         si junto-a-zumbador entonces
                           inicio
                            coge-zumbador;
                            ultimo(sucede(n));
                           fin;
                       repetir n veces deja-zumbador;
                       apagate;
                      fin;
                   si frente-bloqueado entonces
                       inicio
                         si junto-a-zumbador entonces
                           inicio
                            coge-zumbador;
                            ultimo(sucede(n));
                           fin;

                         vuelta;
                       fin;

              fin;

       fin;

 define-nueva-instruccion cuenta(n) como
    inicio
      si junto-a-zumbador entonces
         inicio
           coge-zumbador;
           cuenta(sucede(n));
         fin;
          repetir n veces
            inicio
              recorre;
              quita;
            fin;
            arriba;
          ultimo(0);



      fin;

    inicia-ejecucion
    cuenta(0);
        apagate;
    termina-ejecucion
finalizar-programa
