iniciar-programa

    define-nueva-instruccion gira(n) como
    inicio
       repetir n veces
          gira-izquierda;
    fin;
    define-nueva-instruccion lleva(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          lleva(sucede(n));
       fin
       sino
       inicio
          repetir n veces
             deja-zumbador;
          avanza;
          repetir n veces
             deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion coge1(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          coge1(sucede(n));
       fin
       sino
       inicio
          repetir n veces
             deja-zumbador;
          gira(3);
          avanza;
          gira(3);
          avanza;
          repetir sucede(n) veces
             deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion coge2(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          coge2(sucede(n));
       fin
       sino
       inicio
          repetir n veces
             deja-zumbador;
          gira-izquierda;
          avanza;
          repetir n veces
             deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion compara(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          avanza;
          gira(2);
          si orientado-al-oeste entonces
             compara(sucede(n))
          sino
             compara(n);
          deja-zumbador;
          avanza;
          gira(2);
       fin
       sino
       inicio
          avanza;
          si orientado-al-este entonces
          inicio
             coge1(0);
             repetir n veces
                 deja-zumbador;
             gira(3);
             avanza;
             gira(3);
          fin
          sino
          inicio
             coge2(0);
             repetir n veces
                 deja-zumbador;
             gira(2);
             avanza;
             gira(3);
             avanza;
             gira(2);
          fin;
          avanza;
          gira(2);
       fin;
    fin;
    define-nueva-instruccion trae como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          trae;
          deja-zumbador;
       fin
       sino
       inicio
          gira(2);
          avanza;
       fin;
    fin;
    define-nueva-instruccion burbuja(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          avanza;
          gira(2);
          si orientado-al-este entonces
             burbuja(sucede(n))
          sino     
             burbuja(n);
       fin
       sino
       inicio
          avanza;
          si orientado-al-este entonces
             trae;
          repetir n veces
             deja-zumbador;
       fin;
    fin;
    inicia-ejecucion
       mientras no-orientado-al-este hacer
          gira-izquierda;
       avanza;
       mientras frente-libre y junto-a-zumbador hacer
          avanza;
       si no-junto-a-zumbador entonces
       inicio
          gira(2);
          avanza;
          gira(3);
       fin
       sino
        gira-izquierda;
       mientras frente-libre y junto-a-zumbador hacer
          avanza;
       gira(2);
       si no-junto-a-zumbador entonces
          avanza;
       mientras frente-libre hacer
       inicio
          lleva(0);
          gira(3);
          avanza;
          mientras junto-a-zumbador hacer
          inicio
             gira(3);
             avanza;
             gira(3);
             avanza;
             gira(2);
             compara(0);
             gira(3);
             avanza;
             gira(3);
             avanza;
          fin;
          gira(2);
          avanza;
          mientras frente-libre y junto-a-zumbador hacer
             avanza;
          si no-junto-a-zumbador entonces
          inicio
             gira(2);
             avanza;
             gira-izquierda;
          fin
          sino
            gira(3);
      fin;
      gira(3);
      mientras frente-libre hacer
      inicio
         burbuja(0);
      fin;
        apagate;
    termina-ejecucion
finalizar-programa
