iniciar-programa
define-nueva-instruccion gira(n) como inicio
repetir n veces gira-izquierda;
fin;
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 intercambia(n) como
    inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
intercambia(sucede(n));
fin
sino
inicio
gira-izquierda;   avanza;
gira-izquierda;  avanza; gira-izquierda;
mientras junto-a-zumbador hacer coge-zumbador;
repetir n veces deja-zumbador;
avanza;
fin;
fin;

define-nueva-instruccion cuenta(n) como
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
cuenta(sucede(n));
fin
sino
inicio
repetir n veces deja-zumbador;
avanza;
repetir n veces
inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
gira-izquierda; avanza; deja-zumbador; repetir 2 veces gira-izquierda; avanza; gira-izquierda;
fin;
fin;
si junto-a-zumbador entonces
    inicio
    gira-izquierda; avanza; mientras junto-a-zumbador hacer coge-zumbador;
    repetir 2 veces gira-izquierda;
    avanza; gira-izquierda;
    repetir n veces
    deja-zumbador;
    fin
    sino
    inicio
    repetir n veces deja-zumbador;
    gira-izquierda;
    avanza;
    intercambia(0);
    fin;
fin;
fin;

 define-prototipo-instruccion proceso;

 define-nueva-instruccion todo(n) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 todo(sucede(n));
 fin
 sino inicio
 repetir n veces deja-zumbador;
 media-vuelta;
 mientras frente-libre hacer inicio
 avanza;
 fin;
 gira-derecha;
 avanza;
 repetir n veces deja-zumbador;
 media-vuelta;
 avanza; gira-izquierda;
 fin;
 fin;


 define-nueva-instruccion suma(n) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 suma(sucede(n));
 fin
 sino inicio
 avanza;
 si junto-a-zumbador entonces inicio
 repetir n veces deja-zumbador;
 Fin sino inicio
 apagate;
 fin;
 Todo(0);

 Mientras no junto-a-zumbador y frente-libre hacer
    inicio
    avanza;
    fin;
    si junto-a-zumbador entonces inicio
    Proceso;
    fin sino inicio
    apagate;
    fin;

 fin;
 fin;



 define-nueva-instruccion mide(n) como inicio
 si frente-libre y junto-a-zumbador entonces inicio
 avanza;
 mide(sucede(n));
 fin sino inicio
 gira(2);
 mientras frente-libre hacer avanza;
 gira(3);
 avanza; avanza; repetir n veces deja-zumbador;
 gira(3);
 fin;
 fin;

  DEFINE-NUEVA-INSTRUCCION Proceso como inicio
  mide(0);
    mientras junto-a-zumbador hacer
    inicio
    coge-zumbador;
    mientras no-orientado-al-sur hacer
    gira(3); avanza; avanza;
    gira-izquierda;
    mientras no-junto-a-zumbador hacer
    avanza;
        mientras junto-a-zumbador hacer
            inicio
        avanza;
        si junto-a-zumbador entonces
        inicio
        gira-izquierda;
        gira-izquierda;
        avanza;
        gira-izquierda;
        gira-izquierda;
        fin;
        cuenta(0);
            fin;
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira(3); avanza; avanza; gira(3);
    fin;
    mientras no orientado-al-sur hacer inicio
    gira-izquierda;
    fin;

    mientras frente-libre hacer inicio avanza; fin;
    gira-izquierda;
    Mientras no junto-a-zumbador y frente-libre hacer
    inicio
    avanza;
    fin;
    si junto-a-zumbador entonces inicio
    Suma(0);
    fin sino inicio
    apagate;
    fin;

    fin;



    inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
    proceso;




        apagate;
    termina-ejecucion
finalizar-programa

