Programación funcional

A 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.

Composición de funcións

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.

Recursividade

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! chuzame -

0 Responses to “Programación funcional”

  1. No Comments

Leave a Reply





Categories

Calendario

abril 2007
L_Luns_inicial M_martes_inicial M_mércores_inicial X_xoves_inicial V_venres_inicial S_sábado_inicial D_domingo_inicial
« mar    
 1
2345678
9101112131415
16171819202122
23242526272829
30  
3K2 theme by Hakan Aydin