iniciar-programa
define-nueva-instruccion camina como
    inicio
    si frente-libre entonces avanza sino
        inicio
            gira-izquierda;
            camina;
        fin;
    fin;

define-nueva-instruccion camina2 como
    inicio
    si frente-libre entonces avanza sino
        inicio
        mientras no-orientado-al-sur hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        mientras no-orientado-al-este hacer gira-izquierda;
        si frente-libre entonces
            inicio
                avanza;
            mientras no-orientado-al-norte hacer gira-izquierda;
            fin;
        fin;
    fin;

define-nueva-instruccion esquina como
    inicio
    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-este hacer gira-izquierda;
    fin;

define-nueva-instruccion bloques como
    inicio
    si junto-a-zumbador entonces
        inicio
           coge-zumbador;
           bloques;
           deja-zumbador;
        fin sino esquina;
    fin;

define-nueva-instruccion sigue-instruccion como
    inicio
    si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            sigue-instruccion;
            camina;
        mientras no-junto-a-zumbador hacer camina;
        fin;
    fin;

define-nueva-instruccion cuentalos (cuantos) como
    inicio
    si no-orientado-al-este entonces
        inicio
            camina2;
        mientras no-junto-a-zumbador y no-orientado-al-este hacer camina2;
            cuentalos(sucede(cuantos));
        fin sino esquina;
    si si-es-cero (precede(cuantos)) entonces
        inicio
            bloques;
            apagate;
        fin
    sino
        inicio
           sigue-instruccion;
        fin;
    fin;

    inicia-ejecucion
        esquina;
        gira-izquierda;
        cuentalos(0);
        apagate;
    termina-ejecucion
finalizar-programa
