Paradigmas de Programación CYPLP
PARADIGMAS Un paradigma de programación es un estilo de desarrollo de programas. Es decir, un modelo para resolver problemas computacionales. Los lenguajes de programación, necesariamente, se encuadran en uno o varios paradigmas a la vez a partir del tipo de órdenes , directa con su sintaxis.
PARADIGMAS Un paradigma de programación es un estilo de desarrollo de programas. Es decir, un modelo para resolver problemas computacionales. Los lenguajes de programación, necesariamente, se encuadran en uno o varios paradigmas a la vez a partir del tipo de órdenes , directa con su sintaxis.
PRINCIPALES PARADIGMAS Imperativo: sentencias + secuencias de comandos Declarativo. Los programas describen los resultados esperados sin listar explícitamente los pasos a llevar a cabo para alcanzarlos. Lógico. Aserciones lógicas: ecos + reglas Funcional. Los programas se componen de !unciones Orientado a Obetos : "#todos + mensajes.
PRINCIPALES PARADIGMAS $tros son de aparición relativamente reciente % no !orman parte del grupo principal: Dirigido por eventos. El !lujo del programa est& determinado por sucesos externos 'por ejemplo, una acción del usuario(.
Orientado a aspectos. Apunta a dividir el programa en módulos independientes, cada uno con un comportamiento bien de!inido.
PARADIGMA APLICATIVO O FUNCIONAL Basado en el uso de funciones. Muy popular en la resolución de problemas de inteligencia artificial, matemática, lógica, procesamiento paralelo Ventajas: Tratamiento de funciones como datos Liberación de efectos colaterales Manejo automático de memoria Desventaja: Ineficiencia de ejecución
PARADIGMA FUNCIONAL Características de los lenguajes funcionales Define un conjunto de datos Provee un conjunto de funciones primitivas Provee un conjunto de formas funcionales Características de los programas funcionales Semántica basada en valores Transparencia referencial Regla de mapeo basada en combinación o composición Las funciones de primer orden
PROGRAMACIÓN FUNCIONAL )unciones El *AL$ m&s importante en la programación !uncional es el de una )-/0 "atem&ticamente una !unción es un correspondencia : !: A 1 A cada elemento de A le corresponde un 2nico elemento en 1 !'x( denota el resultado de la aplicación de ! a x Las !unciones son tratadas como valores, pueden ser pasadas como par&metros, retornar resultados, etc.
PROGRAMACIÓN FUNCIONAL 3e!iniendo )unciones: 4e debe distinguir entre el *AL$ % la 3E)/-//0de una !unción. Existen mucas maneras de 3E)/-/ una misma !unción, pero siempre dar& el mismo valor, ejemplo: 3$1LE 5 6 5 + 5 3$1LE7 56 8 9 5 3enotan la misma !unción pero son dos !ormas distintas de de!inirlas ipo de una !unción ;uede estar de!inida explícitamente dentro del 4/;, por ejemplo: cuadrado::num num cuadrado x6 x + x $ puede deducirse/inferirse
PROGRAMACIÓN FUNCIONAL Expresiones % valores La expresión es la noción central de la programación )uncional aracterística m&s importante: <na expresi n es su *AL$= El valor de una expresión depende >-/A"E-E de los valores de las sub expresiones que la componen. Las expresiones tambi#n pueden contener *A/A1LE4, 'valores desconocidos(
PROGRAMACIÓN FUNCIONAL Expresiones % valores
La noción de *ariable es la de
PROGRAMACIÓN FUNCIONAL Ejemplos de expresiones para evaluar Expresión *alor
?@ '9 ? @( '+ ?B C(
?@ 8 C?
4e est& utilizando una )unción primitiva
3e!iniendo !uncionesD.
cuadrado x 6 x 9 x min x % 6 x, i! x % %, i! x F % cube 'x( 6 x 9 x 9 x
PROGRAMACIÓN FUNCIONAL n script es una lista de de!iniciones %D. ;ueden someterse a evaluación. Ejemplos:
Gcuadrado 'H + ? ( ?B
Gmin H ? H
;ueden combinarse, Ejemplo:
Gmin'cuadrado ' I + I ( H(
;ueden modi!icarse, ejemplo: Al script anterior le agrego nuevas de!iniciones:
lado 6 I8 &rea 6 cuadrado lado,
PROGRAMACIÓN FUNCIONAL Algunas expresiones pueden !O llegar a reducirse del todo, ejemplo: IJK
A esas expresiones se las denominan C"!#!IC"$, pero se les asigna un %"LO& I!D'FI!IDO % correspon e a s m o o o om
;or lo tanto toda '(P&'$I#! siempre denota un %"LO&
PROGRAMACIÓN FUNCIONAL Evaluación de las expresiones: La !orma de evaluar es a trav#s de un mecanismo de E3/0- o 4/";L/)/A/0 Ejemplo: cuadrado 'H + ?( 6F cuadrado @ '+( 6F 9 6F ?B '9( $tra !orma sería: cuadrado 'H + ?( 6F 'H + ?( 9 'H + ?( 'cuadrado( 6F @ 9 'H + ?( '+( 6F @ 9 @ '+( 6F ?B '9( )!o importa la *orma de evaluarla+ siempre el resultado *inal ser, el mismo-
PROGRAMACIÓN FUNCIONAL
Existen dos !ormas de reducción:
Aunque no lo necesite 4/E";E eval2a los argumentos
$rden aplicativo $rden normal 'la/ evaluation(
-o calcula m&s de lo necesario La expresión -$ es evaluada asta que su valor se necesite na expresión compartida -$ es evaluada m&s de una vez
PROGRAMACIÓN FUNCIONAL TIPOS
1&sicos 3erivados
0,sicos: 4on los primitivos, ejemplo: !U1 2I!3 / FLO"34 2!5meros4 a ores e ver a C6"&2Caracteres4 Derivados: 4e constru%en de otros tipos, ejemplo: 2num+c7ar4 3ipo de pares de valores 2num c7ar4 3ipo de una *unción 3OD" FU!CI#! 3I'!' "$OCI"DO U! 3IPO
PROGRAMACIÓN FUNCIONAL
Expresiones de tipo polimór!icas: En algunas !unciones no es tan !&cil deducir su tipo.
Ejemplo:
id x 8 x Esta !unción es la *unción Identidad u po pue e ser e c ar c ar, e num num, etc. ;or lo tanto su tipo ser& de 0 0 4e utilizan letras griegas para tipos polimór*icos $tro ejemplo: letra x 8 )"4u tipo ser& 0 c7ar
PROGRAMACIÓN FUNCIONAL
urri!icación: "ecanismo que reemplaza argumentos estructurados por argumentos m&s simples. Ejemplo: sean dos de!iniciones de la )unción <4uma= 9. $uma2x+/4 8 x / Suma’ x y = Suma’x (y) = x + y ;. $uma< x / 8 x / Existen entre estas dos de!iniciones una di!erencia sutil: )Di*erencia de tipos de *unciónPor cada valor de El tipo de 4uma es : 2num+num4 num x devuelve una El tipo de 4uma7 es : num 2num num4 función "plicando la *unción: 4uma'I,8( H 4uma7 I 8 4uma7I aplicado al valor 8
Para todo los valores devuelve el siguiente
PROGRAMACIÓN FUNCIONAL &lculo Lambda El un modelo de computación para de!inir !unciones 4e utiliza para entender los elementos de la programación !uncional % la sem&ntica sub%acente, independientemente de los detalles sint&cticos de un lenguaje de programación en particular. Las expresiones del Lambda c&lculo pueden ser de H clases: n simple identi!icador o una constante. Ej: x, H x.x+I na de!inición de una !unción. Ej: na aplicación de una !unción. La !orma es 'eI e8(, dónde se lee eI se aplica a e8. Ej: en la funcion cube (x) = x * x * x
x. x * x * x
(
x. x * x * x) 2)
Evaluamos la función con 2 y resulta en 8
PROGRAMACIÓN LÓGICA
Es un paradigma en el cual los programas se son una serie de aserciones lógicas. El conocimiento se representa a trav#s de reglas % 7ec7os Los objetos son representados por t=rminos, los cuales contienen constantes % variables ;$L$M es el lenguaje lógico m&s utilizado.
ELEMENTOS DE LA PROGRAMACIÓN LÓGICA La sint&xis b&sica es el )t=rmino %ariables: 4e re!ieren a elementos indeterminados que pueden sustituirse por cualquier otro. “humano(X)”, la 5 puede ser sustituída por constantes como: juan, pepe, etc.
ma%2sculas % pueden incluir n2meros. Constantes: A di!erencia de las variables son elementos determinados.
“humano(juan)”
La constantes son string de letras en min2sculas 'representan objetos atómicos( o string de dígitos 'representan n2meros(.
ELEMENTOS DE LA PROGRAMACIÓN LÓGICA #rmino compuesto: onsisten en un =!unctor= seguido de un n2mero !ijo de argumentos encerrados entre par#ntesis, los cuales son a su vez t#rminos. 4e denomina
o2?+@4 estructura
ELEMENTOS DE LA PROGRAMACIÓN LÓGICA Listas: La constante NO representa una lista vacía El !unctor <.= constru%e una lista de un elemento % una lista. Ejemplo: .'alpa,NO(, representa una lista que contiene un 2nico elemento que es alpa. lugar de .'(. Ejemplo anterior la lista quedaría: Nalpa,NOO P tambi#n se representa utilizando el símbolo Q NalpaQNOO La notación general para denotar lista es : N5QPO 5 es el elemento cabeza de la lista e P es una lista, que representa la cola de la lista que se est& modelando
CLÁUSULAS DE HORN n programa escrito en un lenguaje lógico es una secuencia de
CLÁUSULAS DE HORN egla: Sintáxis de Prolog l&usula de Rorn iene la !orma: conclusión :S condición. 3ónde: :S indica <4i=
condición es una conjunción de predicados, separados por comas. epresentan un A-3 lógico
na regla en ;$L$M conclusión:Scondiciones. En un lenguaje procedural una regla la podríamos representar como: i! condición else conclusiónT
Ejemplo: virus2(4:A programa2(4+propaga2(4
PROGRAMAS Y QUERIES 'emplo de programa: HECHO
O#
!"
longuitud 'NO,K(. longuitud 'N5QPO,-( :S longuitud'P, "(, -6" + I.
;rograma: conjunto de cl&usulas
#E$%
GSlonguitud'NrojoQ Nverde Q Nazul Q NO O O O ,5(.
&'E#
Uuer%: epresenta lo que deseamos que sea contestado
PROGRAMAS Y QUERIES Programa: longuitud 'NO,K(. longuitud 'N5QPO,-( :S longuitud'P, "(, -6" + I.
S
, .
longuitud'Nverde Q Nazul Q NO O O,"( % 56"+I longuitud'Nazul Q NO O ,V( % "6V+I longuitud'NO,( V6+I 6K 6F V6I "68 56H
EJECUCIÓN DE PROGRAMAS n programa es un conjunto de reglas % ecos que proveen una especi!icación declarativa de que es lo que se conoce % la pregunta es el objetivo que queremos alcanzar. La ejecución de dico programa ser& el intento de obtener una respuesta. 3esde un punto de vista lógico la respuesta a esa pregunta es
EJECUCIÓN DE PROGRAMAS: EJEMPLO ;rograma que describe una relación binaria 'rel( % su cierre 'clos(: *los (a,)
rel2a+b4. P#O$# rel(a,) + . rel2b+*4. ,alla rel2*+g4. clos2(+Y4 :A rel2(+ Y4. clos2(+Y4 : A rel2(+ B4+ clos2B+ Y4. Aclos2a+*4
*los (a,)
rel(a,Z1), *los(-,)
&'E# E0EC'CI1!
rel(a,b), *los(/,) rel(b,f) YES
PROGRAMACIÓN ORIENTADA A OBJETOS <n programa escrito con una lenguaje $$ es un conjunto de $1WE$4 que /-EA>A- mand&ndose "E-4AWE4= Los elementos que intervienen en la programación $$ son: "ensajes "#todos lases Obetos: 4on entidades que poseen estado interno % comportamiento Es el equivalente a un dato abstracto
PROGRAMACIÓN ORIENTADA A OBJETOS 1ensaes: Es una petición de un objeto a otro para que este se comporte de una determinada manera, ejecutando uno de sus m#todos $3$ el procesamiento en este modelo es activado por mensajes entre objetos. 1=todos: s un programa que es asoc a o a un o e o determinado % cu%a ejecución solo puede desencadenarse a trav#s de un mensaje recibido por #ste o por sus descendientes Envía un mensaje Objeto A Objeto B Ejecuta el método (Objeto Emisor) (Objeto Receptor) correspondiente Resultados (de la ejecución del método)
PROGRAMACIÓN ORIENTADA A OBJETOS lases: Es un tipo de!inido por el usuario que determina las estructuras de datos % las operaciones asociadas con ese tipo ada objeto pertenece a una clase % recibe de ella su !uncionalidad ;rimer nivel de abstracción de datos: de!inimos estructura, comportamiento % tenemos ocultamiento. La in!ormación contenida en el objeto solo puede ser accedida por la ejecución de los m#todos correspondientes /nstancia de clase: ada vez que se constru%e un objeto se est& creando una /-4A-/A de esa clase na instancia es un objeto individualizado por los valores que tomen sus atributos
PROGRAMACIÓN ORIENTADA A OBJETOS Otro aspecto de las abstracciones de datos
ME-EAL/VA/0-JE4;E/)/A/0REE-/A El segundo nivel de abstracción consiste en agrupar las clases en jerarquías de clases 'de!iniendo 41 % 4;E clases(, de !orma tal que una clase A erede todas las propiedades de su superclase 1 'suponiendo que tiene una( Ejemplo: 4e tiene de!inido la siguiente clase !om/re ;E4$-A Edad Sexo "o*umento "ire**i2n Tel3,ono • • • • • •
ver-nombre ver-edad ver-el!fono ver-documeno ver-sexo cambiar-direcci"n sacar-documeno, ec#
EP%E"O Curri*ulum *uil • •
PROGRAMACIÓN ORIENTADA A OBJETOS Otros conceptos adicionales
;olimor!ismo: Es la capacidad que tienen los objetos de distintas clases de responder a mensajes con el mismo nombre Ejemplo:
H+C 4e aplica suma entre n2meros <1uenos= +
1inding din&mico: Es la vinculación en el proceso de ejecución de los objetos con los mensajes