Download apuntes de la unidad 2.1 matp-02
Document related concepts
Transcript
A) ¿Qué es la programación funcional? B) Diagrama C) características 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 imperativa, que enfatiza los cambios de estado. D) Lenguajes funcionales Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus sub expresiones), y por tanto, la carencia total de efectos colaterales. Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas). Lenguaje Hope • El lenguaje funcional Hope puede considerarse como una notación para escribir programas en forma de expresiones funcionales. • Una expresión puede estar constituida por un conjunto de símbolos básicos como: -,+, >, (, 2, Lenguaje F# E) El título de este artículo se muestra incorrectamente debido a limitaciones técnicas. El título correcto es F#. PROGRAMACION FUNCIONAL RECURSIVIDAD Programación recursividad F# (pronunciado F Sharp) es un lenguaje de programación multi 1 paradigma de código abierto, para la plataforma .NET, que conjunta la programación funcional con las disciplinas imperativa y orientada a objetos. funcional CON con Un tipo indica un conjunto de valores que tienen el mismo significado genérico o propósito (aunque algunos tipos, como los tipos de datos abstractos y tipos de datos función, tal vez no representen valores en el programa que se está ejecutando). Técnica de programación recursiva: Ves la forma en la cual se especifica un proceso basado en su propia definición. Siendo un poco más precisos, y para evitar el aparente círculo sin fin en esta definición: Un problema que pueda ser definido en función de su tamaño, sea este N, pueda ser dividido en instancias más pequeñas (< N) del mismo problema y se conozca la solución explícita a las instancias más simples. 1 Lenguaje CAMEL Camel Case es un estilo de escritura que se aplica a frases o palabras compuestas. El nombre se debe a que las mayúsculas a lo largo de una palabra en Camel Case se asemejan a las jorobas de un camello. El nombre Camel Case se podría traducir como Mayúsculas/Minúsculas Camello. El término case se traduce como "caja tipográfica", que a su vez implica si una letra es mayúscula o minúscula y tiene su origen en la disposición de los tipos móviles en casilleros o cajas. modelos de evaluación: sistema de tipos: EJEMPLO: Lisp (o LISP) es una familia de lenguajes de programación de computadora de tipo multi paradigma con una larga historia y una sintaxis completamente entre paréntesis. Evaluación es el proceso sistemático de recolección y análisis de datos con la finalidad de determinar si es que, y hasta qué punto, unos objetivos han sido o están siendo logrados. La información resultante se pone al servicio de la toma de decisiones. clases de tipos: El sistema de tipos de Haskell posee una característica que lo distingue de otros lenguajes de programación. El tipo de polimorfismo del que hemos tratado hasta ahora es denominado polimorfismo paramétrico. Existe otro tipo de polimorfismo llamado ad hoc o sobrecarga. Estos son algunos ejemplos de polimorfismo ad hoc Ves una descripción informal1 de alto nivel de un algoritmo informático de programación, compacto e informal, que utiliza las convenciones estructurales de un lenguaje de programación pero que está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con independencia de cualquier otro lenguaje de programación. PRÁCTICA 8 unidad 2.1 Unidad de Aprendizaje: Práctica: 8 Programación en pseudocódigo con técnicas de lenguajes de programación Calcula el valor factorial de un número utilizando función factorial Propósito de la práctica: Elaborará un programa en pseudocódigo mediante una llamada a función para la obtención del valor factorial de un número. Escenario: Laboratorio de informática Escribe el siguiente pseudocódigo en Word, lo conviertes a su algoritmo y en la prueba de escritorio, de acuerdo a la definición de factorial de un número y del ejemplo, realiza en la calculadora de tu equipo los siguientes factoriales y los anotas en el recuadro //Pseudocódigo de la función factorial recursiva //función factorial recursiva FACTORIAL (X): Inicio_ factorial Si X=0 Entonces FACTORIAL =1 Si no FACTORIAL = X* FACTORIAL (X-1) Fin_si Fin_factorial //programa que obtiene valores del factorial (X) Inicio leer el número (X) mientras haya_números si X> = 0 Entonces RESULTADO = FACTORIAL (X) Mostrar RESULTADOS Si no Mostrar <<el numero X es negativo>> Fin_si < Leer un número (X) Fin_mientras fin Factorial de 6, 7, 8, 9, 10 Algoritmo Prueba de escritorio ¿Qué es factorial de un número? El factorial de un entero positivo n, el factorial de n o n factorial se define en principio como el producto de todos los números enteros positivos desde 1 (es decir, los números naturales) hasta n. Por ejemplo, 6 9 7 10 8 11 Elaborar un cuadro sinóptico de diez características de los lenguajes de programación orientada a objetos 2 Cómo se piensa en objetos Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modernizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar. Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar. Por poner otro ejemplo vamos a ver cómo modelaríamos en un esquema POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2.La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc. Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de matemáticas harás uso de objetos fracción y en un programa que gestione un taller de coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc. Clases en POO Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque por encima, sus formas. Propiedades en clases Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos. Métodos en las clases Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto. Objetos en POO Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar (que viene de una mala traducción de la palabra instace que en inglés significa ejemplar). Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto. Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto. miCoche = new Coche() Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el objeto de la clase coche. Estados en objetos Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado. Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto. miCoche.color = rojo El objeto es miCoche, luego colocamos el operador punto y por último el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignación. Mensajes en objetos Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje “ ponte en marcha” . Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar. miCoche.ponerseEnMarcha() 3 4