iniciar-programa
define-nueva-instruccion identifica(x) como
inicio
      si junto-a-zumbador entonces
      inicio
      coge-zumbador;
      identifica(precede(x));
      fin;
      si si-es-cero(x) entonces
      inicio
      repetir 9 veces
      deja-zumbador;
      fin;
fin;
define-nueva-instruccion recoge como
inicio
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    mientras frente-libre hacer
    inicio
    si junto-a-zumbador entonces
    identifica(9);
    si frente-libre entonces
    avanza;
    si junto-a-zumbador entonces
    identifica(9);
    fin;
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mientras no-orientado-al-este hacer
    gira-izquierda;
    si frente-libre entonces
    avanza;
fin;
define-nueva-instruccion resguarda como inicio
mientras no-orientado-al-norte hacer inicio
gira-izquierda;
fin;
si frente-libre y orientado-al-norte entonces inicio
avanza;
deja-zumbador;
gira-izquierda;
si frente-libre y orientado-al-oeste entonces inicio
avanza;
deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
fin;
si frente-bloqueado y orientado-al-oeste entonces inicio
repetir 2 veces gira-izquierda;
fin;
si frente-libre y orientado-al-este entonces inicio
avanza;
deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
repetir 3 veces gira-izquierda;
fin
sino
    inicio
    gira-izquierda;
    fin;
repetir 2 veces gira-izquierda;
avanza;
repetir 2 veces gira-izquierda;
fin;
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
si frente-libre y orientado-al-oeste entonces inicio
avanza;
deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
fin;
mientras no-orientado-al-este hacer inicio
gira-izquierda;
fin;
si frente-libre y orientado-al-este entonces inicio
avanza;
deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
repetir 3 veces gira-izquierda;
fin;
mientras no-orientado-al-sur hacer inicio
gira-izquierda;
fin;
si frente-libre y orientado-al-sur entonces inicio
avanza;
deja-zumbador;
mientras no-orientado-al-este hacer inicio
gira-izquierda;
fin;
si frente-libre y orientado-al-este entonces inicio
avanza;
deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
fin;
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
si orientado-al-oeste y frente-libre entonces inicio
avanza;
deja-zumbador;
repetir 2 veces gira-izquierda;
avanza;
gira-izquierda;
avanza;
fin;
si frente-bloqueado y orientado-al-oeste entonces inicio
repetir 3 veces gira-izquierda;
avanza;
fin;
fin;
si frente-bloqueado y orientado-al-sur entonces inicio
mientras no-orientado-al-norte hacer inicio
gira-izquierda;
fin;
fin;
fin;
define-nueva-instruccion verifica(x) como
inicio
      si junto-a-zumbador entonces
      inicio
      coge-zumbador;
      verifica(precede(x));
      deja-zumbador;
      fin;
      si si-es-cero(x) entonces
      inicio
      resguarda;
      fin;
fin;
define-nueva-instruccion cerca-minas como inicio
mientras no-orientado-al-norte hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
si junto-a-zumbador entonces inicio
verifica(9);
fin;
avanza;
si frente-bloqueado y orientado-al-norte entonces inicio
verifica(9);
repetir 2 veces gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
apagate;
fin;
si frente-bloqueado y orientado-al-sur entonces inicio
repetir 3 veces gira-izquierda;
si frente-libre entonces inicio
avanza;
fin;
repetir 3 veces gira-izquierda;
fin;
fin;
fin;
inicia-ejecucion
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
mientras no-orientado-al-sur hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
mientras no-orientado-al-norte hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer
recoge;
recoge;
si frente-bloqueado y derecha-bloqueada entonces inicio
cerca-minas;
fin;
      apagate;
    termina-ejecucion
finalizar-programa
 