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
Top Related