iniciar-programa
    define-nueva-instruccion gira(n) como
    inicio
       repetir n veces
          gira-izquierda;
    fin;
    define-nueva-instruccion acaba como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          acaba;
          deja-zumbador;
       fin
       sino
          avanza;
     fin;
     define-nueva-instruccion resta(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           resta(sucede(n));
           deja-zumbador;
       fin
       sino
       inicio
          avanza;
           repetir n veces
              coge-zumbador;
             gira(2);
           avanza;
       fin;
    fin;
    define-nueva-instruccion otro(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          si no si-es-cero(n) entonces
          inicio
             coge-zumbador;
             otro(precede(n));
             deja-zumbador;
          fin
          sino
             gira(2);
       fin
       sino
       inicio
          si si-es-cero(n) entonces
             gira(1);

       fin;
    fin;
    define-nueva-instruccion compara(n) como
    inicio
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          compara(sucede(n));
          deja-zumbador;
       fin
       sino
       inicio
          avanza;
          otro(n);
          si orientado-al-este entonces
          inicio
             gira(2);
             avanza;
             gira(2);
          fin
          sino
           si orientado-al-oeste entonces
          inicio
             avanza;
          fin
          sino
          inicio
            gira(3);
            acaba;
            apagate;
          fin;
       fin;
    fin;
    define-nueva-instruccion mcd como
    inicio
        mientras frente-libre o frente-bloqueado hacer
        inicio
           mientras no-orientado-al-oeste hacer
              gira-izquierda;
           mientras frente-libre hacer
               avanza;
           gira(2);
           compara(0);
           si orientado-al-este entonces
           inicio
              avanza;
              gira(2);
           fin
           sino
              gira(2);
           resta(0);
        fin;
    fin;
    inicia-ejecucion
       mientras no-orientado-al-oeste hacer
          gira(1);
       mientras frente-libre hacer
          avanza;
       gira(1);
       mientras frente-libre hacer
          avanza;
       gira(1);
       mcd;
       apagate;
    termina-ejecucion
finalizar-programa
