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 regreso como
inicio
si frente-bloqueado entonces
inicio
  mira-este;
  mientras frente-libre hacer
  avanza;
  mira-sur;
  si frente-libre entonces
  avanza;
fin;
fin;

define-nueva-instruccion pared como
inicio
  si frente-libre y derecha-bloqueada entonces
  inicio
    avanza;
    pared;
    mira-sur;
    si frente-libre entonces
    inicio
    avanza;
    fin
    sino
    inicio
      regreso;
    fin;
  fin;

  si frente-bloqueado y derecha-bloqueada entonces
  inicio
    si no-orientado-al-sur entonces
    inicio
    gira-izquierda;
    mientras derecha-bloqueada y orientado-al-oeste hacer

    avanza;
    mira-norte;
    avanza;
    pared;
    mira-sur;
    si frente-libre entonces
    inicio
    avanza;
    fin
    sino
    inicio
      regreso;
    fin;
    fin;
  fin;

  si derecha-libre y orientado-al-norte entonces
  inicio
    mira-este;
    avanza;
    si derecha-bloqueada entonces
    inicio
      mientras derecha-bloqueada y frente-libre hacer
        avanza;
      mira-norte;
      si derecha-bloqueada entonces
      inicio
        si frente-libre entonces
        inicio
        avanza;
        pared;
        mira-sur;
        si frente-libre entonces
        avanza;
        fin
        sino
        inicio
          pared;
          mira-sur;
        fin;
      fin
      sino
      inicio
        mira-sur;
        sal-de-instruccion;
      fin;

    fin
    sino
    inicio
      mira-sur;
      sal-de-instruccion;
    fin;
  fin;

fin;




    inicia-ejecucion
    mira-norte;
    pared;
    si derecha-libre entonces
    inicio
     mira-oeste;
     mientras frente-libre hacer avanza;
    fin;
    deja-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
