Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRosa Imelda Chi Modificado hace 7 años
1
MTI. Rosa Imelda García Chi Programación Lógica y Funcional PLYF UNIDAD 1. Conceptos Fundamentales 1.1 Estilos de Programación Enero-Junio 2018
2
MTI. Rosa Imelda García Chi Programación Lógica y Funcional 1.1. ESTILOS DE PROGRAMACIÓN PROGRAMACIÓN LÓGICA FUNCIONAL
3
MTI. Rosa Imelda García Chi Programación Lógica y Funcional 1.1. Estilos de Programación
4
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Variedad de estilos de programación Los muchos lenguajes de programación existentes se pueden clasificar según el estilo de programación que soportan. Los principales estilos (también llamados paradigmas) de programación son el imperativo, el declarativo y el orientado a objetos. Generalmente, el estilo orientado a objetos aparece en lenguajes de base imperativa, enriquecidos con las nociones de objeto, clase y herencia.
5
MTI. Rosa Imelda García Chi Programación Lógica y Funcional El estilo declarativo es muy diferente del imperativo, y bastante próximo al nivel de abstracción de los lenguajes de especificación. Incluye los lenguajes de programación funcional y los lenguajes de programación lógica, objeto de este curso.
6
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Lenguajes de Programación Imperativos Pascal, Ada, C, C++, Java y muchos otros lenguajes de programación son imperativos. Un programa consiste en una secuencia de órdenes que se ejecutan una tras otra, modificando los valores de variables por medio de asignaciones. Por ejemplo, la asignación x:=x+1, incrementa en 1 el valor de la variable entera x.
7
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Funciones El concepto de Función viene de las matemáticas. Una función f es una transformación que se puede aplicar a unos datos iniciales x1,…,xn llamados argumentos o parámetros, y devuelve un dato final y=f(x1,…,xn) llamado resultado
8
MTI. Rosa Imelda García Chi Programación Lógica y Funcional La mayoría de los lenguajes de programación disponen de funciones predefinidas para realizar diversas operaciones matemáticas (aritméticas, trigonométricas, etc.), así como de recursos que permiten a los usuarios definir otras funciones para propósitos específicos.
9
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Por ejemplo, la siguiente función escrita en Pascal calcula la suma de los cuadrados de los números enteros positivos comprendidos entre 1 y n.
10
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
11
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Naturalmente, las funciones utilizadas en programación no siempre operan con objetos matemáticos. Por ejemplo, para su aplicación de procesamiento de textos se podría diseñar una función de formateo. Sus parámetros serían un texto sin formatear junto con información acerca de cómo procesarlo, mientras que su resultado sería un texto formateado.
12
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Lenguajes de Programación Funcionales Los programas imperativos contienen asignaciones y otras construcciones que controlan el orden de ejecución, tales como bucles y llamadas a procedimientos.
13
MTI. Rosa Imelda García Chi Programación Lógica y Funcional …Lenguajes de Programación Funcionales En un lenguajes funcional, un programa contiene únicamente definiciones de funciones. Concretamente, en el lenguaje funcional Haskell las funciones se definen por medio de ecuaciones, declarando los tipos de parámetros y de su resultado.
14
MTI. Rosa Imelda García Chi Programación Lógica y Funcional …Lenguajes de Programación Funcionales Por ejemplo, las siguientes funciones sirven para calcular el cuadrado de un número entero y el máximo entre dos números enteros respectivamente. Obsérvese que cada una de las dos ecuaciones de max tiene asocia una condición:
15
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
16
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
17
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
18
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
19
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
20
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
21
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Características de los Lenguajes Funcionales Las funciones definidas en un lenguaje imperativo pueden causar efectos colaterales. Por ejemplo, la siguiente función Pascal incrementa en 1 el valor de la variable global m cada vez que es ejecutada:
22
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
23
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Los efectos colaterales hacen más impredecibles el comportamiento de los programas. Por ejemplo, los dos fragmentos de código Pascal que se muestran a continuación parecen equivalentes a primera vista. Sin embargo, debido al efecto sobre m causado por la evaluación de siguiente(x), el valor final de la variable y es 1 tras la ejecución del primer fragmento de código y 2 tras la ejecución del segundo fragmento.
24
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
25
MTI. Rosa Imelda García Chi Programación Lógica y Funcional En Lenguajes Funcionales puros como Haskell, no existe la asignación destructiva. Por este motivo, las variables se comportan como en matemáticas. No cambian de valor, y el resultado de evaluar una expresión cualquiera siempre es el mismo, independientemente del orden de evaluación.
26
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Otras características importantes de los lenguajes funcionales puros son: Nivel de abstracción alto Disciplina estática de tipos Polimorfismo Funciones de orden superior Evaluación perezosa Gestión automática de la memoria
27
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Nivel de abstracción alto: Los programas están próximos a la lógica de los problemas a resolver, ignorando los detalles de bajo nivel. Las ecuaciones de un programa sirven para calcular y también para razonar.
28
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Disciplina estática de tipos: Los errores debidos a tipos incorrectos se detectan antes de la ejecución.
29
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Polimorfismo: Se pueden programar funciones que operan para datos de cualquier tipo. Por ejemplo, la función que calcula la longitud de una lista no depende del tipo de los elementos.
30
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Funciones de orden superior: Se permite que los parámetros y/o el resultado de una función f sea a su vez funciones. En este caso, se dice que f es una función de orden superior.
31
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Evaluación perezosa: Al calcular el valor de una expresión, se evitan automáticamente todos los cálculos innecesarios
32
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Gestión automática de la memoria: La memoria que se va necesitando para el cómputo es asignada automáticamente en tiempo de ejecución. Un sistema de recogida de basura (garbage collection) recupera automáticamente la memoria asignada que deja de ser necesaria.
33
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Ventajas de la programación funcional Algunas ventajas importantes de la programación funcional son: Brevedad y Claridad SeguridadReusabilidadComposicionalidad
34
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
35
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
36
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
37
MTI. Rosa Imelda García Chi Programación Lógica y Funcional
38
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Inconvenientes de la programación funcional La programación funcional también tiene inconvenientes, algunos de ellos son: ExotismoIneficiencia Comportamiento complejo Falta de apoyo a los usuarios
39
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Exotismo: El estilo funcional es menos conocido que el imperativo. Hace falta un esfuerzo para adaptarse a una nueva manera de pensar
40
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Ineficiencia: Los programas funcionales no permiten controlar detalles de bajo nivel. En general, su ejecución es más lenta y consume más memoria que en el caso imperativo
41
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Comportamiento complejo: La evaluación perezosa efectúa los cálculos en un orden difícil de predecir. Esto no dificulta la programación en sí misma, pero si dificulta el análisis de la eficiencia de los programas. A veces es difícil estimar el tiempo y el espacio requeridos para el cómputo.
42
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Falta de apoyo a los usuarios: En particular, faltan herramientas que soporten la depuración, la evaluación del rendimiento y la transformación de programas. Las implementaciones existentes de lenguajes funcionales en general carecen de un entorno de programación que facilite el desarrollo y mantenimiento de programas.
43
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Aplicaciones de la programación funcional
44
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Aplicaciones de la programación funcional Aunque la programación funcional no es tan popular como otros estilos de programación, la experiencia ha demostrado su utilidad para diversas aplicaciones.
45
MTI. Rosa Imelda García Chi Programación Lógica y Funcional …Aplicaciones de la programación funcional El uso de lenguajes de la familia del LISP es tradicional en aplicaciones relacionadas con la inteligencia Artificial. Existen además otras experiencias industriales de uso de lenguajes funcionales, tanto para el desarrollo rápido de prototipos como para el mantenimiento de aplicaciones estables.
46
MTI. Rosa Imelda García Chi Programación Lógica y Funcional …Aplicaciones de la programación funcional Muchos lenguajes funcionales, en particular HASKELL, están diseñados para soportar tanto el cálculo simbólico como el numérico, y disponen de mecanismos para comunicarse con programas escritos en lenguajes imperativos tales como C y C++.
47
MTI. Rosa Imelda García Chi Programación Lógica y Funcional En http://www.haskell.org/practice.html se encuentra información sobre algunas aplicaciones informáticas relevantes, desarrolladas con lenguajes funcionales.http://www.haskell.org/practice.html
48
MTI. Rosa Imelda García Chi Programación Lógica y Funcional Familias de Lenguajes Funcionales
49
MTI. Rosa Imelda García Chi Programación Lógica y Funcional …Familias de Lenguajes Funcionales
50
MTI. Rosa Imelda García Chi Programación Lógica y Funcional ¡Por su atención gracias!
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.