iniciar-programa
  define-nueva-instruccion gi como inicio
  gira-izquierda; fin;
  define-nueva-instruccion gm como inicio
  gira-izquierda; gira-izquierda; fin;
  define-nueva-instruccion gd como inicio
  gira-izquierda; gira-izquierda; gira-izquierda; fin;

  define-nueva-instruccion ho como inicio
  mientras no-orientado-al-norte hacer gi; mientras junto-a-zumbador hacer avanza;
  deja-zumbador; gm; mientras frente-libre hacer avanza; gd; fin;

  define-nueva-instruccion mu como inicio
  gm; avanza; gi; mientras junto-a-zumbador hacer avanza; deja-zumbador; deja-zumbador;
  gm; mientras frente-libre hacer avanza; gd; avanza; fin;

  define-nueva-instruccion ve como inicio
  si (frente-libre o frente-bloqueado) y (orientado-al-norte o orientado-al-sur) entonces inicio
  mientras frente-libre y no-junto-a-zumbador y (orientado-al-norte o orientado-al-sur) hacer avanza;
  si junto-a-zumbador entonces inicio
  coge-zumbador;
  si junto-a-zumbador entonces inicio
  coge-zumbador; ve; mu; fin sino inicio ve; ho; fin; fin;
  si frente-bloqueado y orientado-al-norte y derecha-libre entonces inicio
  gd; avanza; gd; fin;
  si frente-bloqueado y orientado-al-sur y izquierda-libre entonces inicio
  gi; avanza; gi; fin;
  si frente-libre y (orientado-al-norte o orientado-al-sur) entonces inicio
  ve; fin sino inicio si frente-bloqueado y (orientado-al-norte o orientado-al-sur) entonces inicio
  mientras no-orientado-al-sur hacer gi;
  mientras frente-libre hacer avanza; gd; mientras frente-libre hacer avanza; fin;
  fin; fin; fin;

    inicia-ejecucion
    mientras no-orientado-al-sur hacer gi; mientras frente-libre hacer avanza;
    gd; mientras frente-libre hacer avanza; gd;
    ve;
        apagate;
    termina-ejecucion
finalizar-programa
