iniciar-programa

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

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

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

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

define-nueva-instruccion derecha como inicio
  repetir 3 veces inicio
    gira-izquierda;
   fin;
 fin;

define-nueva-instruccion cuadro como inicio
  deja-zumbador;
    sur;
    avanza;
     deja-zumbador;
      oeste;
      avanza;
      deja-zumbador;
      norte;
      avanza;
      deja-zumbador;
       este;
       avanza;
       sur;
 fin;

define-nueva-instruccion pasar como inicio
  norte;
  mientras derecha-bloqueada hacer inicio
   avanza;
   fin;
   derecha;
    avanza;
    norte;
    mientras derecha-bloqueada hacer inicio
      avanza;
     fin;
      derecha;
      avanza;
       mientras derecha-bloqueada hacer inicio
        avanza;
       fin;
       derecha;
       avanza;
       derecha;
       avanza;
       sur;
 fin;

define-nueva-instruccion siguiente2 como inicio
oeste;
 avanza;
   norte;
    mientras frente-libre hacer inicio
       avanza;
     fin;
     oeste;
     si frente-libre entonces inicio
     avanza;
     sur;
     fin sino inicio
       apagate;
      fin;
  fin;

define-nueva-instruccion siguiente como inicio
    sur;
    mientras frente-libre hacer inicio
       avanza;
     fin;
     este;
     si frente-libre y izquierda-libre entonces inicio
       avanza;
       norte;
       fin sino inicio
        si frente-libre entonces inicio
         avanza;
          si izquierda-libre y derecha-libre entonces inicio
             gira-izquierDA;
             gira-izquierda;
             avanza;
             pasar;
           fin sino inicio
            norte;
          fin;
          fin sino inicio
          pasar;
          fin;

      fin;
  fin;

define-nueva-instruccion esquina como inicio
   oeste;
   mientras frente-libre hacer inicio
      avanza;
    fin;
    sur;
    mientras frente-libre hacer inicio
      avanza;
     fin;
    fin;

define-nueva-instruccion pasos como inicio
   si  junto-a-zumbador entonces inicio
      coge-zumbador;
        pasos;
         cuadro;
     fin sino inicio
     si frente-libre y no orientado-al-sur entonces inicio
        avanza;
          pasos;
           avanza;
           avanza;
          fin sino inicio
          siguiente;
          si no orientado-al-sur entonces inicio
          pasos;
           siguiente2;
          fin;
          fin;
     fin;
   fin;

    inicia-ejecucion
    esquina;
      norte;
        pasos;
        apagate;
    termina-ejecucion
finalizar-programa
