iniciar-programa
   define-nueva-instruccion derecha como inicio
      gira-izquierda;
      gira-izquierda;
      gira-izquierda;
   fin;
   define-nueva-instruccion regresa como inicio
      gira-izquierda;
      gira-izquierda;
   fin;
   define-nueva-instruccion checa(x) como inicio
      si frente-libre entonces inicio
         avanza;
         checa(sucede(x));
      fin;
      si orientado-al-este entonces
         regresa;
      si orientado-al-oeste entonces inicio
         repetir x veces inicio
            si orientado-al-sur entonces inicio
               derecha;
               avanza;
            fin
            sino
            si orientado-al-oeste entonces
               gira-izquierda;
         fin;
         deja-zumbador;
         gira-izquierda;
      fin;
   fin;
   define-nueva-instruccion acaba como inicio
      si orientado-al-sur entonces inicio
         derecha;
         mientras frente-libre hacer
            avanza;
         regresa;
      fin;
      mientras frente-libre y derecha-bloqueada hacer
         avanza;
      si frente-bloqueado y derecha-bloqueada entonces
         gira-izquierda
      sino inicio
         regresa;
         mientras frente-libre hacer
            avanza;
         regresa;
      fin;
   fin;

 inicia-ejecucion
    derecha;
    mientras frente-libre hacer
       avanza;
    regresa;
    acaba;
    mientras no-orientado-al-norte hacer inicio
       acaba;
       si no-orientado-al-norte entonces inicio
          checa(0);
          si frente-libre entonces inicio
             avanza;
             derecha;
             mientras frente-libre hacer
                avanza;
             regresa;
          fin
          sino inicio
             gira-izquierda;
             mientras frente-libre y derecha-bloqueada hacer
                avanza;
             derecha;
             si frente-libre entonces inicio
                avanza;
                derecha;
                mientras frente-libre hacer
                   avanza;
                regresa;
             fin
             sino inicio
                derecha;
                mientras frente-libre hacer
                   avanza;
                gira-izquierda;
                si frente-libre entonces
                   avanza;
             fin;
          fin;

       fin;
    fin;
    gira-izquierda;
    mientras frente-libre hacer
       avanza;
    regresa;
    checa(0);
        apagate;
    termina-ejecucion
finalizar-programa
