iniciar-programa

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

    define-nueva-instruccion media-vuelta como inicio
 gira-izquierda;
 gira-izquierda;
 fin;
      define-nueva-instruccion Tortuga como inicio

        si junto-a-zumbador entonces inicio
          coge-zumbador;
           Tortuga;
           deja-zumbador;
           fin
           sino
           si no junto-a-zumbador entonces inicio
            media-vuelta;
             mientras frente-libre y orientado-al-oeste hacer inicio
                avanza;
                fin;
              si frente-bloqueado entonces inicio
                  gira-derecha;
                  avanza;
                   avanza;
                  fin;
                fin;
                fin;


            define-nueva-instruccion conejo como  inicio
           si junto-a-zumbador entonces inicio
          coge-zumbador;
           conejo;
           deja-zumbador;
           fin
           sino
           si no junto-a-zumbador entonces inicio
            media-vuelta;
             mientras frente-libre y orientado-al-oeste hacer inicio
                avanza;
                fin;
              si frente-bloqueado entonces inicio
                  gira-derecha;
                  avanza;
                  avanza;
                  fin;
                fin;
                  fin;

    define-nueva-instruccion copia(n) como INICIO
      si junto-a-zumbador entonces inicio
        coge-zumbador;
        copia(sucede(n));
         fin
         sino si no junto-a-zumbador entonces inicio
          repetir n veces deja-zumbador;
          media-vuelta;
            avanza;
            repetir n veces deja-zumbador;
             deja-zumbador;
         fin;
     FIN;


     define-nueva-instruccion cuenta como INICIO
      si no junto-a-zumbador entonces inicio
        avanza;
        cuenta;
        deja-zumbador;
        fin
        sino si junto-a-zumbador entonces inicio
        mientras junto-a-zumbador hacer inicio
         coge-zumbador;
         fin;
         media-vuelta;

         mientras frente-libre y orientado-al-oeste hacer inicio
           avanza;
           fin;
           media-vuelta;
           avanza;
           repetir 1 veces deja-zumbador;
           media-vuelta;
            avanza;
           copia(0);
          fin;
     FIN;

      define-nueva-instruccion inicios como inicio
         mientras no orientado-al-norte hacer inicio
       gira-izquierda;
     fin;

       avanza;
       gira-derecha;
       mientras no junto-a-zumbador y orientado-al-este y frente-libre hacer inicio
       avanza;
       fin;
   Tortuga;

        media-vuelta;
        avanza;
        gira-izquierda;
        mientras no junto-a-zumbador y orientado-al-este y frente-libre hacer inicio
        avanza;
        fin;
    Conejo;
    Media-vuelta;
    avanza;
    gira-izquierda;
    avanza;
    Cuenta;
    gira-izquierda;
    avanza;
    gira-izquierda;
    avanza;
     copia(0);
     fin;

    define-nueva-instruccion copia1(m) como INICIO
      si junto-a-zumbador entonces inicio
        coge-zumbador;
        copia1(sucede(m));
         fin
         sino si no junto-a-zumbador entonces inicio
          repetir m veces deja-zumbador;
            avanza;
            repetir m veces deja-zumbador;
         fin;
     FIN;

    define-nueva-instruccion recoge como INICIO
    si orientado-al-norte entonces inicio
     gira-derecha;
     avanza;
     fin;
     si junto-a-zumbador y orientado-al-este entonces inicio
      coge-zumbador;
      recoge;
      deja-zumbador;
      fin
      sino si no junto-a-zumbador entonces inicio
       media-vuelta;
        mientras frente-libre y orientado-al-oeste hacer inicio
           avanza;
           fin;
           si frente-bloqueado entonces inicio
            gira-izquierda;
            mientras frente-libre hacer inicio
            avanza;
             fin;
             fin;
             fin;
      fin;



     define-nueva-instruccion compara(n) como inicio
       si junto-a-zumbador entonces inicio
        coge-zumbador;
        compara(sucede(n));
       fin
       sino si no junto-a-zumbador entonces inicio
        gira-derecha;
           avanza;
           media-vuelta;
           repetir n veces coge-zumbador;
            si junto-a-zumbador entonces inicio
             repetir n veces deja-zumbador;
             avanza;
             repetir n veces deja-zumbador;

             fin
             sino si no junto-a-zumbador entonces inicio

              recoge;
              sal-de-instruccion;
              fin;
   gira-derecha;
   avanza;
   deja-zumbador;
   gira-derecha;
   avanza;
   media-vuelta;
   deja-zumbador;
   avanza;
   gira-izquierda;
   avanza;
   avanza;
   media-vuelta;



    copia1(0);
   media-vuelta;
   avanza;
   gira-izquierda;
   avanza;
   gira-izquierda;
   copia1(0);
   gira-izquierda;
   avanza;
   gira-derecha;
   compara(0);




             fin
             sino si no junto-a-zumbador entonces inicio
              apagate;
              fin;



           fin;









    inicia-ejecucion
     inicios;
     compara(0);
     deja-zumbador;

        apagate;
    termina-ejecucion
finalizar-programa

