paradigm as

35
 Paradigmas de Programación CYPLP

Upload: leonel-luchini

Post on 02-Nov-2015

214 views

Category:

Documents


0 download

DESCRIPTION

Paradigm As

TRANSCRIPT

  • Paradigmas de ProgramacinCYPLP

  • PARADIGMAS

    Un paradigma de programacin es un estilo de desarrollo de programas. Es decir, un modelo para resolver problemas computacionales. Los lenguajes de programacin, necesariamente, se encuadran en uno o varios paradigmas a la vez a partir del tipo de rdenes

    que permiten implementar, tiene una relacin que permiten implementar, tiene una relacin directa con su sintaxis.

  • PRINCIPALES PARADIGMAS

    Imperativo: sentencias + secuencias de comandos

    Declarativo. Los programas describen los resultados esperados sin listar explcitamente los pasos a llevar a cabo para alcanzarlos.

    Lgico. Aserciones lgicas: hechos + reglasLgico. Aserciones lgicas: hechos + reglas Funcional. Los programas se componen de

    funciones Orientado a Objetos : Mtodos + mensajes.

  • PRINCIPALES PARADIGMAS

    Otros son de aparicin relativamente reciente y no forman parte del grupo principal:

    Dirigido por eventos. El flujo del programa est determinado por sucesos externos (por ejemplo, una accin del usuario).

    Orientado a aspectos. Apunta a dividir el programa en mdulos independientes, cada uno con un comportamiento bien definido.

  • PARADIGMA APLICATIVO O FUNCIONAL

    Basado en el uso de funciones. Muy popular en la resolucin de problemas de inteligencia artificial,

    matemtica, lgica, procesamiento paraleloVentajas: Vista uniforme de programa y funcin Vista uniforme de programa y funcin Tratamiento de funciones como datos Liberacin de efectos colaterales Manejo automtico de memoriaDesventaja: Ineficiencia de ejecucin

  • PARADIGMA FUNCIONAL

    Caractersticas de los lenguajes funcionales Define un conjunto de datos Provee un conjunto de funciones primitivas Provee un conjunto de formas funcionales Requiere de un operador de aplicacin Requiere de un operador de aplicacinCaractersticas de los programas funcionales Semntica basada en valores Transparencia referencial Regla de mapeo basada en combinacin o

    composicin Las funciones de primer orden

  • PROGRAMACIN FUNCIONAL

    Funciones El VALOR ms importante en la programacin

    funcional es el de una FUNCIN Matemticamente una funcin es un correspondencia :

    f: A BA cada elemento de A le corresponde un nico elemento A cada elemento de A le corresponde un nico elemento en B

    f(x) denota el resultado de la aplicacin de f a x Las funciones son tratadas como valores, pueden ser

    pasadas como parmetros, retornar resultados, etc.

  • Definiendo Funciones: Se debe distinguir entre el VALOR y la DEFINICIN

    de una funcin. Existen muchas maneras de DEFINIR una misma

    funcin, pero siempre dar el mismo valor, ejemplo:DOBLE X = X + XDOBLE X= 2 * X

    PROGRAMACIN FUNCIONAL

    DOBLE X= 2 * XDenotan la misma funcin pero son dos formas

    distintas de definirlasTipo de una funcin Puede estar definida explcitamente dentro del

    SCRIPT, por ejemplo:cuadrado::num numcuadrado x= x + x

    O puede deducirse/inferirse

  • Expresiones y valores

    La expresin es la nocin central de la programacin Funcional

    Caracterstica ms importante:Una expresin es su VALOR

    PROGRAMACIN FUNCIONAL

    Una expresin es su VALOR El valor de una expresin depende NICAMENTE de los

    valores de las sub expresiones que la componen. Las expresiones tambin pueden contener VARIABLES,

    (valores desconocidos)

  • Expresiones y valores

    La nocin de Variable es la de variable matemtica, no la de celda de memoria. Diferentes ocurrencias del mismo nombre hacen referencia al mismo valor desconocido

    PROGRAMACIN FUNCIONAL

    desconocido

    Las expresiones cumplen con la propiedad de TRANSPARENCIA REFERENCIAL: Dos expresiones sintcticamente iguales darn el mismo valor, porque no existen EFECTOS LATERALES

  • Ejemplos de expresiones para evaluarExpresin Valor47 47(* 4 7) 28(+ 49 5) 54

    Se est utilizando una Funcin primitiva

    PROGRAMACIN FUNCIONAL

    Definiendo funciones.

    cuadrado x = x * xmin x y = x, if x < y

    y, if x > y

    cube (x) = x * x * x

  • Un script es una lista de definiciones y. Pueden someterse a evaluacin. Ejemplos:

    ?cuadrado (3 + 4 ) ?min 3 4 49 3

    Pueden combinarse, Ejemplo:?min(cuadrado ( 1 + 1 ) 3)

    PROGRAMACIN FUNCIONAL

    ?min(cuadrado ( 1 + 1 ) 3)

    Pueden modificarse, ejemplo: Al script anterior le agrego nuevas definiciones:

    lado = 12rea = cuadrado lado,

  • Algunas expresiones pueden NO llegar a reducirse del todo, ejemplo: 1/0

    A esas expresiones se las denominan CANNICAS, pero se les asigna un VALOR INDEFINIDO y corresponde al smbolo bottom(^)

    PROGRAMACIN FUNCIONAL

    corresponde al smbolo bottom(^)

    Por lo tanto toda EXPRESIN siempre denota un VALOR

  • Evaluacin de las expresiones: La forma de evaluar es a travs de un mecanismo de

    REDUCCIN o SIMPLIFICACIN Ejemplo:

    cuadrado (3 + 4)=> cuadrado 7 (+)=> 7 * 7 (cuadrado)

    PROGRAMACIN FUNCIONAL

    => 7 * 7 (cuadrado)=> 49 (*)

    Otra forma sera:cuadrado (3 + 4)

    => (3 + 4) * (3 + 4) (cuadrado) => 7 * (3 + 4) (+)=> 7 * 7 (+)=> 49 (*)

    No importa la forma de evaluarla, siempre el resultado final ser el mismo

  • Existen dos formas de reduccin:

    Orden aplicativo Aunque no lo necesite SIEMPRE evala los argumentos

    PROGRAMACIN FUNCIONAL

    Orden normal (lazy evaluation)

    argumentos

    No calcula ms de lo necesarioLa expresin NO es evaluada hasta que su valor se necesiteUna expresin compartida NO es evaluada ms de una vez

  • BsicosDerivados

    Bsicos: Son los primitivos, ejemplo:NUM (INT y FLOAT) (Nmeros)BOOL(Valores de verdad)

    TIPOS

    PROGRAMACIN FUNCIONAL

    BOOL(Valores de verdad)CHAR(Caracteres)

    Derivados: Se construyen de otros tipos, ejemplo:(num,char) Tipo de pares de valores(num char) Tipo de una funcin

    TODA FUNCIN TIENE ASOCIADO UN TIPO

  • Expresiones de tipo polimrficas:

    En algunas funciones no es tan fcil deducir su tipo. Ejemplo:

    id x = xEsta funcin es la funcin IdentidadSu tipo puede ser de char char, de num

    PROGRAMACIN FUNCIONAL

    Su tipo puede ser de char char, de numnum, etc.

    Por lo tanto su tipo ser de B BSe utilizan letras griegas para tipos

    polimrficosOtro ejemplo: letra x = ASu tipo ser B char

  • Currificacin: Mecanismo que reemplaza argumentos estructurados

    por argumentos ms simples. Ejemplo: sean dos definiciones de la Funcin Suma1. Suma(x,y) = x + y

    2. Suma x y = x + ySuma x y = Sumax (y) = x + y

    PROGRAMACIN FUNCIONAL

    Para todo los valores devuelve el siguiente

    Por cada valor de x devuelve una funcin

    Existen entre estas dos definiciones una diferencia sutil: Diferencia de tipos de funcinEl tipo de Suma es : (num,num) numEl tipo de Suma es : num (num num)

    Aplicando la funcin:Suma(1,2) 3Suma 1 2 Suma1 aplicado al valor 2

  • Clculo Lambda El un modelo de computacin para definir funciones Se utiliza para entender los elementos de la

    programacin funcional y la semntica subyacente, independientemente de los detalles sintcticos de un lenguaje de programacin en particular.

    Las expresiones del Lambda clculo pueden ser de 3 clases:

    PROGRAMACIN FUNCIONAL

    clases: Un simple identificador o una constante. Ej: x, 3 Una definicin de una funcin. Ej: x.x+1 Una aplicacin de una funcin. La forma es (e1 e2),

    dnde se lee e1 se aplica a e2. Ej: en la funcion cube (x) = x * x * x

    x. x * x * x x. x * x * x) 2)Evaluamos la funcin con 2 y resulta en 8

    (

  • PROGRAMACIN LGICA

    Es un paradigma en el cual los programas se son una serie de aserciones lgicas.

    El conocimiento se representa a travs de reglasy hechosy hechos

    Los objetos son representados por trminos, los cuales contienen constantes y variables

    PROLOG es el lenguaje lgico ms utilizado.

  • ELEMENTOS DE LA PROGRAMACIN LGICA La sintxis bsica es el trmino Variables:

    Se refieren a elementos indeterminados que pueden sustituirse por cualquier otro.

    humano(X), la X puede ser sustituda por constantes como: juan, pepe, etc.

    Los nombres de las variables comienzan con Los nombres de las variables comienzan con maysculas y pueden incluir nmeros.

    Constantes: A diferencia de las variables son elementos

    determinados.humano(juan)

    La constantes son string de letras en minsculas (representan objetos atmicos) o string de dgitos (representan nmeros).

  • ELEMENTOS DE LA PROGRAMACIN LGICA

    Trmino compuesto: Consisten en un functor seguido de un nmero fijo

    de argumentos encerrados entre parntesis, los cuales son a su vez trminos.

    Se denomina aridad al nmero de argumentos. Se denomina estructura (ground term) a un trmino

    compuesto cuyos argumentos no son variables.Ejemplos:

    padre constanteLongitud variabletamao(4,5) estructura

  • ELEMENTOS DE LA PROGRAMACIN LGICAListas: La constante [] representa una lista vaca El functor . construye una lista de un elemento y una

    lista. Ejemplo: .(alpha,[]), representa una lista que contiene un nico elemento que es alpha.

    Otra manera de representar la lista es usando [] en Otra manera de representar la lista es usando [] en lugar de .(). Ejemplo anterior la lista quedara: [alpha,[]]

    Y tambin se representa utilizando el smbolo |[alpha|[]]

    La notacin general para denotar lista es : [X|Y]X es el elemento cabeza de la lista e Y es una lista, que representa la cola de la lista que se

    est modelando

  • CLUSULAS DE HORN Un programa escrito en un lenguaje lgico es una

    secuencia de clusulas. Las clusulas pueden ser: un Hecho o una Regla.Hecho:

    Expresan relaciones entre objetos Expresan verdades Expresan verdades Son expresiones del tipo p(t1,t2,.tn)Ejemplos: tiene(coche,ruedas) representa el hecho que un

    coche tiene ruedas longuitud([],0) representa el hecho que una lista

    vaca tiene longuitud cero virus(ithaqua) representa el hecho que ithaqua es

    un virus.

  • Regla: Clusula de Horn Tiene la forma: conclusin :- condicin.Dnde:

    :- indica Si conclusin es un simple predicado y

    Sintxis de Prolog

    CLUSULAS DE HORN

    conclusin es un simple predicado y condicin es una conjuncin de predicados,

    separados por comas. Representan un AND lgico

    Una regla en PROLOG conclusin:-condiciones. En un lenguaje procedural una regla la podramos

    representar como: if condicin else conclusin;Ejemplo:

    virus(X):- programa(X),propaga(X)

  • PROGRAMAS Y QUERIESEjemplo de programa:

    longuitud ([],0).longuitud ([X|Y],N) :- longuitud(Y, M), N=M + 1.

    HECHO AND

    OR

    Programa: conjunto de clusulas

    ?-longuitud([rojo| [verde | [azul | [] ] ] ] ,X).

    Query: Representa lo que deseamos que sea contestado

    REGLA

    QUERY

  • Programa:longuitud ([],0).longuitud ([X|Y],N) :- longuitud(Y, M), N=M + 1.

    ?-longuitud([rojo| [verde | [azul | [] ] ] ] ,X).

    PROGRAMAS Y QUERIES

    ?-longuitud([rojo| [verde | [azul | [] ] ] ] ,X).

    longuitud([verde | [azul | [] ] ],M) y X=M+1longuitud([azul | [] ] ,Z) y M=Z+1longuitud([],T) Z=T+1 T=0 => Z=1

    M=2X=3

  • EJECUCIN DE PROGRAMAS

    Un programa es un conjunto de reglas y hechos que proveen una especificacin declarativa de que es lo que se conoce y la pregunta es el objetivo que queremos alcanzar.

    La ejecucin de dicho programa ser el intento de obtener una respuesta.obtener una respuesta.

    Desde un punto de vista lgico la respuesta a esa pregunta es YES, si la pregunta puede ser derivada aplicando deducciones del conjunto de reglas y hechos dados.

  • EJECUCIN DE PROGRAMAS: EJEMPLO

    Programa que describe una relacin binaria (rel) y su cierre (clos):

    rel(a,b).rel(a,c).

    PROGRAMA

    clos (a,f)

    rel(a,f)

    clos (a,f)

    rel(a,Z1), clos(Z1,f)rel(a,c).rel(b,f).rel(f,g).clos(X,Y) :- rel(X, Y).clos(X,Y) : - rel(X, Z), clos(Z, Y).

    ?-clos(a,f) QUERY

    falla rel(a,b), clos(b,f)

    rel(b,f)

    YESEJECUCIN

  • PROGRAMACIN ORIENTADA A OBJETOSUn programa escrito con una lenguaje OO es un conjunto

    de OBJETOS que INTERACTAN mandndose MENSAJES

    Los elementos que intervienen en la programacin OO son:

    Objetos Objetos Mensajes Mtodos Clases

    Objetos: Son entidades que poseen estado interno y

    comportamiento Es el equivalente a un dato abstracto

  • Mensajes: Es una peticin de un objeto a otro para que este

    se comporte de una determinada manera, ejecutando uno de sus mtodos

    TODO el procesamiento en este modelo es activado por mensajes entre objetos.

    Mtodos: Es un programa que est asociado a un objeto

    PROGRAMACIN ORIENTADA A OBJETOS

    Es un programa que est asociado a un objeto determinado y cuya ejecucin solo puede desencadenarse a travs de un mensaje recibido por ste o por sus descendientes

    Objeto A(Objeto Emisor)

    Objeto B(Objeto Receptor)

    Enva un mensaje

    Resultados(de la ejecucin del mtodo)

    Ejecuta el mtodo correspondiente

  • Clases: Es un tipo definido por el usuario que determina las

    estructuras de datos y las operaciones asociadas con ese tipo

    Cada objeto pertenece a una clase y recibe de ella su funcionalidad

    Primer nivel de abstraccin de datos: definimos estructura, comportamiento y tenemos ocultamiento.

    PROGRAMACIN ORIENTADA A OBJETOS

    estructura, comportamiento y tenemos ocultamiento. La informacin contenida en el objeto solo puede ser

    accedida por la ejecucin de los mtodos correspondientes

    Instancia de clase: Cada vez que se construye un objeto se est creando

    una INSTANCIA de esa clase Una instancia es un objeto individualizado por los

    valores que tomen sus atributos

  • Otro aspecto de las abstracciones de datos

    GENERALIZACIN/ESPECIFICACIN

    HERENCIAEl segundo nivel de abstraccin consiste en

    agrupar las clases en jerarquas de clases (definiendoSUB y SUPER clases), de forma tal que una clase A

    PROGRAMACIN ORIENTADA A OBJETOS

    SUB y SUPER clases), de forma tal que una clase Aherede todas las propiedades de su superclase B(suponiendo que tiene una)Ejemplo: Se tiene definido la siguiente clase

    PERSONANombreEdadSexoDocumentoDireccinTelfono

    ver-nombrever-edadver-telfonover-documentover-sexocambiar-direccinsacar-documento, etc.

    EMPLEADOCurriculumcuil

  • Polimorfismo: Es la capacidad que tienen los objetos de distintas

    clases de responder a mensajes con el mismo nombre

    Ejemplo:3 + 5 Se aplica suma entre nmeros

    Otros conceptos adicionales

    PROGRAMACIN ORIENTADA A OBJETOS

    3 + 5 Se aplica suma entre nmerosBuenos + das Se concatenan strings

    Binding dinmico:Es la vinculacin en el proceso de ejecucin de losobjetos con los mensajes

  • C++ (Lenguaje hbrido)Algunas caractersticas

    Lenguaje extendido del lenguaje C Incorpor caractersticas de POO Lenguaje compilativo el ambiente de programacin es de

    los lenguajes tradicionales.

    PROGRAMACIN ORIENTADA A OBJETOS

    los lenguajes tradicionales. Los objetos en C:

    Se agrupan en tipos denominados clases Contienen datos internos que definen su estado interno Soportan ocultamiento de datos Los mtodos son los que definen su comportamiento Pueden heredar propiedades de otros objetos Pueden comunicarse con otros objetos envindose

    mensajes