iniciar-programa

define-nueva-instruccion pinta(n) como inicio


si junto-a-zumbador entonces inicio
coge-zumbador;
pinta(sucede(n));
fin
sino inicio
si  frente-libre entonces  avanza;
si junto-a-zumbador entonces inicio
pinta(0);
fin
sino inicio
  mientras no orientado-al-este  hacer gira-izquierda;
  si frente-libre entonces avanza;
  deja-zumbador;
 fin;

                     si si-es-cero(PREcede(n)) entonces
                     mientras no-orientado-al-norte hacer gira-izquierda;


                                        si si-es-cero(precede(precede(n))) entonces
                                        mientras no orientado-al-sur hacer gira-izquierda;

                                        si si-es-cero(precede(precede(precede(N)))) entonces
                                        mientras no orientado-al-este hacer gira-izquierda;
                                                    si frente-libre  entonces avanza;
                                          si no-junto-a-zumbador entonces deja-zumbador;


                                          fin;
                                        fin;


            define-nueva-instruccion pintas como inicio

           mientras derecha-libre hacer inicio
          mientras frente-libre y no junto-a-zumbador  hacer avanza;
          si junto-a-zumbador entonces inicio
          mientras frente-libre hacer inicio
          si frente-libre entonces  avanza;
          si no-junto-a-zumbador entonces deja-zumbador;
          fin;
          fin;
          si frente-bloqueado  entonces inicio
          mientras no-orientado-al-norte hacer gira-izquierda;
          mientras frente-libre hacer avanza;
          mientras no-orientado-al-oeste hacer gira-izquierda;
          si frente-libre entonces avanza;
          mientras no orientado-al-sur hacer gira-izquierda;
          fin;
          fin;
          fin;



        define-nueva-instruccion cuenta(n) como inicio
        si izquierda-libre y no-orientado-al-sur entonces inicio
        si junto-a-zumbador y no orientado-al-sur entonces inicio
        si frente-libre entonces avanza;
        si junto-a-zumbador entonces cuenta(sucede(n));
        si no-junto-a-zumbador entonces cuenta(sucede(n));
        fin
        sino inicio
        mientras no junto-a-zumbador y frente-libre hacer avanza;
      si frente-libre entonces cuenta(N);
        si frente-bloqueado y no-orientado-al-sur entonces inicio
        mientras no orientado-al-norte hacer gira-izquierda;
        si frente-libre entonces avanza;
        mientras no-orientado-al-oeste hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        mientras no-orientado-al-este hacer gira-izquierda;
        cuenta(n);
        fin;
        fin;
        fin
        sino inicio
        mientras no orientado-al-sur hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        si no-junto-a-zumbador entonces inicio
        repetir n veces deja-zumbador;
        fin
        sino inicio
        sal-de-instrucCion;
        fin;
        fin;
          fin;

    inicia-ejecucion
 mientras no orientado-al-este  hacer gira-izquierda;
 mientras no junto-a-zumbador y frente-libre hacer avanza;
  mientras junto-a-zumbador y frente-libre  hacer avanza;
       mientras no orientado-al-oeste  hacer gira-izquierda;
         mientras no junto-a-zumbador y frente-libre  hacer avanza;
         si junto-a-zumbador entonces inicio
 pinta(0);
 mientras no orientado-al-oeste  hacer gira-izquierda;
         mientras frente-libre hacer  avanza ;
         mientras no orientado-al-este hacer gira-izquierda;

        si frente-libre entonces avanza;
        mientras junto-a-zumbador y frente-libre hacer avanza;
mientras frente-libre   hacer avanza;
     mientras no orientado-al-norte hacer gira-izquierda;
     mientras frente-libre hacer avanza;
     mientras no-orientado-al-sur hacer gira-izquierda;
     pintas;
mientras frente-libre hacer avanza;
mientras no orientado-al-este hacer gira-izquierda;
cuenta(0);
      fin
      sino  inicio
     gira-izquierda;
            gira-izquierda;
            deja-zumbador;
            si frente-libre entonces  avanza;
             deja-zumbador;
             fin;
        apagate;
    termina-ejecucion
finalizar-programa


