iniciar-programa

         define-nueva-instruccion cierra como inicio
        repetir 3 veces gira-izquierda;
           mientras frente-libre hacer avanza;
           gira-izquierda;
           avanza;
           gira-izquierda;
      fin;

     define-nueva-instruccion llave como inicio
              repetir 2 veces gira-izquierda;
              mientras frente-libre hacer avanza;
              repetir 2 veces gira-izquierda;
      fin;

     define-nueva-instruccion izquierda como inicio
          cierra;
          deja-zumbador;
          apagate;
      fin;
    define-nueva-instruccion esa como inicio
        si orientado-al-oeste entonces inicio
       repetir 3 veces gira-izquierda;
       avanza;
       repetir 3 veces gira-izquierda;
      fin;
    fin;

    define-nueva-instruccion derecha como inicio
      si frente-libre entonces inicio
         avanza;
         derecha;
         si orientado-al-este entonces inicio
           cierra;
           fin;
         deja-zumbador;
       fin;
    fin;

    define-nueva-instruccion compara(n) como inicio
         si si-es-cero (n) entonces inicio
              llave;
              derecha;
              fin;
         si no si-es-cero (n) entonces inicio
              si frente-libre entonces inicio
              avanza;
              compara(precede(n));
              fin
              sino inicio
                izquierda;
              fin;
           fin;
    fin;

    define-nueva-instruccion  ver(n) como inicio
       si frente-libre entonces inicio
          avanza;
          ver(sucede(n));
            si orientado-al-oeste entonces inicio
               repetir 2 veces gira-izquierda;
               mientras no-junto-a-zumbador hacer avanza;
               mientras junto-a-zumbador y frente-libre hacer avanza;
               repetir 2 veces gira-izquierda;
               avanza;
           repetir 2 veces gira-izquierda;
           fin;
                compara(n);
                deja-zumbador;
                apagate;
       fin;
    fin;

    define-nueva-instruccion lugar como inicio
       gira-izquierda;
       avanza;
       mientras junto-a-zumbador y frente-libre hacer avanza;
    si frente-bloqueado y junto-a-zumbador entonces inicio
         esa;
         derecha;
         deja-zumbador;
         apagate;
       fin
       sino inicio
          repetir 2 veces gira-izquierda;
          avanza;
          gira-izquierda;
          mientras junto-a-zumbador y frente-libre hacer avanza;
      fin;
     si no-junto-a-zumbador entonces inicio
       repetir 2 veces gira-izquierda;
       avanza;
       repetir 3 veces gira-izquierda;
       fin
       sino inicio
         gira-izquierda;
       fin;
    fin;

     define-nueva-instruccion empareja como inicio
     repetir 2 veces gira-izquierda;
     mientras no junto-a-zumbador hacer avanza;
     mientras frente-libre y junto-a-zumbador hacer avanza;
     repetir 2 veces gira-izquierdA;
     avanza;
     gira-izquierda;         
     mientras junto-a-zumbador hacer inicio
     si frente-libre entonces inicio
       avanza;
       gira-izquierda;
       avanza;
       mientras junto-a-zumbador y orientado-al-oeste hacer inicio
           repetir 2 veces gira-izquierda;
           avanza;
           deja-zumbador;
           gira-izquierda;
           si frente-libre entonces inicio
               avanza;
               gira-izquierDA;
               avanza;
           fin
           sino inicio
           gira-izquierda;
           avanzA;
           gira-izquierda;
           fin;
         fin;
       mientras no-orientado-al-sur hacer gira-izquierda;
       avanza;
       gira-izquierda;
       avanza;
       mientras no-orientado-al-sur hacer gira-izquierda;
       mientras frente-libre hacer avanza;
       gira-izquierda;
       si frente-libre entonces avanza;
       gira-izquierda;
       fin;
      fin;
     fin;
     define-nueva-instruccion ancho como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          ancho;
          si orientado-al-oeste entonces inicio
            mientras no-junto-a-zumbador hacer avanza;
            repetir 2 veces gira-izquierdA;
            fin;
          deja-zumbador;
          si frente-libre entonces avanza;
        fin;
      fin;

     define-nueva-instruccion posicion como inicio
       mientras no-orientado-al-sur hacer gira-izquierda;
       mientras frente-libre hacer avanza;
       repetir 3 veces gira-izquierda;
       mientras frente-libre hacer avanza;
       repetir 2 veces gira-izquierda;
       repetir 7 veces avanza;
       repetir 2 veces gira-izquierda;
     fin;


       define-nueva-instruccion colocalo  como inicio
       repetir 2 veces gira-izquierda;
       avanza;
       deja-zumbador;
       mientras frente-libre hacer avanza;
       repetir 2 veces gira-izquierda;
       repetir 6 veces avanza;
    fin;

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



    define-nueva-instruccion portero como inicio
       si junto-a-zumbador entonces inicio
         coge-zumbador;
         portero;
           si orientado-al-norte entonces inicio
              gira-izquierda;
              mientras frente-libre hacer avanza;
              repetir 2 veces gira-izquierda;
           fin;
              avanza;
       fin;
    fin;

    inicia-ejecucion
        repetir 3 veces gira-izquierda;
        avanza;       
        gira-izquierda;
        portero;
        colocalo;
        altura;
        posicion;
        ancho;
        empareja;
        lugar;
        ver(1);
        apagate;
    termina-ejecucion
finalizar-programa
