iniciar-programa
define-nueva-instruccion voltea como
inicio
    repetir 2 veces gira-izquierda;
fin;
define-nueva-instruccion gira-derecha como
inicio
    repetir 3 veces gira-izquierda;
fin;
define-nueva-instruccion b(x) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;b(sucede(x));
    fin
    sino
    inicio
        repetir x veces deja-zumbador;
        voltea;avanza;repetir x veces coge-zumbador;
        apagate;
    fin;
fin;
define-nueva-instruccion a(x) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;a(sucede(x));
    fin
    sino
    inicio
        repetir x veces deja-zumbador;
        voltea;avanza;mientras junto-a-zumbador hacer
          inicio
              repetir x veces
              inicio
                  si junto-a-zumbador entonces
                  inicio
                      coge-zumbador;
                  fin;
              fin;
              voltea;avanza;avanza;deja-zumbador;voltea;avanza;avanza;
          fin;
          voltea;avanza;avanza;
    fin;
fin;
define-nueva-instruccion medi(x) como
inicio
      si no-junto-a-zumbador entonces
      inicio
              si izquierda-bloqueada entonces
              inicio
                  avanza;medi(sucede(x));
              fin
              sino
              inicio
                  gira-izquierda;avanza;medi(sucede(x));
              fin;
      fin
      sino
      inicio
          mientras frente-libre hacer avanza;
          gira-derecha;mientras frente-libre hacer avanza;
          gira-derecha;repetir x veces deja-zumbador;
          deja-zumbador;
          gira-derecha;avanza;a(0);
          avanza;repetir x veces deja-zumbador;
          deja-zumbador;voltea;avanza;b(0);
      fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-norte hacer gira-izquierda;
    avanza;gira-derecha;avanza;deja-zumbador;avanza;medi(0);
        apagate;
    termina-ejecucion
finalizar-programa
