iniciar-programa
define-nueva-instruccion gira-derecha como inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
fin;
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 orienta como inicio
    mientras izquierda-libre  hacer inicio
        gira-izquierda;
    fin;
fin;
define-nueva-instruccion ajusta como inicio
    si frente-bloqueado entonces inicio
        gira-derecha;
    fin;
    avanza;
    si izquierda-libre entonces inicio
        gira-izquierda;
        avanza;
        si izquierda-libre entonces inicio
            gira-izquierda;
            avanza;
        fin;
    fin;
fin;
define-nueva-instruccion marcar como inicio
    mientras no-junto-a-zumbador hacer inicio
        deja-zumbador;
        ajusta;
    fin;
fin;
define-nueva-instruccion checa-salida como inicio
    gira-derecha;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    si junto-a-zumbador entonces inicio
       gira-izquierda;
       gira-izquierda;
       mientras frente-libre hacer inicio
           avanza;
       fin;
       gira-derecha;
    fin;
fin;

define-nueva-instruccion buscarsalida como inicio
    mientras junto-a-zumbador hacer inicio
        ajusta;
        checa-salida;
    fin;
fin;
define-nueva-instruccion ir11 como inicio
    si orientado-al-sur entonces inicio
        este;
        mientras frente-libre hacer inicio
            avanza;
        fin;
    fin;
    si orientado-al-este entonces inicio
        norte;
        mientras frente-libre hacer inicio
            avanza;
        fin;
    fin;
    si orientado-al-norte entonces inicio
        oeste;
        mientras frente-libre hacer inicio
            avanza;
        fin;
    fin;
    si orientado-al-oeste entonces inicio
        sur;
        mientras frente-libre hacer inicio
            avanza;
        fin;
    fin;
fin;

  inicia-ejecucion
      orienta;
      marcar;
      buscarsalida;
      ir11;
      checa-salida;
      apagate;
  termina-ejecucion
finalizar-programa
