iniciar-programa

define-nueva-instruccion gira (n) como inicio
    repetir n veces gira-izquierda;
fin;

define-nueva-instruccion fila (t) como inicio
      si algun-zumbador-en-la-mochila entonces inicio
      deja-zumbador;
      fila (sucede(t));

      fin
      sino inicio
      repetir t veces coge-zumbador;
      mientras derecha-libre hacer inicio
          mientras frente-libre hacer inicio
              si junto-a-zumbador entonces coge-zumbador;
              avanza;

          fin;
si junto-a-zumbador entonces coge-zumbador;
gira (2);
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
      fin;
       mientras frente-libre hacer inicio
              si junto-a-zumbador entonces coge-zumbador;
              avanza;

          fin;
si junto-a-zumbador entonces coge-zumbador;

gira-izquierda;
mientras frente-libre hacer avanza;
gira-izquierda;
mientras frente-libre hacer avanza;                          
gira-izquierda;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
repetir t veces coge-zumbador;
avanza;
gira-izquierda;
mientras algun-zumbador-en-la-mochila hacer inicio
    deja-zumbador;
    deja-zumbador;
    si frente-libre entonces avanza;
fin;
gira-izquierda;
mientras frente-libre hacer avanza;
gira-izquierda;
mientras frente-libre hacer avanza;
gira (2);
mientras junto-a-zumbador hacer coge-zumbador;
mientras algun-zumbador-en-la-mochila hacer inicio
    deja-zumbador;
    si frente-libre entonces avanza;
fin;

      fin;

fin;


    inicia-ejecucion
    mientras no orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    gira (2);
    mientras derecha-libre hacer inicio
        mientras frente-libre hacer inicio
            si junto-a-zumbador entonces inicio
            coge-zumbador;
            si no junto-a-zumbador entonces deja-zumbador sino coge-zumbador;
            fin;

            avanza;
        fin;

            si junto-a-zumbador entonces inicio
            coge-zumbador;
            si no junto-a-zumbador entonces deja-zumbador sino coge-zumbador;
            fin;
         gira (2);
         mientras frente-libre hacer avanza;
         gira-izquierda;
         avanza;
         gira-izquierda;
         fin;

     mientras frente-libre hacer inicio
            si junto-a-zumbador entonces inicio
            coge-zumbador;
            si no junto-a-zumbador entonces deja-zumbador sino coge-zumbador;
            fin;
            avanza;
        fin;

            si junto-a-zumbador entonces inicio
            coge-zumbador;
            si no junto-a-zumbador entonces deja-zumbador sino coge-zumbador;
            fin;

        gira-izquierda;
        mientras frente-libre hacer avanza;
        gira-izquierda;
        mientras frente-libre hacer avanza;
        gira (2);
        fila (0);



        apagate;
    termina-ejecucion
finalizar-programa
