iniciar-programa

define-nueva-instruccion orienta-norte como
inicio
      si orientado-al-este entonces
      inicio
          gira-izquierda;
          fin;

          si orientado-al-oeste entonces
          inicio
              gira-izquierda;
              gira-izquierda;
              gira-izquierda;
              fin;

              si orientado-al-sur entonces
              inicio
                  gira-izquierda;
                  gira-izquierda;
                  fin;
                  fin;



 define-nueva-instruccion orienta-oeste como
 inicio
     si orientado-al-norte entonces
     inicio
         gira-izquierda;
         fin;

         si orientado-al-sur entonces
         inicio
         gira-izquierda;
         gira-izquierda;
         gira-izquierda;
         fin;

         si orientado-al-este entonces
         inicio
         gira-izquierda;
         gira-izquierda;
         fin;
         fin;

         define-nueva-instruccion orienta-este como
         inicio
         si orientado-al-norte entonces
         inicio
             gira-izquierda;
             gira-izquierda;
             gira-izquierda;
             fin;

             si orientado-al-sur entonces
             inicio
             gira-izquierda;
             fin;

             si orientado-al-oeste entonces
             inicio
             gira-izquierda;
             gira-izquierda;
             fin;

             fin;








    inicia-ejecucion

      orienta-norte;
       mientras no-junto-a-zumbador hacer
       inicio
           si no-junto-a-zumbador entonces
           inicio
               orienta-este;
               si frente-libre entonces
               inicio
               avanza;
               fin;
               fin;
               fin;
               orienta-norte;




              mientras junto-a-zumbador hacer
      inicio
          coge-zumbador;
              si frente-libre entonces
              inicio
                  avanza;
                  fin;
                si no-junto-a-zumbador entonces
                inicio
                    gira-izquierda;
                    gira-izquierda;
                        mientras frente-libre hacer
                        inicio
                            si frente-libre entonces
                            inicio
                            avanza;
                            fin;
                            fin;
                            gira-izquierda;

                            si frente-libre entonces
                            inicio
                                avanza;
                                    mientras no-junto-a-zumbador hacer
                                    inicio
                                        avanza;
                                        fin;
                                fin;
                                orienta-norte;
                                fin;

                                          fin;


           orienta-oeste;
           si frente-libre entonces
           inicio
               mientras frente-libre hacer
               inicio
                   si frente-libre entonces
                   inicio
                   avanza;
                   fin;
                   fin;
                   fin;

                  orienta-este;

                  mientras frente-libre hacer
                  inicio
                     si algun-zumbador-en-la-mochila entonces
                     inicio
                         deja-zumbador;
                         fin;
                         si frente-libre entonces
                         inicio
                         avanza;
                         fin;

                         si frente-bloqueado entonces
                         inicio
                             si no-junto-a-zumbador entonces
                             inicio
                                 deja-zumbador;
                                 fin;
                                     orienta-oeste;
                                     mientras frente-libre hacer
                                     inicio
                                         si frente-libre entonces
                                         inicio

                                     avanza;
                                     fin;
                                     fin;
                                         si frente-bloqueado entonces
                                         inicio
                                         orienta-norte;
                                         si frente-libre entonces
                                         inicio
                                         avanza;
                                         fin;
                                         orienta-este;
                                         si ningun-zumbador-en-la-mochila entonces
                                         inicio
                                         apagate;
                                         fin;
                                         fin;
                                         fin;
                                         fin;













        apagate;
    termina-ejecucion
finalizar-programa
