Como te dice Kenji-chan, pero precisando un poco más...
Crea un array con las 256 letras, marca con 1 aquellas que pueden convertirse en mayúsculas o minúsculas, el resto queda con valor 0.
Luego tu función simplemente será un bucle, que recorre cada caracter del string, comprueba si está en el array de 'CaracteresCapitalizables' y hace la conversión. Aquí un sencillo opseudocódigo, para resolver ambos casos en la misma función.
Funcion Capitalizar(string Texto, buleano ToUpper)
    Si ToUpper = TRUE
        Por cada letra en el Texto
            Si CaracteresCapitalizables(letra) = 1  // o TRUE, etc...
                ... Toupper, para dicha letra.
            Fin si
        Siguiente
    Sino
        // mismo código, pero aplicando ToLower
    Fin si
Fin funcion
ToUpper
Si Letra and 32 luego  // tiene el bit de minúscula
   Letra = Letra xor 32  // pués se lo quitamos.
Fin si
ToLower:
Letra = Letra or 32 //ponemos el bit de minúsculas... si ya lo tenía, no cambia nada, 
    // no necesitamos en este caso perder el tiempo verificando si lo tenía o no.