No tengo ni idea de maple pero no tiene pinta de ser muy difíciles los problemas que dices:
buscar( int n, array ls ):
devolver ls[n]
caesarshift(int n):
int i = 0
array ls = [];
para i=0:LETRAS_ALFABETO:1
letra = buscar( (i+n) mod LETRAS_ALFABETO, [a,b,c,d,e...,y,z] )
añadir(letra, ls)
devolver ls
buscarLista( char c, array ls):
int i = 0
para cada elemento en ls
si elemento = c
devolver i
i++
devolver -1
descaesarchar( char c, int n ):
array ls = [a,b,c,...,y,z]
int i = buscarLista(c, ls)
devolver buscar( i, caesarshift( (-n + LETRAS_ALFABETO) mod LETRAS_ALFABETO ) )
caesarchar( char c, int n ):
array ls = [a,b,c,...,y,z]
int i = buscarLista(c, ls)
devolver buscar( i, caesarshift( n ))
El descaesarchar no tengo muy claro que funcione!

Intenta traducir eso a la sintaxis apropiada que confio en que te conozcas.