5 - Paradigma funcional

[editar]
Curso gratis creado por Rafael Menéndez-Barzanallana Asensio. Extraido de: http://www.um.es/docencia/barzana
30 de Noviembre de 1999
El paradigma funcional está basado en el modelo matemático de composición funcional. En este modelo, el resultado de un cálculo es la entrada del siguiente, y así sucesivamente hasta que una composición produce el valor deseado.
No existe el concepto de celda de memoria que es asignada o modificada. Más bien, existen valores intermedios que son el resultado de cálculos anteriores y las entradas a cálculos subsiguientes. Tampoco existen sentencias imperativas y todas las funciones tienen transparencia referencial.
La programación funcional incorpora el concepto de función como objeto de primera clase, lo que significa que las funciones se pueden tratar como datos (pueden pasar como parámetros, calculadas y devueltas como valores normales, y mezcladas en el cálculo con otras formas de datos).
En este paradigma el informático concibe la solución como una composición de funciones. Por ejemplo, para ordenar una lista, se puede diseñar la solución como una concatenación de listas más pequeñas, cada una de las cuales ya está clasificada. Esto reduce el problema a seleccionar las listas más pequeñas.
La forma en que se especifican las funciones puede variar. Se pueden especificar procedimentalmente o matemáticamente mediante su definición, sin secuencia de control.
Un ejemplo de lenguaje que soporta la forma procedimental del paradigma funcional, es el COMMONLISP, considerado como el estándar del lenguaje de programación LISP. Se ha desarrollado como un lenguaje funcional procedimental, y que admite ambos tipos de construcciones: la composición funcional con transferencia referencial y la asignación de variables con secuencias de control en la ejecución del programa.
El lenguaje LISP ("List Procesing") fue diseñado por John McCarthy, en 1959, en el Instituto Tecnológico de Masachussets, incorporando los siguientes elementos en su expresión más simple:

a) Funciones primitivas predefinidas:
Tratamiento de listas

CAR Devuelve la cabeza de la lista
CDR Devuelve la cola de la lista
CONS Construye una lista CONS a partir de otras dos
LIST Construye una lista a partir de varias sublistas

Asignación, relaciones booleanas y predicados


SET y SETQ Evalúan sus argumentos
EQ Comprueba si dos argumentos son iguales
GREATERP y LESSP Compara si el arg 1 es mayor/ menor que el 2
NULL Comprueba si la lista es nula
ATOM LISTP NUMBERP Averiguan el tipo de un objeto
OR, AND y NOT Predicados de suma, multiplicación y negación

Aritméticas


PLUS, DIFERENCE, TIMES, QUOTIENT, REMAINDER Suma, resta, multiplicación, cociente, resto


Condicionales e iterativas

COND Condicional con varios predicados
LOOP Función iterativa no declarativa

b) Formas funcionales para crear y combinar funciones


DEFUN Función que permite crear otras funciones


c) Objetos de datos

LISP dispone de esta estructura como fundamental
Un programa LISP utiliza://---
Atomos Cadenas de números o caracteres


Identificadores Son átomos no numéricos

Seguidamente se presentan en LISP dos ejemplos. El primero sirve para comprobar si un número es primo o no; el segundo ordena de forma ascendente una lista de datos.




|| Primo
Determina si un número es primo o no
(DEFUN PRIMO(N)
COND((EQ N 2) T) ((EQ N 3) T)
(T (PRIMO1 N (QUOTIENT N 2)))))
(DEFUN PRIMO1 (N Y)
COND((EQ (REMAINDER N Y) 0) NIL)
((EQ Y 2) T)
(T (PRIMO1 N (DIFERENCE Y 1))))
Y al ejecutarlo, por ejemplo se tendría,
(PRIMO 3) T
(PRIMO 8) NUL
Ordena
Ordena de forma ascendente los elemento de una lista
DEFUN ORDENAR (LISTA)
COND((NULL LISTA) NIL)
(T (CONS (CAR (INVERSO (BURBUJA LISTA)))
(ORDENAR (CDR(INVERSO (BURBUJA LISTA))))))))
(DEFUN BURBUJA (LISTA)
(COND((NULL (CDR LISTA)) LISTA)
((GRATERP (CAR LISTA) (CADR LISTA))
(CONS (CAR LISTA) (BURBUJA (CDR LISTA))))
(T (CONS (CADR LISTA)
(BURBUJA (CONS (CAR LISTA) (CDDR LISTA)))))))
||





y al ejecutarse se tendría, por ejemplo,

(ORDENAR 20 8 1 3) (1,3,8,20)

la función INVERSO invierte la lista
[editar]

24 opiniones

LAPOBREZA

POBRE YPOBRE
Paradigmas.

Muy bueno el material que en cierta parte es completo. Por lo menos consegui los otros paradigmas que buscaba.
El tema es muy bueno hay que aportar señores.

Muy pronto creare uno similar con las metodoligas existentes:
- metrica 3
- notacion uml
- ingenieria web
- ingenieria software
- cocomo estimación tiempo y costo
+ herramientas case
+etc.
Metodologia usada en ingenierìa del software'(20).

Quisiera saber como se maneja la ingenieria del software ya que para mi es muy importante en lo personal. Gracias.
Metodologias.

Este articulo esta muy bueno pero opino que deberian tratar de abordar la mayor parte de las metodologias existentes.
1 2 3 4 5 | siguiente >

Cursos gratis relacionados con 'Metodologías usadas en ingeniería del software'

Un sistema informático utiliza ordenadores para almacenar datos, procesarlos y ponerlos a disposición de quien... Más »

Autor y licencia de 'Metodologías usadas en ingeniería del software'


Curso gratis de Rafael Menéndez-Barzanallana Asensio. Extraido de: http://www.um.es/docencia/barzana CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.