ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programacion Logica Y Funcional

sergioreyes1024 de Abril de 2015

5.393 Palabras (22 Páginas)895 Visitas

Página 1 de 22

INSTITUTO TECNOLÓGICO SUPERIOR

DE SAN ANDRÉS TUXTLA

CARRERA:

ING. SISTEMAS COMPUTACIONALES.

DOCENTE:

ISC. LILY A. MEDRANO MENDOZA

NOMBRE DE LA ASIGNATURA:

PROGRAMACIÓN LOGICA Y FUNCIONAL

NOMBRE DEL ALUMNO

CHAGALA AZAMAR ABEL

GRUPO:

804-B

FECHA:

SAN ANDRÉS TUXTLA, VER., 08 DE MARZO DE 2015

ÍNDICE

OBJETIVO 3

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN FUNCIONAL 4

CARACTERÍSTICAS DE LA PROGRAMACIÓN FUNCIONAL 7

LENGUAJE DE PROGRAMACIÓN REPRESENTATIVA 9

DEFINICIÓN DE HASKELL 9

HISTORÍA 9

TIPOS SIMPLES PREDEFINIDOS 10

IMPLEMENTACIONES 11

CARACTERÍSTICAS DE HASKELL 12

PRINCIPIOS DE HASKELL 13

CONSTRUCTORES DE TIPO PREDEFINIDOS 13

FUNCIONES CONSTRUCTORAS Y PATRONES 15

Objetos predefinidos (constantes y funciones) 15

OBJETOS PREDEFINIDOS (CONSTANTES Y FUNCIONES) 16

DEFINICIÓN DE OBJETOS (I) 16

DEFINICIÓN DE OBJETOS (II) 16

DEFINICIÓN DE OBJETOS (III) 17

MÉTODO (I) 17

MÉTODO (II) 17

MÉTODO (III) 18

MÉTODO (IV) 18

MÉTODO (V) 18

DEFINICIÓN DE OBJETOS (IV) 19

OPERADORES 19

NORMAS PARA LA DECLARACIÓN DE OPERADORES 20

ASOCIATIVIDAD Y PRECEDENCIA (II) 20

OPERADORES Y FUNCIONES PREFIJAS 21

HASKELL Y LOS ERRORES 23

LA VELOCIDAD DE HASKELL 24

CONCLUSIÓN 25

REFERENCIAS ELECTRÓNICAS 25

INTRODUCCIÓN

En ciencias de la computación, la programación funcional es un paradigma de programación declarativa basado en la utilización defunciones aritméticas que no maneja datos mutables o de estado. Enfatiza la aplicación de funciones, en contraste con el estilo de programación, que enfatiza los cambios de estado. La programación funcional tiene sus raíces en el cálculo lambda, un sistema formal desarrollado en los años 1930 para investigar la definición de función, la aplicación de las funciones y la recursión. Muchos lenguajes de programación funcionales pueden ser vistos como elaboraciones del cálculo lambda.

Los lenguajes de programación funcional, especialmente los que son puramente funcionales, han sido enfatizados en el ambiente académico principalmente y no tanto en el desarrollo de software comercial. Sin embargo, lenguajes de programación importantes tales como Scheme, Erlang, Rust, Objective Caml y Haskell, han sido utilizados en aplicaciones comerciales e industriales por muchas organizaciones.

El presente trabajo contiene la recopilación de lo que es la programación funcional y se ve a grandes rasgos lo que es el lenguaje de programación funcional Haskell, describiendo cada una de sus características y funciones de este lenguaje.

OBJETIVO

El objetivo del presente trabajo es que el alumno pueda conocer más a fondo sobre lo que son los lenguajes funcionales, en este caso se hablará de Haskell, y pueda profundizar más sus conocimientos acerca de este lenguaje.

CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN FUNCIONAL

Programación funcional: se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático.

Para la mayoría de los desarrolladores de .NET, resulta más fácil comprender lo que es la programación funcional al entender lo que no es. La programación imperativa es un estilo de programación que se considera opuesta a la programación funcional. También es el estilo de programación con el que probablemente ya esté más familiarizado, dado que la mayor parte de los lenguajes de programación estándar son imperativos. La programación funcional y la programación imperativa se diferencian en un nivel muy fundamental y usted puede observarlo hasta en el código más simple:

int number = 0;

number++;

Esto evidentemente aumenta una variable en uno. Eso no es muy fascinante, pero considere una manera diferente en que podría resolver el problema:

const int number = 0;

const int result = number + 1;

number aún se aumenta en uno, pero no cambia de lugar. En vez de eso, el resultado se almacena como otra constante, dado que el compilador no permite modificar el valor de una constante. Se puede decir que las constantes son inmutables debido a que el valor no se puede cambiar una vez definido. A la inversa, la variable number de mi primer ejemplo era mutable, ya que se puede modificar su valor. Estos dos enfoques muestran una de las diferencias fundamentales entre programación imperativa y programación funcional. La programación imperativa pone énfasis en el uso de variables mutables, mientras que la programación funcional usa valores inmutables.

La mayoría de los desarrolladores de .NET indicaría que number y result del ejemplo anterior son variables, pero como programador funcional, se debe ser más cuidadoso. Después de todo, la idea de una variable constante es, en el mejor de los casos, confusa. En su lugar, los programadores funcionales opinan que number y result son valores. Asegúrese de reservar el término “variable” para objetos que sean mutables. Tenga en cuenta que estos términos no son exclusivos de la programación funcional, pero son mucho más importantes al programar en estilo funcional.

Esta distinción puede parecer pequeña, pero es la base para muchos de los conceptos que hacen que la programación funcional sea tan eficaz. Las variables mutables son la causa fundamental de muchos errores desagradables. Como verá a continuación, conducen a dependencias implícitas entre diferentes partes del código, lo que produce muchos problemas, especialmente relacionados con simultaneidad. Por el contrario, las variables inmutables presentan significativamente menos complejidad. Conducen a técnicas funcionales como el uso de funciones como valores y la programación compositiva, que también exploraré en más detalle más adelante. La mayoría de los programadores imperativos están entrenados para creer que es imposible hacer algo útil con valores inmutables. Sin embargo, considere este ejemplo:

string stringValue = "world!";

string result = stringValue.Insert(0, "hello ");

La función Insert compiló la cadena “hello world!”, pero se sabe que Insert no modifica el valor de la cadena de origen. Esto se debe a que las cadenas son inmutables en .NET. Los diseñadores de .NET Framework usaron un enfoque funcional, porque facilitaba escribir mejor código con cadenas. Dado que las cadenas son uno de los tipos de datos que se usan más ampliamente en .NET Framework (junto con otros tipos base, como enteros, DateTimes, etc.), es muy probable que ya haya realizado programación funcional y más útil sin darse cuenta.

Poner F# en funcionamiento

F# viene incluido con Visual Studio 2010 y se puede buscar la versión más reciente en msdn.microsoft.com/vstudio. Si usa Visual Studio 2008, puede descargar un complemento de F# del Centro de desarrolladores de F# en msdn.microsoft.com/fsharp, donde encontrará instrucciones de instalación para Mono.

F# agrega una nueva ventana a Visual Studio llamada F# Interactive que, como su nombre en inglés lo indica, permite ejecutar código F# interactivamente. Puede considerarla una versión más eficaz de la ventana Immediate, a la que puede tener acceso aunque no se encuentre en modo de depuración. Si está familiarizado con Ruby o Python, reconocerá que F# Interactive es un bucle Read-Evaluate-Print (REPL), una herramienta útil para aprender F# y experimentar con código rápidamente.

Usaré F# Interactive en este artículo para demostrar lo que sucede cuando se compila y ejecuta código de ejemplo. Si se resalta código en Visual Studio y se presiona Alt+Intro, el código se envía a F# Interactive. Para ver esto, el siguiente es un ejemplo de adición simple en F#:

let number = 0

let result = number + 1

Cuando se ejecuta este código en F# Interactive, se obtiene lo siguiente:

val number : int = 0

val result : int = 1

Probablemente deduzca por el término val que number y result son valores inmutables, no variables mutables. Puede ver esto mediante <-, el operador de asignación de F#:

> number <- 15;;

number <- 15;;

^^^^^^^^^^^^

stdin(3,1): error FS0027: This value is not mutable

>

Dado que se sabe que la programación funcional se basa en la inmutabilidad, este error debe tener sentido. La palabra clave let se usa para crear enlaces inmutables entre nombres y valores. En términos de C#, todo es const de manera predeterminada en F#. Puede realizar una variable mutable si lo desea, pero debe indicarlo explícitamente. Los valores predeterminados sólo son lo opuesto de aquello con lo que está familiarizado en los lenguajes imperativos:

let mutable myVariable = 0

myVariable <- 15

Inferencia de tipos y distinción de espacios en blanco

F# permite declarar variables y valores sin especificar su tipo, de modo que se podría suponer que F# es un lenguaje dinámico, pero no lo es. Es importante entender que F# es un lenguaje estático, al igual que C# o C++. Sin embargo, F# en un sistema eficaz de inferencia de tipos que permite evitar especificar los tipos de objetos en muchos lugares. Esto permite una sintaxis simple y sucinta y, al mismo tiempo, aún ofrece la seguridad de tipos de los lenguajes estáticos.

Aunque los

...

Descargar como (para miembros actualizados) txt (37 Kb)
Leer 21 páginas más »
Disponible sólo en Clubensayos.com