iniciar-programa
define-nueva-instruccion media-Vuelta como repetir 2 veces gira-izquierda;
define-nueva-instruccion gira-Derecha como repetir 3 veces gira-izquierda;

define-nueva-instruccion Amplia(n) como inicio
Si frente-libre y no junto-a-zumbador entonces inicio
avanza;
Amplia(n);
si frente-libre entonces inicio
Repetir n veces
si frente-libre entonces
avanza;
fin;
Sal-de-instruccion;
fin;

Si junto-a-zumbador entonces inicio
mientras junto-a-zumbador hacer inicio
Coge-zumbador;
fin;
Amplia(n);

repetir n veces inicio
Repetir n veces inicio
Deja-zumbador;
si frente-libre entonces inicio
avanza;
fin
sino si frente-bloqueado entonces inicio
media-vuelta;
fin;
fin;

Si orientado-al-norte entonces inicio
media-vuelta;
repetir n veces avanza;
gira-izquierda;

Si frente-libre entonces inicio
avanza; gira-izquierda;
fin;
fin
sino
Si orientado-al-sur entonces inicio
Repetir n veces avanza;
media-vuelta; avanza;
gira-derecha;
(*                      *)
si frente-libre entonces inicio
avanza;
Fin sino inicio
apagate;
fin;

gira-izquierda;
fin;
fin;

si orientado-al-norte entonces inicio
gira-izquierda;
repetir n veces avanza;
gira-derecha;
Sal-de-instruccion;
fin
sino si frente-bloqueado y orientado-al-este entonces inicio
 media-vuelta;
 repetir n veces avanza;
 media-vuelta; avanza; gira-izquierda;
 fin;

fin;

Si frente-bloqueado entonces inicio
media-vuelta;
mientras frente-libre hacer avanza;

Si izquierda-libre entonces inicio
Gira-izquierda; avanza; gira-izquierda;
Amplia(n);
Media-vuelta;
mientras frente-libre hacer inicio
avanza;
fin;
gira-izquierda;
repetir n veces
si frente-libre entonces inicio
avanza;
fin sino inicio
apagate;
fin;
media-vuelta; avanza; media-vuelta;
avanza;
gira-izquierda;
Sal-de-instruccion;
fin
sino si izquierda-bloqueada entonces inicio
Media-vuelta;
mientras frente-libre hacer avanza;
media-vuelta;
fin;
fin;

fin;




define-nueva-instruccion Medida(n) como inicio
 Mientras no junto-a-zumbador y frente-libre y orientado-al-norte hacer inicio
 Avanza;
 fin;
 si frente-bloqueado y no junto-a-zumbador y orientado-al-norte entonces inicio
 media-vuelta;
 mientras frente-libre hacer avanza;
 gira-izquierda;
 si frente-libre entonces inicio
 avanza;
 fin sino inicio
 apagate;
 fin;
 gira-izquierda;
 medida(n);
 fin;
 si junto-a-zumbador entonces inicio
 mientras no orientado-al-este hacer gira-izquierda;
 fin;
  si junto-a-zumbador entonces inicio
  Coge-zumbador;
  medida(sucede(n));
  Fin sino
  inicio
  repetir n veces deja-zumbador;
  mientras frente-libre hacer avanza;
  gira-izquierda;
  mientras frente-libre hacer avanza;
  media-vuelta;
  Amplia(n);
  apagate;
  fin;
  fin;




    inicia-ejecucion
    mientras no orientado-al-norte hacer Gira-izquierda;
    Medida(0);
        apagate;
    termina-ejecucion
finalizar-programa
