Programación funcional
Published by Xosé Otero abril 3rd, 2007 in Teoría, TitorialA programación funcional consiste na utilización do concepto matemático de función. As funcións son estructuras que aceptan cero ou máis parámetros de entrada e devolver só un parámetro coma saída. As fncións só poden modifica-los parámetros de entrada e nunca datos externos a elas, polo que se evitan efectos colaterais ó chamalas. Grazas a estas características, o código é sinxelo de ler e facilmente reutilizable. As operacións básicos que se poden efectuar na programación funcional son a composición de funcións e a recursividade.
Exemplos de linguaxes funcionais son Lisp, Scheme e Haskell.
A composición de funcións é a operación fundamental na programación funcional. A composición de funcións consiste en empregar como parámetros dunha función outras funcións. Por exemplo, supoñendo as funcións f e g, a operación f(g()) executa a función g e pásalle o resultado á f como parámetro.
Unha función recursiva é aquela que se chama a si mesma para obte-lo resultado. Para os problemas de natureza recursiva o emprego de funcións recursivas é evidente.
Por exemplo, o factorial de n defínese coma a multiplicación de n polo factorial de n - 1, é dicir n! = n * (n - 1)!. O xeito de codificar o factorial sería:
FUNCIÓN factorial(n)
SE n = 0
ENTÓN resultado = 1
SENÓN resultado = n * factorial(n - 1)
FinSE
FinFUNCION
A maioría de problemas son iterativos, é dicir, un conxunto de instruccións atópanse nun bucle que se executa ata que se produce unha condición de saída. Aínda que a natureza dun problema non sexa recursiva, sempre se poderá codificar recursivamente, igual que os problemas recursivos se poden codificar iterativamente.
Por exemplo, a solución á suma dos primeiros n números enteiros é en principio iterativa. A solución iterativa sería ir sumando tódolos números dende o 1 ata n e a condición de saída sería que alcanzásemos o número dado.
FUNCIÓN suma_ata(n)
resultado = 0
MENTRES n > 0
resultado = resultado + n
n = n - 1
FinMENTRES
FinFUNCIÓN
Esta función iterativa pódese convertir en recursiva do seguinte xeito:
FUNCIÓN suma_ata(n)
SE n <= 0
ENTÓN suma_ata = 0
SENÓN suma_ata = n + suma_ata(n - 1)
FinSE
FinFUNCIÓN
chuzame -
0 Responses to “Programación funcional”
Please Wait
Leave a Reply