iniciar-programa

    define-nueva-instruccion vertical(m) como
    inicio
       si frente-libre entonces
          inicio
          avanza;
          vertical(sucede(m));
          fin
       sino
          inicio
          coge-zumbador;
          gira-izquierda;
          gira-izquierda;
          repetir m veces
             avanza;
          repetir 3 veces
             gira-izquierda;
          fin;
    fin;


    define-nueva-instruccion horizontal(n) como
    inicio
        si frente-libre entonces
           inicio
           avanza;
           horizontal(sucede(n));
           avanza;
           fin
        sino
           inicio
              gira-izquierda;

              vertical(0);
           fin;
    fin;

    inicia-ejecucion
        mientras no-orientado-al-norte hacer
           gira-izquierda;
        mientras izquierda-bloqueada hacer
           avanza;

        gira-izquierda;
        horizontal(0);
        repetir 3 veces
           gira-izquierda;
        mientras frente-libre hacer
           avanza;
        deja-zumbador;   
        apagate;
    termina-ejecucion
finalizar-programa
