iniciar-programa
define-nueva-instruccion derecha como
 inicio
  repetir 3 veces gira-izquierda;
 fin;
  define-nueva-instruccion pasos (n) como
     inicio
       si frente-libre entonces
          inicio
           avanza;
           pasos(sucede(n));

          fin;
        mientras no-orientado-al-sur hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        derecha;
        mientras frente-libre hacer avanza;
        mientras junto-a-zumbador hacer coge-zumbador;
        repetir n veces deja-zumbador;
        deja-zumbador;

        apagate;


     fin;
     define-nueva-instruccion cuenta4(n) como
       inicio
          si junto-a-zumbador entonces
        inicio
          coge-zumbador;
          cuenta4(sucede(n));
        fin;
        si no-orientado-al-oeste entonces
         inicio
           repetir n veces
             inicio
               si frente-libre y no-orientado-al-este entonces
                  avanza;

                 repetir n veces deja-zumbador;
                 mientras no-orientado-al-sur hacer gira-izquierda;

               si frente-bloqueado entonces
                inicio
                   mientras no-orientado-al-oeste hacer gira-izquierda;
                   pasos(0);
                fin;

              fin;
              gira-izquierda;
             si frente-libre entonces avanza
             sino
               inicio
                  mientras no-orientado-al-oeste hacer gira-izquierda;
                  pasos(0);
               fin;
               derecha;
               repetir n veces deja-zumbador;
               mientras no-orientado-al-oeste hacer gira-izquierda;
          fin;






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

               fin;

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



   fin;
 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
               inicio
                   si no-junto-a-zumbador y no-orientado-al-este entonces
                    inicio
                    repetir n veces deja-zumbador;
                    deja-zumbador;
                    fin;
                 si frente-libre y no-orientado-al-este entonces avanza;



                fin;
                 repetir n veces deja-zumbador;
                 deja-zumbador;
               si no-orientado-al-este entonces
                inicio

                si frente-libre entonces
                 inicio
                 derecha;
                 si frente-libre entonces avanza
                  sino
                    inicio
                      mientras no-orientado-al-oeste hacer gira-izquierda;
                      pasos(0);
                    fin;
                  gira-izquierda;
                   si  si-es-cero (n) entonces
                  mientras no-orientado-al-este hacer gira-izquierda;
                 cuenta2(precede(n));
                fin
                sino
                  inicio
                       si junto-a-zumbador entonces
                         inicio
                          coge-zumbador;
                          si junto-a-zumbador entonces
                            inicio
                              coge-zumbador;
                             si junto-a-zumbador entonces
                               inicio
                                 repetir 2 veces deja-zumbador;
                                  derecha;
                                 si frente-libre entonces avanza;
                                  gira-izquierda;

                                 fin
                                 sino
                                    inicio
                                     repetir 2 veces deja-zumbador;
                                      derecha;
                                       si frente-libre entonces avanza;
                                       gira-izquierda;
                                       cuenta2(precede(n));

                                     fin;
                            mientras no-orientado-al-este hacer gira-izquierda;
                          fin
                          sino
                           inicio
                              deja-zumbador;
                              derecha;
                              si frente-libre entonces avanza;
                              mientras no-orientado-al-este hacer gira-izquierda;

                           fin;
                        fin;

                  fin;

               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 deja-zumbador;

        si junto-a-zumbador entonces coge-zumbador;
       cuenta2(0);
     mientras no-orientado-al-sur hacer gira-izquierda;
          repetir n veces deja-zumbador;
      
      cuenta3(0);
      mientras no-orientado-al-oeste hacer gira-izquierda;
      pasos(0);






   fin;
    inicia-ejecucion
    mientras no-orientado-al-norte hacer
      gira-izquierda;
      si junto-a-zumbador entonces
        inicio

          cuenta(0);
         fin;



        apagate;
    termina-ejecucion
finalizar-programa
