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 ubicate como inicio
     mientras no orientado-al-oeste hacer inicio
     gira-izquierda;
     fin;
     mientras frente-libre hacer inicio
     avanza;
     fin;
     media-vuelta;
     repetir 300 veces coge-zumbador;
     avanza;
     mientras frente-libre hacer inicio
     avanza;
     fin;
     media-vuelta;
     si junto-a-zumbador entonces inicio
     avanza;
     fin
     sino si no junto-a-zumbador entonces inicio
      avanza;
      fin;
     fin;

     define-nueva-instruccion recorre(n) como inicio
        repetir n veces
        si frente-libre entonces inicio
        avanza;
        fin
        sino
        si frente-bloqueado entonces inicio
        si orientado-al-este y frente-bloqueado entonces inicio
        gira-izquierda;
        si frente-libre entonces inicio
        avanza;
        fin
        sino
        si frente-bloqueado entonces inicio
          mientras no orientado-al-oeste hacer inicio
          gira-izquierda;
          fin;
          mientras frente-libre hacer inicio
          avanza;
          fin;
          gira-izquierda;
          mientras frente-libre hacer inicio
          avanza;
          fin;
          si derecha-bloqueada entonces inicio
          gira-izquierda;
          fin
          sino
          si derecha-libre entonces inicio
          media-vuelta;
          avanza;
          gira-derecha;
          fin;
          mientras frente-libre hacer inicio
          avanza;
          fin;
          media-vuelta;
          sal-de-instruccion;
          fin;
        si orientado-al-norte entonces
        gira-izquierda;
        fin;
        si orientado-al-oeste y frente-bloqueado entonces inicio
        gira-derecha;
        si frente-libre entonces inicio
        avanza;
        fin
        sino
        si frente-bloqueado entonces inicio
          mientras no orientado-al-oeste hacer inicio
          gira-izquierda;
          fin;
          mientras frente-libre hacer inicio
          avanza;
          fin;
          gira-izquierda;
          mientras frente-libre hacer inicio
          avanza;
          fin;
          gira-izquierda;
          mientras frente-libre hacer inicio
          avanza;
          fin;
          media-vuelta;
       fin;
       si orientado-al-norte entonces
        gira-derecha;
        fin;
        fin;



   apagate;




      fin;

     define-nueva-instruccion uno(n) como inicio
     mientras frente-libre hacer inicio
     avanza;
     fin;
     gira-izquierda;
     avanza;
     gira-izquierda;
     recorre(n);
     fin;




   define-nueva-instruccion digitos(n) como inicio
     si junto-a-zumbador entonces inicio
      coge-zumbador;
      digitos(sucede(n));
     fin
     sino inicio
      si orientado-al-oeste entonces inicio
      media-vuelta;
      repetir n veces
      repetir 10 veces deja-zumbador;
      digitos(0);
       fin;
       si orientado-al-este y no junto-a-zumbador entonces inicio
        si frente-libre entonces
         avanza;
         si junto-a-zumbador entonces
         digitos(n);
       fin;
      fin;
   uno(precede(n));

    fin;
    inicia-ejecucion
     ubicate;
     digitos(0);
     coge-zumbador;


        apagate;
    termina-ejecucion
    finalizar-programa
