iniciar-programa

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

define-nueva-instruccion mira-sur como
inicio
    mientras no-orientado-al-sur hacer gira-izquierda;
fin;

define-nueva-instruccion mira-este como
inicio
    mientras no-orientado-al-este hacer gira-izquierda;
fin;

define-nueva-instruccion mira-oeste como
inicio
     mientras no-orientado-al-oeste hacer gira-izquierda;
fin;

define-nueva-instruccion toma-y-deja como
inicio
     coge-zumbador;
     mira-oeste;
     avanza;
     deja-zumbador;
     mira-este;
     avanza;
fin;

define-nueva-instruccion paso-atras como
inicio
    gira-izquierda;
    gira-izquierda;
    avanza;
    gira-izquierda;
    gira-izquierda;
fin;

define-nueva-instruccion compara-i(n) como
inicio
      si junto-a-zumbador entonces
      inicio
          avanza;
          si junto-a-zumbador entonces
          inicio
              paso-atras;
              coge-zumbador;
              compara-i(sucede(n));
          fin
          sino
          inicio

              sal-de-instruccion;

          fin;
      fin
      sino
      inicio

          avanza;

             repetir n veces
             inicio
                si junto-a-zumbador entonces
                    toma-y-deja
                sino
                inicio
                   repetir n veces
                   inicio
                       deja-zumbador;
                   fin;
                   sal-de-instruccion;
                fin;
             fin;
             si junto-a-zumbador entonces
             inicio
             repetir n veces
                  deja-zumbador;
             fin
             sino
             inicio
             repetir n veces
                  deja-zumbador;
             fin;
         fin;
         si junto-a-zumbador entonces compara-i(0);
fin;

define-nueva-instruccion regresar como
inicio
    mira-oeste;
    mientras frente-libre hacer avanza;
    mira-este;

fin;

define-nueva-instruccion toma-todo(x) como
inicio

        si junto-a-zumbador entonces
        inicio
             coge-zumbador;
             toma-todo(sucede(x));
        fin
        sino
        inicio
            mira-este;
            avanza;
            repetir x veces deja-zumbador;
        fin;

fin;

define-nueva-instruccion cuenta como
inicio
    si junto-a-zumbador entonces
    inicio
        avanza;
        cuenta;
        compara-i(0);

        mira-oeste;
        avanza;
        mira-este;
        toma-todo(0);


        regresar;
    fin
    sino
    inicio
        regresar;
    fin;
fin;

define-nueva-instruccion toma-dos como
inicio
    coge-zumbador;
    mira-este;
    avanza;
    coge-zumbador;
    mira-oeste;
    avanza;
fin;

define-nueva-instruccion checa-menor(x) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        checa-menor(sucede(x));
    fin
    sino
    inicio
        mira-este;
        avanza;
        repetir x veces
        inicio
            coge-zumbador;
            mira-oeste;
            avanza;
            deja-zumbador;
            mira-este;
            avanza;
        fin;


    fin;

fin;


define-nueva-instruccion matriu(x) como
inicio
      si si-es-cero(x) entonces
      inicio
          avanza;
          matriu(sucede(x));
      fin
      sino
      inicio
          si frente-libre entonces
          inicio
             avanza;
             si frente-libre entonces
             inicio
                mira-este;
                avanza;
                 checa-menor(0);
                 si junto-a-zumbador entonces
                 inicio
                     mira-oeste;
                     avanza;avanza;
                     matriu(sucede(x));
                 fin
                 sino
                 inicio
                     mira-oeste;
                     avanza;avanza;
                     matriu(x);
                 fin;
             fin
             sino
             inicio
                 mira-este;
                 avanza;
                 checa-menor(0);
                 si junto-a-zumbador entonces
                 inicio

                     mira-oeste;
                     avanza;avanza;
                     mientras junto-a-zumbador hacer coge-zumbador;
                     deja-zumbador;
                     repetir x veces deja-zumbador;
                 fin
                 sino
                 inicio
                     mira-oeste;
                     avanza;avanza;
                     mientras junto-a-zumbador hacer coge-zumbador;
                     repetir x veces deja-zumbador;
                 fin;

             fin;
          fin;
      fin;
  fin;







 inicia-ejecucion
    cuenta;
    avanza;
  mientras junto-a-zumbador hacer avanza;
    mira-oeste;
    avanza;
    matriu(0);

        apagate;
    termina-ejecucion
finalizar-programa
