iniciar-programa

     define-nueva-instruccion cuenta2 como
      inicio
        si orientado-al-este y junto-a-zumbador entonces
          inicio
           si junto-a-zumbador entonces coge-zumbador;
            cuenta2;
          fin;
          si orientado-al-este entonces
            repetir 2 veces gira-izquierda;
            mientras frente-libre hacer avanza;
           deja-zumbador;
      fin;
  define-nueva-instruccion cuenta como
     inicio

           mientras frente-libre y orientado-al-sur hacer
          inicio
           si derecha-bloqueada y izquierda-bloqueada entonces
           si junto-a-zumbador entonces
           inicio
           coge-zumbador;
           cuenta;
           fin;
           si frente-libre entonces avanza;
          fin;
            mientras (frente-bloqueado o frente-libre) y orientado-al-sur hacer
         inicio
          si orientado-al-sur entonces
           inicio
           repetir 3 veces gira-izquierda;
           mientras frente-libre hacer avanza;
           repetir 2 veces gira-izquierda;
           fin;
            mientras derecha-bloqueada y frente-libre hacer
            avanza;
            si derecha-libre entonces
              inicio
                repetir 3 veces gira-izquierda;
                avanza;
                si derecha-bloqueada y izquierda-bloqueada entonces
                si junto-a-zumbador entonces
                inicio
                coge-zumbador;
                cuenta;
                fin;
                repetir 3 veces gira-izquierda;
                mientras frente-libre hacer avanza;
                gira-izquierda;
             fin;

             fin;

          si orientado-al-este y derecha-bloqueada y frente-bloqueado entonces
          deja-zumbador;
     fin;
 define-nueva-instruccion recorre como
   inicio
     si  frente-bloqueado  entonces
         inicio
          si orientado-al-sur entonces
          inicio
           repetir 3 veces gira-izquierda;

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

            mientras derecha-bloqueada y frente-libre hacer
            avanza;
            si derecha-libre entonces
              inicio
                repetir 3 veces gira-izquierda;
                avanza;
                si derecha-bloqueada y izquierda-bloqueada entonces
                si no-junto-a-zumbador entonces deja-zumbador;
                repetir 3 veces gira-izquierda;
                mientras frente-libre hacer avanza;
               gira-izquierda;
             fin;
            fin;
            si orientado-al-norte entonces
              inicio

                gira-izquierda;
                mientras frente-libre hacer avanza;
                repetir 2 veces gira-izquierda;
                mientras izquierda-bloqueada y frente-libre hacer avanza;
                si frente-bloqueado y orientado-al-este y izquierda-bloqueada entonces
                 inicio
                  mientras no orientado-al-sur hacer gira-izquierda;
                  cuenta;
                   si junto-a-zumbador entonces coge-zumbador;
                    cuenta2;
                    si junto-a-zumbador entonces coge-zumbador;
                    apagate;
                  fin;
                si izquierda-libre entonces
                  inicio
                     gira-izquierda;
                     avanza;
                     gira-izquierda;
                     mientras frente-libre hacer avanza;
                     repetir 3 veces gira-izquierda;
                  fin;
                  fin;
             fin;
           mientras frente-libre hacer
          inicio
           si derecha-bloqueada y izquierda-bloqueada entonces
           si no-junto-a-zumbador entonces deja-zumbador;
           avanza;
          fin;
       fin;

    inicia-ejecucion
   si derecha-libre entonces
    inicio
      repetir 3 veces gira-izquierda;
      mientras frente-libre hacer avanza;
       gira-izquierda;
      fin;
       mientras (frente-libre o frente-bloqueado) y ((izquierda-libre y derecha-bloqueada)o (izquierda-bloqueada y derecha-libre)
       o (derecha-libre y izquierda-libre)) y orientado-al-sur hacer recorre;
    mientras no-orientado-al-este hacer gira-izquierda;
    mientras no-orientado-al-norte hacer gira-izquierda;

      mientras (frente-libre o frente-bloqueado) y  ((izquierda-libre y derecha-bloqueada)o (izquierda-bloqueada y derecha-libre)
       o (derecha-libre y izquierda-libre))hacer
      inicio
      si orientado-al-este entonces gira-izquierda;
      recorre;
      fin;


      apagate;
    termina-ejecucion
finalizar-programa
