iniciar-programa

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

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

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

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

define-nueva-instruccion gira-derecha como
inicio
  gira-izquierda;
  gira-izquierda;
  gira-izquierda;
fin;
define-nueva-instruccion retrocede como
inicio
  gira-izquierda;
  gira-izquierda;
  avanza;
  gira-izquierda;
  gira-izquierda;
fin;

define-nueva-instruccion corre como
inicio
  mientras junto-a-zumbador y frente-libre hacer
  inicio
    coge-zumbador;
    avanza;
  fin;
  si no-junto-a-zumbador entonces
  inicio
    retrocede;
  fin;
  si frente-bloqueado y junto-a-zumbador entonces
  inicio
    coge-zumbador;
  fin;
fin;

define-nueva-instruccion orientate como
inicio
  si derecha-libre entonces
  inicio
    gira-derecha;
    avanza;
    si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      si frente-libre entonces
      inicio
        avanza;
        retrocede;
      fin
      sino
      inicio
        deja-zumbador;
        coge-zumbador;
      fin;
      deja-zumbador;

    fin
    sino
    inicio
      retrocede;
      gira-izquierda;
      gira-izquierda;

        avanza;
        si junto-a-zumbador entonces
        inicio
          coge-zumbador;
          si frente-libre entonces
          inicio
            avanza;
            retrocede;

          fin
          sino
          inicio

            deja-zumbador;
            coge-zumbador;
          fin;
            deja-zumbador;

        fin
        sino
        inicio
          retrocede;
          gira-derecha;
        fin;
    fin;
  fin
  sino
  inicio
    gira-izquierda;

    avanza;
    si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      si frente-libre entonces
      inicio
        avanza;
      fin;

    fin
    sino
    inicio
      retrocede;
      gira-derecha;
    fin;
  fin;

fin;

define-nueva-instruccion ubicate como
inicio
  si frente-libre entonces
  inicio
  avanza;
  fin;
  si junto-a-zumbador entonces
  inicio
  retrocede;
  coge-zumbador;
  deja-zumbador;
  fin
  sino
  inicio
    retrocede;
    gira-izquierda;
    gira-izquierda;
    avanza;
    si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      deja-zumbador;
      retrocede;
    fin
    sino
    inicio
      retrocede;
      gira-derecha;
      avanza;
    si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      deja-zumbador;
      retrocede;
    fin
    sino
    inicio
      retrocede;
    gira-izquierda;
    gira-izquierda;
    avanza;
    si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      deja-zumbador;
      retrocede;
    fin
    fin;
    fin;
  fin;

fin;

    inicia-ejecucion
    inicio
      ubicate;
      mientras junto-a-zumbador hacer
      inicio

        corre;
        orientate;
      fin;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
