iniciar-programa
   define-nueva-instruccion media-Vuelta como inicio
        gira-izquierda;
        gira-izquierda;
    fin;

    define-nueva-instruccion gira-Derecha como inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
    fin;


    define-nueva-instruccion  deja1(n) como inicio
         si frente-libre y orientado-al-norte  entonces inicio
            repetir n veces avanza;
            gira-izquierda;
            repetir n veces avanza;
            deja-zumbador;
              media-vuelta;
              repetir n veces avanza;
              gira-derecha;
              repetir n veces avanza;
              media-vuelta;

            repetir n veces avanza;
            gira-derecha;
            repetir n veces avanza;
            deja-zumbador;
            si orientado-al-este entonces inicio
            media-vuelta;
            repetir n veces avanza;
            gira-izquierda;
            repetir n veces avanza;
              fin;
              fin;

        si frente-libre y orientado-al-sur  entonces inicio
           repetir n veces avanza;
            gira-derecha;
            repetir n veces avanza;
            deja-zumbador;
              media-vuelta;
              repetir n veces avanza;
              gira-izquierda;
             repetir n veces avanza;
              media-vuelta;

            repetir n veces avanza;
            gira-izquierda;
            repetir n veces avanza;
            deja-zumbador;
            si orientado-al-este y frente-libre entonces inicio
              media-vuelta;
              repetir n veces avanza;
              gira-derecha;
              repetir n veces avanza;
              deja1(sucede(n));
              fin
              sino si frente-bloqueado entonces inicio
               media-vuelta;
               repetir n veces avanza;
               gira-derecha;
               repetir n veces avanza;
               fin;
               fin;



              fin;


          define-nueva-instruccion  avanza-deja(n) como inicio
         si orientado-al-norte y junto-a-zumbador  entonces inicio
          coge-zumbador;
          repetir n veces deja-zumbador;
          si frente-libre entonces inicio
          avanza;
          fin
          sino inicio
           apagate;
           fin;
          gira-derecha;
          avanza-deja(sucede(n));
          fin;

         si frente-libre y no junto-a-zumbador entonces inicio
          repetir n veces deja-zumbador;
          avanza;
          avanza-deja(sucede(n));
          fin;

         si junto-a-zumbador entonces inicio
           coge-zumbador;
           repetir n veces deja-zumbador;
           gira-derecha;
           avanza;
           avanza-deja(sucede(n));
           fin;
           fin;



       inicia-ejecucion
      si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces inicio
       deja-zumbador;
      apagate;
      fin;
       mientras no-orientado-al-norte hacer inicio
         gira-izquierda;
         fin;
       deja1(1);
        deja-zumbador;
      avanza-deja(1);

        apagate;
    termina-ejecucion
finalizar-programa
