guia paradigm as deprogram ac i on

Upload: duvan-sdu-ropero

Post on 04-Feb-2018

261 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    1/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    1

    Paradigmas de Programacin

    Indice de contenido de esta guia

    1 PRESENTACION ..................................................................................................................................................................... 2

    1.1 JUSTIFICACIN ..................................................................................................................................................................... 21.2 OBJETIVO GENERAL ............................................................................................................................................................ 21.3 OBJETIVOS ESPECFICOS ...................................................................................................................................................... 21.4 CONTENIDOS PROGRAMTICOS ........................................................................................................................................... 21.5 BIBLIOGRAFA ..................................................................................................................................................................... 31.6 REFERENCIAS WEB .............................................................................................................................................................. 3

    1.6.1 Paradigmas de programacin .......... ......... ........... ........... .......... .......... .......... .......... ........... .......... .......... ........... ........... .. 31.6.2 Programacin lgica .......... ......... ............ ......... ........... .......... ........... .......... .......... .......... ........... ........... ........... .......... ..... 31.6.3 Programacin funcional .......... .......... .......... ............ ........... .......... ........... ........... ........... ......... ........... .......... ........... ........ 3

    1.7 GENERALIDADES DE LOS PARADIGMAS DE PROGRAMACIN DE COMPUTADORES................................................................ 42 PARADIGMA DE PROGRAMACIN FUNCIONAL ......................................................................................................... 5

    2.1 FUNCIONES .......................................................................................................................................................................... 52.2 COMPOSICIN DE FUNCIONES .............................................................................................................................................. 72.3 NOTACIN LAMBDA ............................................................................................................................................................ 82.4 UN LENGUAJE FUNCIONAL (HASKELL) ................................................................................................................................ 82.5 EJERCICIOS DE PROGRAMACIN CON HASKELL ................................................................................................................. 102.6 EJERCICIOS DE LISTAS EN HASKELL ................................................................................................................................... 112.7 FUNCIONES PREDEFINIDAS................................................................................................................................................. 22

    3 PARADIGMA DE PROGRAMACIN LGICA ............................................................................................................... 23

    3.1 LGICA PROPOSICIONAL ................................................................................................................................................... 23

    3.2 REGLAS DE EQUIVALENCIA ................................................................................................................................................ 263.3 RAZONAMIENTOS CON LGICA PROPOSICIONAL ................................................................................................................ 293.4 LGICA DE PREDICADOS. ................................................................................................................................................... 373.5 REPRESENTACIN DE CONOCIMIENTO (RC)CON LGICA DE PREDICADOS ........................................................................ 373.6 MISCELNEA SOBRE LGICA ............................................................................................................................................. 393.7 PROGRAMACIN LGICA ................................................................................................................................................... 403.8 PROLOG ............................................................................................................................................................................. 40

    3.8.1 Introduccin ................ ........... .......... ......... ........... ........... .......... .......... .......... ............ ........... ......... ........... ........... ......... 403.8.2 Historia de prolog ............... ........... .......... .......... ........... .......... .......... .......... ........... ........... .......... ......... ........... .......... ... 413.8.3 Base de datos en prolog ............ ......... ............ ......... ........... .......... ........... ........... ........... ......... ........... .......... ........... ...... 413.8.4 Listas ............... .......... .......... ........... .......... .......... ........... ........... .......... ......... ........... .......... ........... ......... ........... ........... .. 42

    3.9 EJERCICIOS CON PROLOG ................................................................................................................................................... 423.9.1 Corte y varibles blancas ............................................................................................................................................... 46

    3.9.2 Ejercicios de Prolog para procesamiento numrico .......... .......... ........... ........... ........... ......... ............ ......... ........... ...... 473.9.3 Ejercicios de Listas en Prolog .......... ......... ........... ........... .......... .......... .......... .......... ........... .......... .......... ........... ........... 493.10 EJERCICIOS CON REGISTROS .............................................................................................................................................. 523.11 EJERCICIOS DE BASES DE DATOS CON PROLOG ................................................................................................................... 543.12 ALGUNOS PREDICADOS PREDEFINIDOS EN PROLOG ............................................................................................................ 57

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    2/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    2

    1 Presentacion1.1 JustificacinLa programacin de computadores, tpicamente se ha enseado partiendo de paradigmas imperativos desde lossemestres iniciales del programa de ingeniera de sistemas. Sin embargo se requiere del conocimiento de paradigmasdeclarativos que en determinado momento pueden llegar a ser tiles en el planteamiento de soluciones computacionalesa problemas donde el paradigma imperativo suele ser poco eficiente.

    1.2 Objetivo GeneralSolucionar problemas bsicos de programacin, mediante el uso de los paradigmas lgico y funcional, haciendo uso delos fundamentos matemticos que definen dichos paradigmas

    1.3 Objetivos EspecficosAdquirir los fundamentos conceptuales de los diferentes paradigmas de programacin imperativa, lgica y funcional.

    Adquirir habilidad en la solucin de problemas aplicando el paradigma de programacin ms adecuado al problema, alcontexto y al esfuerzo de programacin.

    Desarrollar habilidades en el uso de por lo menos una herramienta de programacin en cada una de los paradigmasestudiados.

    Desarrollar aptitudes de anlisis, diseo y codificacin de soluciones a problemas bsicos de programacin en cada unode los paradigmas estudiados.

    1.4 Contenidos ProgramticosUNIDAD 1 Generalidades

    1. Introduccin a los conceptos de lenguajes de programacin

    2. Clasificacin de los lenguajes de programacin

    4. Recursividad en el paradigma estructurado

    UNIDAD 2 Paradigma de Programacin Funcional

    1. Introduccin a la programacin funcional

    2. Fundamentacin matemtica sobre funciones

    3. Herramienta de programacin funcional mediante el lenguaje Haskell (Hugs)

    UNIDAD 3 Paradigma de programacin lgica

    1. Introduccin a la programacin lgica

    2. Lgica proposicional

    3. Reglas de equivalencia y de inferencia

    4. Lgica de predicados

    5. Herramienta de programacin lgica (Prolog)

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    3/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    3

    1.5 BibliografaKenneth C. Louden, Lenguajes de Programacin, Principios y Prcticas, Segunda edicin. Editorial Thomson.

    Felix Garcia Merayo, Matemticas discretas, segunda edicin, editorial Thomson.

    Winfried Kart Grassmann, jean- Paul Tremblay; Matemtica Discreta y Lgica, una perspectiva desde la ciencia de lacomputacin., Editorial Prentice Hall.

    Bird, R. Introduccin a la Programacin Funcional, Prentice Hall, 2000

    P. Julin, M. Alpuente. Programacin Lgica, Teora y Prctica. Pearson, 2007.

    Pratt, T.W.; Zelkowitz, M.V. Lenguajes de programacin: diseo e implementacin, Prentice-Hall, 1998

    B. C. Ruiz, F. Gutierrez, P. Guerrero, J. Gallardo, Razonando con Haskell, Thomson, 200

    R. BIRD & P. WADLER. Introduction to Functional Programming. Prentice Hall, 1988.

    D. WATT. Programming Languages Concepts and Paradigms. Prentice Hall, 1990

    Pascual Julian, lgica simblica para informticos, ISBN 970-15-1072-0, Coedicin: Alfaomega-Rama

    Terrense W. Pratt; Programming Languages: Designs and Implementation; Second edition; Prentice Hall

    Martha Vitalia Corredor Montaguth; Principios de Inteligencia Artificial y Sistemas expertos, Ediciones UIS.

    Rodrigo Cardoso; Verificacin y desarrollo de programas, Ediciones Uniandes

    1.6 Referencias Web

    1.6.1 Paradigmas de programacin

    http://www.frt.utn.edu.ar/sistemas/paradigmas/index.html

    http://ocw.ua.es/ensenanzas-tecnicas/lenguajes-y-paradigmas-de-programacion/materiales/

    1.6.2 Programacin lgica

    http://www.cs.kuleuven.ac.be/~dtai/projects/ALP/

    http://www.peiper.com.ar/edicion09/parad_logico.pdf

    http://www.programacion.com/tutorial/prolog1/

    http://www.programacion.com/tutorial/prolog2

    http://www.coli.uni-saarland.de/~kris/learn-prolog-now/

    http://pagesperso-orange.fr/COLIN.BARKER/tpro1/tpro.htm

    1.6.3 Programacin funcionalhttp://www.uv.mx/aguerra/teaching/fp-06/index.html

    http://www.haskell.org/

    http://www.haskell.org/tutorial/

    http://people.cs.uu.nl/jeroen/courses/fp-sp.pdf

    http://polaris.lcc.uma.es/~blas/pfHaskell/gentle/index.html

    http://www.info-ab.uclm.es/asignaturas/42525/BuzPF/menubuzon.html

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    4/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    4

    1.7 Generalidades de los Paradigmas de programacin de computadoresEntre muchas definiciones de paradigma podemos citar algunas como:

    Un paradigma es desde fines de la dcada de 1960 un modelo o patrn en cualquier disciplina cientfica u otrocontexto epistemolgico.[101]

    Conjunto de teoras acerca de una faceta de la realidad, que ofrece la posibilidad de resolver problemas a partir de susprincipios fundamentales [102]

    En el contexto del conocimiento humano define cules problemas son interesantes de estudiar y, en consecuencia,influye fuertemente en la forma de abordarlos [103].

    Es el conjunto de teoras, mtodos, problemas y objetos de estudio, tcnicas y patrones de solucin que caracterizan eltrabajo investigativo de una comunidad cientfica en determinada poca. Es un modelo. Pasar de un paradigma a otrosupone serios cambios.[104]

    Conjunto de supuestos tericos generales, las leyes y las tcnica para su aplicacin que adoptan los miembros de unadeterminada comunidad [105]

    Patrn de una disciplina. En programacin, el paradigma es el mtodo que usa el cdigo de un lenguaje. [106]

    Sintetizando todos estos conceptos se puede afirmar que un paradigma est constituido por los supuestos tericosgenerales, las leyes y las tcnicas para su aplicacin que adoptan los miembros de una determinada comunidadcientfica. Las leyes y los supuestos tericos son explcitamente definidos para soportar el paradigma.

    El instrumental y las tcnicas instrumentales son necesarios para hacer que las leyes del paradigma sean tiles dentrodel paradigma.

    Todos los paradigmas, adems, contienen prescripciones metodolgicas muy generales.

    Se puede afirmar que, los paradigmas son marcos de referencia que imponen reglas sobre cmo se deben hacer lascosas, indican qu es vlido dentro del paradigma y qu est fuera de sus lmites. Un paradigma distinto implica nuevas

    reglas, elementos, lmites y maneras de pensar, o sea implica un cambio. Los paradigmas pueden ser consideradoscomo patrones de pensamiento para la resolucin de problemas.

    Un paradigma de programacin de computadores, por lo tanto, representan un enfoque particular o filosofa para laconstruccin del software (programas de computador).

    Ante la diversidad de paradigmas de programacin no se puede afirmar que uno sea mejor que otro, sino que cada unotiene ventajas y desventajas y dicha conveniencia o no depende tambin de las situaciones donde un paradigma esutilizado.

    En todo paradigma de programacin de computadores se pueden identificar tres aspectos importantes: los conceptosfundamentales (que por lo general son teoras matemticas), los lenguajes de programacin inspirados en dichosconceptos y las herramientas que soportan estos lenguajes. Estos tres aspectos son utilizados en este artculo paraestudiar los fundamentos del paradigma lgico y funcional.

    -------------------------------[101] Paradigma, es.wikipedia.org/wiki/Paradigma

    [102] Definicin de Paradigma, www.dlh.lahora.com.ec/paginas/judicial/PAGINAS/Diccionario.Social.htm

    [103] Definicin de Paradigma, bibliotecadigital.ilce.edu.mx/sites/ciencia/volumen2/ciencia3/070/htm/sec_82.htm

    [104] Definicin de Paradigma, www.authorstream.com/Presentation/psicopedagogia-37155-GLOSARIO-EDUCATIVO-ACTIVIDAD-DE-APRENDIZAJE-SENSIBILIZACI-N-INNOVADOR-POR-ENSAYO-ERROR-Education-ppt-powerpoint/[105] Definicin de Paradigma, cecte.ilce.edu.mx/blogmcyte/files/mnegrete1110_GLOSARIO.docsoftware.adslzone.net/glosario/p-q-y-r/

    [106] definicin de paradigma software.adslzone.net/glosario/p-q-y-r/

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    5/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    5

    2 Paradigma de programacin FuncionalEl paradigma funcional basa la descripcin de las computaciones en la evaluacin de funciones en la aplicacin defunciones a valores conocidos. Por esta razn, los lenguajes funcionales tambin se les conocen en algunas ocasionescomo lenguajes aplicativos. Un lenguaje de programacin funcional tiene como mecanismo bsico la evaluacin deuna funcin o llamada de funcin. Esto involucra adems de la propia evaluacin de la funcin, la transferencia devalores como parmetros a las funciones y la obtencin de valores resultantes como valores devueltos de las funciones.El paradigma funcional no involucra una idea de variable o asignacin de variables. En cierto sentido, la programacinfuncional es lo opuesto a la progresin orientada a objetos: se concentra en los valores y las funciones en vez de enlocalizaciones de memoria. Tambin las opresiones repetitivas no se expresan mediante ciclos, sino mediante funcionesrecursivas.

    Los conceptos matemticos que soportan el paradigma funcional, es algo ms fcil por lo que los estudiantes estn

    familiarizados (o deberan estarlo) con los conceptos de funcin que se explica con detalles en asignaturas como elclculo, sin embargo en dicha asignatura solo se hace uso de funciones sobre los reales por lo cual limita el concepto yse dificulta la generalizacin para otros dominios.

    2.1 FuncionesEl concepto de funcin parte del concepto de relacin que a su vez parte del producto cartesiano de dos conjuntos, sinembargo se presentan dificultades al utilizar conjuntos diferentes a los conjuntos numricos tpicos como enteros,racionales o reales y se hace difcil el uso de conjuntos como tuplas, matrices, vectores, etc.

    Otro aspecto de importancia es la notacin de la funcin, es decir cuando se define f(x)=2x +1, se puede interpretar f(x)como un nmero entero imagen de x (el nmero 2x+1) o como la funcin f que a su vez es una relacin es decir unsubconjunto del producto cartesiano de dos conjuntos, es decir que f es un conjunto de la forma f={ (x,y) / xZ y=2x+1}

    Estas ambigedades hacen que en programacin funcional se necesite generalizar el concepto de funcin y se haoptado por interpretar una funcin como el procesamiento de datos de entrada que produce datos de salida.

    fx 2x+1

    f

    x

    2x+1

    As pues, la funcin se puede interpretar como una mquina que recibe objetos (pertenecientes a un determinadoconjunto) los procesa de alguna forma y devuelve (retorna) objetos pertenecientes a otro conjunto.

    Todos los posibles objetos que puede procesar una funcin conforman el dominio de la funcin y todos los posiblesobjetos procesados y retornados por una funcin conformar el rango de la funcin. De esta manera se puede notar lafuncin as:

    f :: Dominio Rango

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    6/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    6

    objeto a procesar objeto retornado (procesado)

    Para la funcin del ejemplo:

    f :: Z Z

    x 2x+1

    Cuando una funcin representada grficamente recibe varios objetos, esto se puede interpretar como un solo objeto enforma de tupla:

    g

    x R

    Za

    aaa

    aaa

    aaa

    y

    ik

    nninn

    ni

    ni

    ,,1,

    ,2,21,2

    ,1,11,1

    nninn

    ni

    ni

    aaa

    aaa

    aaa

    x

    ,,1,

    ,2,21,2

    ,1,11,12][ x

    En este grfico la funcin g recibe dos objetos una matriz cuadrada de enteros y un nmero real y retorna una matriz

    cuadrada de reales, multiplicado el real x por la matriz de enteros y.Aunque pareciese que la funcin recibe dos objetos, esto se puede ver como un par ordenado cuya primera componentees una matriz y su segunda componente es un nmero real.

    De igual manera la salida pude aparentar devolver varios datos( lo que contradice el concepto de funcin) sin embargola salida tambin puede verse como un solo objeto en forma de tupla cuya primera componente es una matriz cuadradade reales y su segunda componente un entero formado por la parte entera de x restando 2.

    As por lo tanto la funcin g puede definirse as:

    g:: (Znxnx R ) (Rnxnx Z )

    ( m , x ) ( xm, [x]-2 )

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    7/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    7

    Donde (Znxn x R ) es el producto cartesiano de las matrices cuadradas de enteros por los reales, (Rnxn x Z ) es elproducto cartesiano de las matrices cuadradas de reales por los enteros, xm es el producto de un real por una matriz y[x] es la parte entera de x.Los principales problemas que presentan los estudiantes en esta tema, radican en identificar la forma de los objetos que

    pertenecen al dominio o al rango de una funcin.

    2.2 Composicin de funcionesRepresentadas asi las funciones, la composicin de funciones se puede ver como la organizacin en serie de dos o masfunciones as:

    f

    g

    Zaaaa

    aaa

    aaa

    x

    ik

    nninn

    ni

    ni

    ,,1,

    ,2,21,2

    ,1,11,1

    n

    i

    n

    k ik

    ay1 1

    (y , y-0.1) En el cual las funciones f y g estn definidas por

    f :: ZnxnZ

    g :: Z ZxR

    Por lo tanto la composicin de funciones f g est definida como:

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    8/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    8

    f g :: ZnxnZxR

    1.0)(,1 11 1

    ,,1,

    ,2,21,2

    ,1,11,1 n

    i

    n

    k

    ik

    n

    i

    n

    k

    ik

    nninn

    ni

    ni

    aa

    aaa

    aaaaaa

    Las principales dificultades de los estudiantes estn en hacer compatible el rango de la primera funcin con el dominiode la segunda funcin, dado que esto es requisito para poder hacer la composicin.

    2.3 Notacin lambdaEn la frase f(x) es una funcin de x f(x) no se refiere al objeto imagen de x, sino a la funcin completa, es decir alconjunto de pares { (x, f(x)) /xal dominio de f }

    Si f(x) se utiliza para denotar una funcin (y no la imagen de un objeto x), entonces es una funcin con argumento x.

    Para ciertas aplicaciones esta ambigedad no se puede permitir, por lo que es necesaria una notacin alternativa y estaes el calculo lambda (clculo-). En este se utiliza f(x) estrictamente para un solo valor, la imagen de x. y para denotarla funcin f se escribe x. f(x).

    Geeralmente, si e es una expresin, entonces x.e indica que e debe ser considerada ahora como una funcin de x. Porejemplo, x. xy+y+1 indica que xy+y+1 debe ser considerada como una funcin de x , pero y solo es un parmetro.

    Para expresar que una funcin representada en su notacin lambda, debe ser tomada en un cierto valor t, se escribe x.(xy+y+1)t.

    Por ejemplo

    (x. (xy+y+1))3 es 3y+y+1=4y+1

    (x. (x+y))2 es 2 +y

    (x. (y. (x+y))3)2 es (y. (2+y))3 y esto es 2+3=5Como se puede ver en este tipo de notacin las funciones permanecen annimas es decir que no requieren tener unnombre tal como f o g, sino que lo importante es la expresin que representa la funcin.

    2.4 Un Lenguaje funcional (Haskell)Haskell en un lenguaje de programacin funcional puro, en el cual su concepto fundamental es la funcin. Todo

    programa en haskell esta constituido por funciones (definidas con una sintaxis muy parecida a la notacin matemticaaqu explicada).

    Por ejemplo una funcin que calcule las raices de una ecuacin cuadrtica de la forma

    ax2+bx + c = 0 con solucin real estara definida as:

    raices :: (Float,Float,Float)->(Float,Float)raices (a,b,c) = (x1,x2)

    where

    d=(b*b)-(4*a*c)

    r=sqrt(d)

    x1=(-b+r)/(2*a)

    x2=(-b-r)/(2*a)

    donde raices es el nombre de la funcin, cuyo dominio es R-{0} x R x R es decir una terna de reales con la siguientedefinicin {(a,b,c)/ a,b,cR a0 b24ac} y su rango es RxR es decir un par ordenado de reales con las dossoluciones reales. Claro est que las restricciones del domino no son explicitas dentro de esta notacin.

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    9/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    9

    De igual manera se pueden definir nuevos dominios a partir de dominios existentes, con ello se puede calcular lasraices imaginarias. Siendo necesario definir los nuevos dominios como siguie

    type complejo = (Float, Float)

    type solucion=(complejo, complejo)

    Donde complejo representa un nmero imaginario, es decir el complejo (w,z) representa el imaginario wi +z donde w

    (parte imaginaria) y z(parte real) son nmeros reales y donde i es 1 , cuando w=0 el nmero corresponde a unnmero real es decir que el coeficiente de la parte imaginaria es cero.

    Se puede construir un programa en haskell que encuentre la solucin a una ecuacin cuadrtica

    02 cbxax sabiendo que las soluciones estn dadas por la ecuacin cuadrticaa

    acbbx

    2

    42

    Si el discriminante acb 42 un nmero positivo, entonces las dos soluciones son nmeros reales y por lo tanto lasolucin a la ecuacin tiene la forma ((0 , x1) , (0 , x2))

    Si el discriminante es negativo entonces la ecuacin tiene dos soluciones imaginarias de la forma

    a

    b

    a

    acb

    a

    b

    a

    acb

    2,

    2

    )4(,

    2,

    2

    )4( 22La solucin en haskell corresponde a:

    module Raicescuadraticas where

    type Complejo = (Float, Float)

    type Solucion=(Complejo, Complejo)

    r::(Float,Float,Float)->Solucion

    r(a,b,c) = (x1,x2)

    where

    d=(b*b)-(4*a*c)

    y= if d

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    10/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    10

    1-Defina cada uno de los siguientes conceptos:

    ConjuntoOperacin entre conjuntos

    Producto cartesiano de conjuntos

    Relaciones entre conjuntos

    Funcin

    2- Identifique el dominio de las siguientes funciones

    sgn x | x == 0 = 0

    | x < 0 = -1

    | otherwise = 1

    mcd :: Int -> Int -> Int

    mcd n 0 = n

    mcd n m = mcd m (mod n m)

    fact :: Integer -> Integer

    fact 0 = 1

    fact n = n * fact (n-1)

    2.5 Ejercicios de programacin con Haskell3-Hacer un programa en Haskell que encuentre las soluciones reales a una ecuacin cuadrtica de la forma

    02 cbxax recordando que dicha ecuacin tiene dos soluciones reales (si las tiene) de la forma

    a

    acbbx

    2

    42

    Se presentan aqu dos posibles soluciones, buscar otra

    raices :: (Flota,Float,Float)->(Float,Float)

    raices (a,b,c) = (x1,x2)

    where

    d=(b*b)-(4*a*c)r=sqrt(d)

    x1=(-b+r)/(2*a)

    x2=(-b-r)/(2*a)

    raices' :: (Float,Float,Float)->(Float,Float)

    raices' (a,b,c) = let

    d=(b*b)-(4*a*c)

    r=sqrt(d)x1=(-b+r)/(2*a)

    x2=(-b-r)/(2*a)

    in (x1,x2)

    4-Hacer un programa en Haskell que dado un nmero natural n encuentre su raz digital.

    La raz digital de un natural n se obtiene calculando el natural m sumando los dgitos que componen al nmero n. Elproceso se repite sobre el nuevo nmero hasta que el resultado sea de un dgito.

    Ejemplo: 347 3 + 4 + 7 = 14 1 + 4 = 5 RD(347) = 5

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    11/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    11

    Nota: Haskell cuenta con las funciones div y mod que sirven para calcular la divisin entera y el residuo de ladivisin entera. Si es necesario haga uso de dichas funciones que tambin pueden usarse como operadores utilizndolosentre comillas sencillas.Ejemplo: el llamado a la funcin (5 div 3) retorna 1 y el llamado a la funcin (15 mod 4) retorna 3

    5-Hacer un programa que calcule un combinatorio segn la siguiente definicin recursiva:

    1

    11

    10

    k

    n

    k

    n

    k

    n

    n

    nn

    6-Dadas las siguientes afirmaciones sobre el mximo comn divisor mcd de dos nmeros x, y:

    El mcd de un nmero y l mismo, es el mismo nmero

    El mcd entre uno (1) y cualquier otro nmero es uno (1)

    El mcd entre dos nmeros es igual al mcd entre el menor de los dos y la diferencia (el mayor menos el menor)

    Por ejemplo el mcd entre 5 y 15 es igual al mcd entre 5 (el menor) y la diferencia que es 10 (15-5). El mcd entre 10 y 5es igual al mcd entre 5 y la diferencia 5 (10-5). El mcd entre 5 y 5 es 5.

    Por lo tanto el mcd entre 5 y 15 es 5.

    Hacer una funcin que calcule el mximo comn divisor entre dos enteros positivos.

    7- Calcular una potencia aplicando las siguientes reglas: Cero a cualquier nmero diferente de cero da cero. Cualquierentero diferente de cero elevado a la 0 da como resultado 1. Un nmero X elevado a la Y es igual a X multiplicado porla potencia de X a la Y-1. Un nmero X diferente de cero elevado a un nmero negativo Y es igual a 1 sobre la

    potencia de X elevado a la Y

    8- Hacer una funcin en Haskell que reciba un entero n y devuelva un valor de verdad que indique si el nmero n es ono narcisista.

    Un nmero narcisista es un Nmero de n dgitos que resulta ser igual a la suma de las potencias de orden n de susdgitos.

    Ejemplo: 1 = 11

    153 = 1 + 5 + 3.

    9474 = 94 + 44 + 74 + 44

    2.6 Ejercicios de listas en Haskell9- Hacer un programa en Haskell que halle el promedio de los elementos de una lista de enteros.

    10- Hacer un programa con diferentes funciones que permitan eliminar un elemento de una lista, agregar un elemento auna lista al final, agregar un elemento a una lista en una posicin determinada, eliminar un elemento que se encuentraen una posicin determinada dentro de la lista

    11- Realice un programa en Haskell que dada dos listas de enteros obtenga las diferentes operaciones de unin,interseccin, diferencia y diferencia simtrica. Por ejemplo para la diferencia simtrica se debe hacer una funcin quedevuelva una lista con los elementos que estn en la primera lista pero que no estn en la segunda listas y los elementos

    que estn en la segunda lista pero que no estn en la primera. Es decir los no comunes.

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    12/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    12

    Por ejemplo si la primera lista es [1,2,3,4,5,8] y la segunda lista es [7,3,5,8,9] el resultado es [1,2,4,7,9]

    12-Hacer un programa en Haskell que dada una lista de enteros, me devuelva un par ordenado de dos listas de enteros,una con los pares y otra con los impares

    Ejemplo:

    Clasificar [1,3,2,7,4,6]

    Da como resultado ([1,3,7],[2,4,6])

    Aqu se presentan tres soluciones diferentes para este programa

    clasificar::[Int]->([Int],[Int])

    clasificar []=([],[])

    clasificar (x:c) = if (even x) then

    ((x:l1),l2)else

    (l1,x:l2)

    where

    (l1,l2)= clasificar c

    clasifi ::[Int]->([Int],[Int])

    clasifi []=([],[])

    clasifi (x:c) = let

    (p1,p2) = clasifi cin

    if (even x) then

    (x:p1,p2)

    else

    (p1,x:p2)

    par::[Int] -> [Int]

    par []=[]

    par (x:c) = if (even x) then

    x:par celse

    par c

    impar::[Int] -> [Int]

    impar []=[]

    impar (x:c) = if (odd x) then

    x:impar c

    else

    impar c

    clas ::[Int]->([Int],[Int])

    clas lista= (par lista, impar lista)

    13-Hacer un programa en haskell que dado una lista de enteros me devuelva una lista con los das que corresponden acada uno de los enteros de la lista. Ejemplo

    Traducir [1,4,7] Da como resultado [domingo,miercoles,sabado]

    14-Hacer un programa en Haskell que dada una lista de enteros, devuelva el dato que se encuentra en una posicindada... por ejemplo si la lista es [2,1,6,4,9,7,5] y la posicin que quiero averiguar es la 3, entonces debe devolver elelemento en la posicin 3 que es 6.

    15-Haga un programa en haskell que dada tres listas del mismo tamao, devuelva una lista de tripletas as:

    Si las tres listas son [1,2,5,8] [7,4,2,4] [5,2,1,5]

    La lista de tripletas resultante es: [ (1,7,5) , (2,4,2), (5,2,1), (8,4,5) ]

    16-Se dice que un nmero N es nmero perfecto si la suma de sus divisores propios es igual a l mismo.

    El conjunto de divisores propios de un nmero N, est formado por todos sus divisores, Excepto l mismo. Ejs, losdivisores propios de 9 son 1 y 3. Los divisores propios de 6 son 1,2 y 3.

    Por lo tanto 6 es un nmero perfecto porque la suma de sus divisores propios 1 + 2 +3 es igual a l mismo (a 6). Y 9no es perfecto

    Hacer un programa en Haskell que dado un nmero entero positivo N, diga si es o no perfecto

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    13/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    13

    17-Se tiene un conjunto de n parejas de datos Xi, Yi donde cada pareja representa las coordenadas del punto i de unpolgono irregular de n lados. Suponga que las coordenadas se proporcionarn en orden adyacente. Elabore unprograma en haskell que dada dos listas de reales de igual tamao, que representan las coordenadas Xi, Yi de losvrtices de un polgono irregular, devuelva el rea del polgono. El rea del polgono irregular se puede calcularutilizando la siguiente frmula:

    Area = [(X0+X1)*(Y0-Y1 ) + (X1+X2)*(Y1-Y2)+. . .+ (Xn-1+X0)*(Yn-1-Y0)/ 2

    Suponga que los Xi ,Yi son reales y el polgono est determinado por cualquier nmero de puntos

    18-Construya un programa en haskell que dada dos listas que representan conjuntos, devuelva un valor de verdad quediga si el primer conjunto (lista) est contenido en el segundo conjunto (lista)

    Ejemplo

    Si las listas son [1,2,3,4 ] [3,4,5,6] la respuesta es falseSi las listas son [1,2,3,4 ] [8,1,3,2,4,5,6] la respuestas es true

    Si las listas son [ ] [8,1,3,2,4,5,6] la respuestas es true

    Si las listas son [8,1,3,2,4,5,6] [1,2,3,4 ] la respuestas es false

    19- Hacer un programa en Haskell que calcule los kprimeros trminos de la siguiente serie, retornndolos en una lista:

    1, 4, 2, 8, 4, 16, 8, ...... Determinada por:

    a1=1

    a2= 22 / a1 = 4

    a3= 23 / a2 = 2

    a4= 24/ a3= 8.....

    ak= 2k/ ak-1

    Al llamado kelementos 7 responder [1,4,2,8,4,16,8]

    20-Hacer un programa en Haskell para eliminar un nmero dentro de una lista de listas.Ejemplo si la lista original es [[1,2],[1,1,3,4],[1],[2,3,4]] y se desea eliminar el 1, entonces la lista resultante ser:[[2],[3,4],[],[2,3,4]]

    21- Hacer un programa en Haskell que dada una lista de listas de enteros, retorne una lista de listas sin los elementos

    repetidos.Al llamado eliminarrepetidos [ [1,2,3] , [1,2] , [6,3,8], [2,1], [6,3,8] , [1,2], [3,4], [8,6,3], [8,6] ]

    retorna [ [1,2,3] , [1,2], [3,4], [8,6,3], [8,6] ]

    Recordar que para este caso dos listas de entero se consideran iguales si tienen los mismos elementos sin importar elorden.

    22- Supngase que se quiere un programa en haskell que ayude al procesamiento estadstico bsico de un conjunto dedatos numricos

    Realice las funciones que considere necesarias para

    Hallar la media de una lista de datos

    Encontrar la moda de los datos (el dato que ms se repite)

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    14/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    14

    Hallar la desviacin estndar dada por la siguiente formula n

    xxa

    n

    i

    i

    1

    2

    )(

    donde_

    x es la media de losdatos

    Hallar una distribucin de frecuencia en la que dada una lista intervalos es decir de pares (x , y), devuelva un lista deenteros con la cantidad de datos tales que x

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    15/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    15

    27-Realizar un programa en Haskell que permita insertar un elemento de cualquier tipo en una posicin determinada deuna lista de objetos de mismo tipo de elemento a insertar. Por ejemplo:

    insertar (pos, lista,elemento)

    El llamado a la funcin insertar ( 0, [1,2,4] , 7) devuelve [7,1,2,4].

    Insertar ( 2, [ [1,2], [ ], [4] ] , [7,3] ) devuelve [ [1,2], [ ], [7,3] , [4] ] .

    Insertar ( 10, [ (1,2), (3,4), (7,9) ] , (71,2) ) devuelve [ (1,2), (3,4), (7,9) , (71,2) ]

    28-Realizar un programa en Haskell que permita verificar si los elementos de una lista de lista de enteros, estn en unalista sencilla de enteros.

    Contenido(listadelistas, listasencilla)

    contenido ( [ [ ], [1,7] , [1,2] ], [7,2,3] ) retorna true

    29-Extraer una seccin de una lista de cualquier cosa, desde una posicin dada hasta otra

    Extraer(posinicial, posfinal, lista)

    El llamado a la funcin extraer ( 1, 3 , [1,2,4,5,6,3,6,4,2] ) devuelve [1,2,4].

    El llamado a la funcin extraer ( 3, 5 , [1,2,4,5,6,3,6,4,2] ) devuelve [4,5,6].

    Extraer ( 3, 3, [ [1,2], [ ], [4], [2,3,4], [ ] ] ) devuelve [ [ 4 ] ] .

    Extraer ( 3 ,20, [ (1,2), (3,4), (7,9) , (71,2), (7,2) ] ) devuelve [(7,9) , (71,2), (7,2)]

    30-Dada una lista de listas de enteros sustituya las listas que terminen en un nmero dado; por la lista vaca. Porejemplo en el llamado

    Sustituir ( 3 , [ [1,2,5] , [3] , [ ] , [6,7,3,4] , [4,3] ] ) devuelve la lista de listas [ [1,2,5] , [ ] , [ ] , [6,7,3,4] , [ ] ]

    31- Dada una lista de enteros, armar una lista de pares tomando en orden de a dos elementos asi:

    armar [1,2,3,4,5,6,7,8]

    retorna [(1,2), (3,4), (5,6), (7,8)]

    Si el nmero de elementos de la lista inicial es impar, debe ignorar el ltimo elemento

    armar [1,2,3,4,5,6,7,8,9]

    retorna [(1,2), (3,4), (5,6), (7,8)]

    32-Eliminar los elementos repetidos de una lista de cualquier cosa.Eliminar(lista)

    33-Dado el siguiente cdigo:

    type complejo = (Float, Float)

    type solucion=(complejo, complejo)

    Donde complejo representa un numero imaginario, es decir el complejo (w,z) representa el imaginario wi +z donde w

    (parte imaginaria) y z(parte real) son nmeros reales y donde i es 1 , cuando w=0 el nmero corresponde a unnmero real es decir que el coeficiente de la parte imaginaria es cero.

    Hacer un programa en haskell que encuentre la solucin a una ecuacin cuadrtica 02 cbxax

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    16/57

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    17/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    17

    else

    h : (quitarrep t)8. nsimo 1 (h:_) = h

    nsimo n (_:t) = nsimo (n-1) t

    9. pares n = n : pares (n+2)

    10. trenzar ((x:r):t) = x : trenzar (t ++ [r])

    trenzar ([]:t) = trenzar t

    trenzar [] = []

    36-Analice el siguiente programa y practique diversos llamados a las funciones all definidas

    module Cambiodemoneda where

    type Precio= (Moneda,Float)data Moneda = Euro | Peseta | Lira | Marco | Franco | Florin | Escudo | Dolar | Yen | Libra

    deriving Show

    unEuro :: Moneda -> Float

    unEuro Euro = 1.0

    unEuro Peseta = 166.386

    unEuro Lira = 1936.27

    unEuro Marco = 1.95583

    unEuro Franco = 6.55957

    unEuro Florin = 2.20371

    unEuro Escudo = 200.48unEuro Dolar = 0.885

    unEuro Yen = 111.360

    unEuro Libra = 0.621

    cambio :: Precio -> Moneda -> Precio

    cambio (m,x) nueva = (nueva, (unEuro nueva) * (x / (unEuro m) ) )

    suma :: Moneda -> Precio -> Precio -> Precio

    suma m p1 p2 = let

    (a,b) = cambio p1 m

    (c,d) = cambio p2 m

    in

    (m,b+d)

    Cambie el tipo de datos Moneda por las siguientes monedas: Peso, Bolivar, Dlar, Euro, Sol, donde la monedafundamental (base) sea el Peso

    Pruebe el llamado a las anteriores modificaciones as:

    unPeso Euro

    unPeso Dlar

    unPeso Bolivar

    cambio Bolivar (Peso,5000)

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    18/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    18

    cambio Euro (Peso, 50000)

    cambio Peso (Euro, unPeso Euro)suma Pesos (Euro,100) (Bolivar 5000)

    suma Pesos (Euro,100) (Bolivar 5000)

    suma Dlar (Euro,10) (Dlar,10)

    37-Dado el siguiente programa en Haskell, definir que hace, como funciona y probar con diferentes llamados desde elprompt, analizando las salidas obtenidas. Para ello es importante conocer algunas funciones y operadores predefinidosen el prelude como: div, mod, ++, !!

    module Cambiodebase where

    aBase :: Int -> Int -> [Int]

    aBase b n = if (n Int -> String

    aB b n = aStr (aBase b n)

    38-Estudie el siguiente programa en haskell, recordando que el tipo de datos a en las expresiones, representan tipospolimorficos, luego pueden ser listas, nmeros, caracteres, tuplas, etc.

    type Bolsa a = [(a,Int)]

    vacia :: Bolsa a -> Bool -- o bien: vacia :: [(a,Int)] -> Bool

    vacia [] = True

    vacia _ = False

    anadir :: (Eq a) => a -> Bolsa a -> Bolsa a

    anadir x [] = [(x,1)]

    anadir x ((y,n):t) = if (x==y) then (y,n+1):t

    else (y,n) : (anadir x t)anadir2 :: (Eq a) => (a,Int) -> Bolsa a -> Bolsa a

    anadir2 p [] = [p]

    anadir2 (z,m) ((y,n):t) = if (z==y) then (y,n+m):t

    else (y,n) : (anadir2 (z,m) t)

    unir :: (Eq a) => Bolsa a -> Bolsa a -> Bolsa a

    unir (h:t) b = unir t (anadir2 h b) -- o bien anadir2 h (unir t b)

    unir [] b = b

    Probar el anterior programa con llamados como los siguientes y analizar el resultado

    ---en estos llamados la a representa nmeros enteros

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    19/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    19

    anadir 3 []

    anadir 5 (anadir 3 [])anadir 3 (anadir 2(anadir 3 (anadir 5 (anadir 3 []))))

    ---en estos dos llamados la a representa una lista de enteros

    anadir [1,2] [([],1)]

    anadir [1,2] (anadir [1,2] [([],1)])

    - -Realice llamados para cuando la a este representando tuplas de dos elementos como por ejemplo (2,3) (paresordenados)

    - -Realice pruebas de llamados a las funciones anadir2 y unir

    39- Hacer un programa en Haskell que dada una lista de listas de enteros, retorne una lista de listas sin los elementosrepetidos.

    Al llamado erepetidos [ [1,2,3] , [1,2] , [6,3,8], [2,1], [6,3,8] , [1,2], [3,4], [8,6,3], [8,6] ]

    retorna [ [1,2,3] , [1,2], [3,4], [8,6,3], [8,6] ]

    Recordar que dos listas de entero se consideran iguales si tienen los mismos elementos sin importar el orden.

    Analice el siguiente codigo y escriba otro programa diferente

    erepetidos::[[Int]]->[[Int]]

    erepetidos [] = []

    erepetidos (c:col) = if esta c col then

    erepetidos colelse

    c:erepetidos col

    esta:: [Int]-> [[Int]] -> Bool

    esta _ [] = False

    esta x (c:col) = if igual x c then

    True

    else

    esta x col

    igual:: [Int]->[Int]->Bool

    igual x y = (contenida x y) && (contenida y x)

    contenida:: [Int]->[Int]->Bool

    contenida [] _ = True

    contenida (c:col) x = (elem c x) && (contenida col x)

    40-Hacer un programa en Haskell que dadas dos listas de cualquier cosa que representan conjuntos, halle el productocartesiano de dichos conjuntos, es decir que retorna una lista de pares donde las primeras componentes son elementosdel primer conjunto y las segundas componentes son elementos del segundo conjunto.

    Al llamado pcartesiano [2,3,4] [1,8]

    Retorna [ (2,1), (2,8), (3,1), (3,8) , (4,1), (4,8) ]

    Analice el siguiente codigo y escriba otro programa diferente

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    20/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    20

    combinar:: a->[b] ->[(a,b)]combinar x [] = []

    combinar x (c:col) = (x,c):combinar x col

    pcartesiano:: [a]->[b]->[(a,b)]

    pcartesiano [] _ = []

    pcartesiano (c:col) x =(combinar c x) ++ (pcartesiano col x)

    41-Ordenar listas en Haskell

    Los algoritmos de ordenacin, as como los de bsqueda, tambin son muy estudiados en el rea de ciencia de lacomputacin. Bsicamente, el trabajo de un algoritmo de ordenacin es establecer una relacin de orden en unasecuencia de elementos. En este caso la secuencia de elementos corresponde a una lista cuyos elementos pertenecen auna relacion de orden.A continuacin se describen algunos algoritmos de ordenacin y su implementacin en Haskell:

    Insert Sort:Se trata de un algoritmo en el que va haciendo comparaciones del primer elemento de la lista con el restoy se inserta ese elemento cuando encuentre su ubicacin adecuada Es prcticamente un intercambio de elementos hastaque la lista se encuentre ordenado.

    En haskell primero se crea una funcin que inserte un elemento dado en una lista en su correcta ubicacin, esta funcincompara el elemento con la cabeza de la lista y si es menor lo inserta delante, caso contrario sigue recorriendo la listarecursivamente. As:

    insert::Ord a => a -> [a] ->[a]

    insert e [] = [e]

    insert e (x:xs) | e[a] ->[a]insertSort [] = []

    insertSort (x:xs) = insert x (insertSort xs)

    de tal manera que al llamado insertSort [45,23,78,96,22,7,6,14] responder [6,7,14,22,23,45,78,96]

    El algoritmo insertSort no es tan eficiente comparado a otros, pero se recomienda usarlo con listas pequeos y cuandoes necesario una solucin rpida, dada su facilidad de programacin.

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    21/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    21

    Quick Sort:Algoritmo que utiliza la tcnica divide y vencers, es uno de los algoritmos ms conocidos y eficientespor su rapidez. Consiste en tomar un elemento pibote y a partir de l generar 2 sublistas una de los menores y una delos mayores a l. Y con cada una de estas sublistas hacer lo mismo, es decir es un algoritmo recursivo.

    quickSort::Ord a=>[a]->[a]

    quickSort [] = []

    quickSort (x:xs) = quickSort(menores) ++ [x] ++ quickSort(mayores)

    where

    menores = [y | y [a] ->[a] ->[a]merge [] l2 = l2

    merge l1 [] = l1

    merge (x:xs) (y:ys)

    | x[a] ->[a]

    mergeSort [] = []

    mergeSort l = merge (mergeSort izq) (mergeSort der)

    where

    mitad = (div (length l) 2)

    izq = take mitad l

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    22/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    22

    der = drop mitad l

    Se obtiene cual es la mitad de la lista para obtener 2 divisiones con igual nmero de elementos, para ello simplementese divide la longitud de la lista (length) en 2. Las funciones take y drop se utilizan para tomar y quitar elementos de unalista, las veremos ms adelante. Pero aqu el objetivo es tener 2 listas y despus con la funcin Merge ordenarlas.

    De tal manera que al llamado mergeSort [1,3,5,7,9,2,4,6,8] responder [1,2,3,4,5,6,7,8,9]

    2.7 Funciones predefinidasEstudiar y practicar los siguientes operadores y algunas funciones predefinidas en el prelude de Hugs (Haskell)

    (&&) :: Bool -> Bool ->Bool - - and lgico

    (||) :: Bool -> Bool ->Bool - - or lgico

    not :: Bool -> Bool

    (**):: a -> a -> a - - potencia de enteros

    (++):: [a] ->[a]->[a] - - concatena dos listas

    abs:: a->a

    sin:: a->a

    cos:: a->a

    tan:: a->a

    pi:: a

    concat::[[a]]->[a]

    div:: a ->a->a -- ---- se puede usar asi: div 5 2 o bien 5`div`2

    mod:: a ->a->a

    divMod:: a ->a ->(a,a)

    take :: Int ->[a] ->[a]

    drop :: Int ->[a] ->[a]

    sum :: [a]->a

    elem :: a->[a]->Bool

    even ::a -> Bool

    odd ::a -> Bool

    head::[a]->alast::[a]->a

    tail ::[a]->[a]

    length :: [a]->Int

    maximum :: [a]->a

    minimum :: [a]->a

    reverse::[a]->[a]

    Funciones de orden superior

    all:: (a->Bool) -> [a] ->Bool

    any :: (a->Bool) -> [a] ->Bool

    takeWhile (a->Bool) ->[a] -> [a]

    map :: (a->b) ->[a]->[b]

    break :: (a -> Bool) -> [a] -> ([a],[a])

    span :: (a -> Bool) -> [a] -> ([a],[a])

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    23/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    23

    3 Paradigma de Programacin Lgica42-Realice un breve estudio para sintetizar cada uno de los siguientes conceptos y temas

    Paradigma (independiente del contexto de la informtica)

    Programacin de computadores

    Paradigma de Programacin

    Lenguaje de Programacin

    Diferentes clasificaciones de paradigmas de programacin

    Paradigmas Imperativo y declarativo (conceptos y principales diferencias)

    Paradigma de programacin orientado a objetos

    Paradigmas de programacin lgica

    Paradigmas de programacin funcional

    3.1 Lgica Proposicional43-Defina

    Lgica

    Lgica proposicional

    Proposicin

    Constante proposicional (valor de verdad)

    Variable proposicional

    Operaciones lgicas (resuma las tablas de verdad para cada operacin)

    Expresiones lgicas

    Tablas de verdad

    Formas normales de una expresin proposicional

    44-Relacione cada uno de los conceptos de la derecha con las expresiones de la izquierda

    ( ) Reglas que definen las expresiones que pueden escribir enun lenguaje

    a. Lxico

    ( ) Conjunto de conceptos, teoras, herramientas que soportanun lenguaje de programacin

    b. Proposicin

    ( ) Expresin de la cual se puede afirmar que es verdadera ofalsa c. Paradigma lgico

    ( ) Conjunto de palabras vlidas dentro de un lenguaje deprogramacin

    d. Predicado

    ( ) Expresin lgica que representa una relacin entre objetoso una caracterstica de un objeto

    e. Sintaxis

    ( ) f. Reglas de inferencia

    ( ) Significado asociado a una expresin en un lenguaje g. Variable proposicional

    ( ) Formado por un lxico, una gramtica y una semntica h. Reglas de equivalencia

    ( ) Cuando se utiliza un lenguaje para especificar la solucin i. Ortografa

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    24/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    24

    a un problema en forma de pasos lgicos, secuenciales yfinitos... se dice que el lenguaje pertenece a un

    ( ) Mecanismo mediante el cual de un conjunto deafirmaciones vlidas se puede deducir nuevoconocimiento vlido.

    k. Palabras claves

    m. Paradigma funcional

    n. Semntica

    p. Paradigma de programacin

    q. Paradigma imperativo

    r. Lenguaje de programacin

    45-Relacione cada uno de los conceptos de la derecha con las expresiones de la izquierda

    ( ) Mecanismo mediante el cual de un conjunto de afirmacionesvlidas se puede deducir nuevo conocimiento vlido.

    a. Lxico

    ( ) Expresin de la cual se puede afirmar que es verdadera ofalsa

    b. Proposicin

    ( ) Conjunto de palabras vlidas dentro de un lenguaje deprogramacin

    c. Paradigma lgico

    ( ) Smbolo que representa una proposicin o una expresinlgica

    d. Predicado

    ( ) Expresin lgica que representa una relacin entre objetos ouna caracterstica de un objeto

    e. Sintaxis

    ( ) Reglas que definen las expresiones que pueden escribir enun lenguaje

    f. Reglas de inferencia

    ( ) Significado asociado a una expresin en un lenguaje g. Variable proposicional

    ( ) Formado por un lxico, una gramtica y una semntica h. Reglas de equivalencia

    ( ) Cuando se utiliza un lenguaje para especificar la solucin aun problema en forma de pasos lgicos, secuenciales yfinitos... se dice que el lenguaje pertenece a un

    i. Ortografa

    ( ) Conjunto de conceptos, teoras, herramientas que soportanun lenguaje de programacin

    k. Palabras claves

    m. Paradigma funcional

    n. Semntica

    p. Paradigma de programacin

    q. Paradigma imperativo

    r. Lenguaje de programacin

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    25/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    25

    46-Realizar un resumen de las operaciones lgicas en la siguiente tabla

    p q p q ~ p p q pq pq

    47-Encuentre la expresin representada en esta tabla de verdad

    p q r ?

    V V V F

    V V F FV F V F

    V F F V

    F V V V

    F V F V

    F F V F

    F F F F

    48-Verificar si es tautologa o no( p ( p q ) ) q

    ( p ( q p) )q

    ((pq) (q r)) (p r)

    ( (p p) q ) ~q

    (p (p q) ) p

    ( (p ~p) q) ~ q

    49-Dadas las siguientes proposiciones compuestas, hallar su valor de verdad si: p = v q = f r = - p s = - r

    (p q) ((r s) p)

    (p (r s) q ) falso

    ((pq) (q r)) (p r)

    50-Formalice cada uno de los siguientes enunciados en trminos de lgica proposicional

    Si Micaela ganas las olimpiadas, todos la admiran y ella ser rica

    Si la liebre est alerta y es rpida, ni el zorro ni la lince podrn atraparla

    Si no estoy equivocado, ella conduca un auto rojo y haba un hombre sentado a su lado

    Podemos o bien tratar de obtener la aprobacin de la amortizacin y comprar la casa, o bien esperar si llegamos a unacuerdo mejor

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    26/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    26

    Si hoy hay clase de clculo a todos nos va bien y sacaremos buenas notas, y si no hay clase de clculo estudiaremospara sacar buenas notas.

    La lgica proposicional es fcil y til si y solo si los estudiantes la aprenden y los profesionales la aplican.

    Una proposicin puede ser verdadera si su negacin es falsa.

    Hoy hay quiz si los estudiantes no preguntan

    Dos es primo por lo tanto dos es el nico primo par

    Si 10 es primo, 10 no puede ser igual a 2 por 5. 10 es igual a 2 por cinco. Por lo tanto 10 es primo

    Prolog es fcil si los estudiantes desarrollan los ejercicios recomendados y prolog es difcil si los estudiantes nopreguntan.

    6 es par porque 6 un nmero mltiplo de 2

    3.2 Reglas de equivalenciaNotacin utilizada en este documento:Conjuncin Disyuncin Implicacin

    Negacin ~Equivalencia

    Reglas de equivalencia1. Doble Negacin (DN)

    p = p

    2. Conmutacin (CONM)(p q) = (q p)(p q) = (q p)

    3. Asociacin (AS)[p (q r)] = [(p q) r][p (q r)] = [(p q) r]

    4. Distribucin (DIS)[p (q r)] = [(p q) (p r)][p (q r)] = [(p q) (p r)]

    5. Teoremas de Morgan (TM)

    (p q) = (p q)(p q) = (p q)

    6. Implicacin (IMP)(p q) = (p q)

    7. Contraposicin (CP)(p q) = (q p)

    9. Equivalencia (EQ)[p q] = [(p q) (q p)][p q] = [(p q) (~ p ~ q)]

    10. Identidad (ID)( p F ) = p( p V ) = p

    11. Medio Excluido (ME)

    ( p ~ p ) = V( p ~ p ) = F

    12. Dominacin (DOM)( p V ) = V( p F ) = F

    13. Idenpotencia (IDEMP)( p p ) = p( p p ) = p

    14. Absorcin (AB)(p q) = (p (p q))

    15. Exportacin (EXP)[(p q) r] = [p (q r)]

    51-Simplificar las siguientes expresiones

    ( ( p V ) (V q) ) (p p)

    ( (p p) q ) ~q

    (p (p q) ) p

    ( (p ~p) q) ~ q

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    27/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    27

    52-Dadas las siguientes proposiciones compuestas, hallar su valor de verdad si: p = q = falsa ( Verdadera, Falsa,Depende del valor de verdad de r y/o s)

    p~rq~p~ rqp

    )p~(rq~p~ prqp

    rqp~~q~r~q~~ p

    )p~(rq~p~ prqp

    )~p~(rq~p~ prqp

    rqp~~q~r~q~~ p

    ))(()~))~((( prqrrqp ))((~)~)~((~ psrqrqp

    53-Utilizando las leyes de equivalencia, demuestre las siguientes equivalencias:

    (p q ) (q r) = q (p r)

    ((p q ) p ) = F

    (p ( r s ) ) = ( p r ) ( p s )

    (p q) = (p q) (q p)

    (p q) q = p q

    ((p q) r) ( p r q) = p r

    54-Relacione cada uno de los conceptos de la derecha con los de la izquierda

    ( ) Expresin lgica que sin importar los valores de verdad de lasvariables proposicionales siempre es verdadera

    a. Conectivos lgicos

    ( ) Si p es verdadera y q es falsa entonces la expresin qp b. Proposicin

    ( ) Si p es verdadera y q es falsa entonces la expresin Fqp )(~ c. Es equivalente a V

    ( ) Expresin de la cual se puede afirmar que es verdadera o falsa d. Predicado

    ( ) Si p es verdadera y q es falsa entonces la expresin pqp ~)(~ es

    e. Es equivalente a F

    ( ) Expresin lgica que sin importar los valores de verdad de las

    variables proposicionales siempre es Falsa

    f. Reglas de equivalencia

    ( ) Si p es Falsa y ~q es falsa entonces la expresin rqp ~)(~ g. Variable proposicional

    ( ) Smbolos que se utilizan para unir proposiciones simples h. Es equivalente a r~

    ( ) Una expresin lgica puede ser sustituida por otra expresin lgicaequivalente haciendo uso de...

    i. Contradiccin

    ( ) La expresin ))()((~ FrVp k. Lgica

    m. Constante proposicional

    n. Tautologa

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    28/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    28

    p. Es equivalente a p~

    q. Es equivalente ap

    r. Es equivalente a q~

    55-La negacin lgica del enunciado "Si hoy hay parcial entonces sacar buena nota" es:

    a. Si no hay parcial entonces no sacare buena nota

    b. Si hay parcial entonces no sacar buena nota

    c. Hoy hay parcial y no sacar buena nota

    d. Hoy no hay parcial o no sacar buena nota

    e. Ninguna de las anteriores

    56-La negacin lgica del enunciado "Si te portas bien entonces te llevo al cine" es:

    a. Si no te portas bien entonces no te llevo al cine

    b. Si te portas bien entonces no te llevo al cine

    c. Te portas bien y no te llevo al cine

    d. Ninguna de las anteriores

    57-La negacin lgica del enunciado "hoy hay parcial de paradigmas y a todos nos va bien" es:

    a. hoy hay parcial de paradigmas y a todos nos va mal

    b. hoy no hay parcial de paradigmas y a todos no nos va mal

    c. A todos nos va mal u hoy no hay parcial de paradigmas

    d. hoy hay parcial de paradigmas o a todos nos va bien

    e. Ninguna de las anteriores

    58-La negacin lgica del enunciado "hoy hay parcial de lgica y hay clase de calculo" es:

    a. hoy hay parcial de lgica no hay clase de clculo

    b. hoy no hay parcial de lgica y no hay clase de clculo

    c. hoy no hay clase de clculo o no hay parcial de lgica

    d. hoy hay parcial de lgica o hay clase de clculo

    e. Ninguna de las anteriores

    59-Cual es la negacin lgica del enunciado "hoy hay quiz de paradigmas si hoy es viernes?. Justifique su respuesta

    60-Esta expresin lgica rqp )(~ es equivalente a:

    a. )~(~ qpr

    b. rqp )~(~

    c. qpr ~

    d. )(~~ rqp

    e. a y b

    f. a y c

    g. a y d

    h. b y c

    i. Toda las anteriores

    j. Ninguna de las anteriores

    61-Escriba por lo menos 10 formas equivalentes de la siguiente expresin ( (r ~p) q) ~ q

    62-Simplificar a una forma normal

    (p ( pq))p

    p (q ( p q ) ) ( ( p q ) p) q

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    29/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    29

    ( ( p q ) r ) q

    (p q) r(p q) (r ~q)

    ( ( p q ) r ) q

    )()(~ rpqp

    rqp )(~

    )())()(( qprqqp

    63-Reducir la siguiente expresin a una forma normal conjuntiva

    p (q p)

    ( p q ) r

    3.3 Razonamientos con lgica ProposicionalUn razonamiento es el proceso mediante el cual a partir de un conocimiento dado como cierto (premisas) se deducenuevo conocimiento (conclusin) aplicando reglas de equivalencia y reglas de inferencia.

    Reglas de inferencia1. Modus Ponens (MP)

    p qp

    Infiere q

    2. Modus Tollens (MT)p q~ q

    Infiere ~p

    3. Silogismo Hipottico (SH)p qq r

    Infiere p r

    4. Silogismo Disyuntivo (SD)p q~ p

    Infiere q

    5. Casos (CAS)p q

    p qInfiere q

    6. Dilema constructivo (DC)p qr s

    p rInfiere q s

    7. Simplificacin (S)p q

    Infiere p

    8. Conjuncin (C)pq

    Infiere p q

    9. Inconsistencia (IN)pp

    Infiere q

    10. Adicin (AD)p

    Infiere p q

    64-Formalizar el siguiente razonamiento

    La lgica es difcil y til. Si la lgica es til y los estudiantes la aprenden entonces la lgica es fcil. Por lo tanto losestudiantes no aprenden la lgica.

    Los pasos para formalizar un razonamiento son los siguientes.

    Identifique las premisas del razonamiento. Tpicamente una premisa termina con un punto seguido o aparte. En esteejercicio se identificaros tres premisas. Las dos primeras corresponden a las hiptesis del razonamiento y la tercera a laconclusin.

    Identifique las proposiciones simples en cada una de las premisas, interprete su significado y asigne una variable

    proposicional a cada una de las proposiciones simples en su enunciado afirmativo. Tenga cuidado con no asignar dos

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    30/57

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    31/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    31

    65-Aplique el anterior procedimiento para simbolizar el siguiente razonamiento.

    Si sobra tiempo en la clase entonces los estudiantes preguntan o hay quiz. Si hoy es viernes entonces sobra tiempo en laclase. Los estudiantes no preguntaron. Por lo tanto si hoy es viernes entonces hay quiz.

    q (p s)

    r q

    p

    Conclusin r s

    66-Relacione cada tem de la derecha con las expresiones de la izquierda

    ( ) Expresin equivalente a Si hoy esjueves entonces no hay examen de

    paradigmas

    a. Hoy hay examen de paradigmas si es jueves

    ( ) La negacin de Si hoy es juevesentonces no hay examen de

    paradigmas

    b. Hoy no hay examen de paradigmas y no es jueves

    ( ) Expresin equivalente a Si hoy no hayexamen de paradigmas entonces hoy noes jueves

    c. Hoy no hay examen de paradigmas o no es jueves

    ( ) La negacin de Si hoy no hay examende paradigmas entonces hoy no es

    jueves

    d. Hoy es jueves y no hay examen de paradigmas

    ( ) Expresin equivalente a: No es ciertoque si hoy no hay examen deparadigmas entonces hoy es jueves

    e. Hoy es jueves y hay examen de paradigmas

    67-Utilizando las reglas de inferencia y de equivalencia, demostrar la conclusin a partir de las premisas en lossiguientes razonamientos

    p q

    r

    ( r q)

    p q

    (s p) r

    q

    Conclusin ... p Conclusin... r

    c

    a b

    ( c b )

    a ( c b)

    (c b) d

    Conclusin ... a Conclusin ... a d

    68-Elabore una sntesis de las reglas de inferencia, explique con sus palabras y de un ejemplo citando expresioneslgicas en lenguaje natural.

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    32/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    32

    69-Analice la siguientedemostracin de validez delrazonamiento

    (1) p q (premisa)

    (2) ~p (~ p r) (premisa)

    Concluir (q p) p

    Demostracin:

    (3) p (p q) abs. (1)

    (4) p (q p) conm. (3)

    (5) p (~ p . r) imp. (2)

    (6) (p ~ p) (p r)dis. (5)

    (7) p ~ p sim. (6)(8) (p ~p) ~ q ad. (7)

    (9) p (~ p ~ q)asc. (8)

    (10) p ~ (p q) tm. (9)

    (11) p ~ (q p)conm. (10)

    (12) ~p ~ (q p)imp. (11)

    (13) (q p) p coptra. (12)

    (14) [(q p) p] [p (q p)]con. (13), (4)

    (15) (q p) p eq. (14)

    Encuentre las leyes o reglas quese aplicaron en la derivacin decada una de lneas siguientes a las

    premisas

    70-

    ~p (p)

    ~p q

    p q

    71-

    (p q) (p)

    r (p)

    r (p q)

    (r p) (r q)

    72-

    (p q) r (p)

    p (p)

    p q

    r

    73-

    (p s) (q r) (p)

    p q (p)

    p

    q r

    q

    r

    74-(p q) (r s) (p)

    (s t) ~ (r s) (p)

    ~ (r s) (s t)

    (r s) (s t)

    (p q) (s t)

    75-

    (p q) r (p)

    (r s) t (p)p q (p)

    (p q) (r s)

    r t

    76-

    p (q s) (p)

    ~ r ~ (q s) (p)

    p (p)

    (q s) r

    p r

    77-

    ~p (p)

    ~p ~q

    ~ (p q)

    ~ (p q) r

    (p q) r

    78-

    ~ (p q) (p)

    ~ (~p q)~ ~p ~q

    p ~q

    ~q

    79-

    p q (p)

    q [p (r s)] (p)

    r s (p)

    ~ (r s) (p)

    (r s) (~r ~s)

    ~r ~s

    ~ (r s)

    p [ p ( r s)]

    (p p) (r s)

    p (r s)

    ~ p

    ~p q

    p q

    80-

    (q r) (s p) (p)

    ~s (p)

    ~s ~p

    ~(s p)

    ~ (q r)

    ~q ~r

    ~q

    ~q p

    Demuestre la validez de lossiguientes argumentos,deduciendo la conclusin a partirde las premisas, mediante laaplicacin de las reglas deinferencia.

    81-

    p

    (p q) r

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    33/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    33

    Conclusin ~r ~q

    82-

    p (q r)

    ~q ~r

    Conclusin ~p

    83-

    ~ p q

    ~ r ~q

    Conclusin p r

    84-~ (q ~r)

    p q

    Conclusin p r

    85-

    (~p q) r

    p q

    Conclusin r s

    86-

    ~r

    ~p (r q)

    Conclusin p

    87-

    q (p r)

    ~p

    Conclusin q

    88-

    ~r ~ (q p)

    p s

    Conclusin r t

    89-

    ~p (q r)

    ~q

    Conclusin p

    90-~s

    q (r s)

    Conclusin ~q ~r

    91-

    ~p (q r)

    conclusin (p q) (p r)

    92-~p

    conclusin ~ (p ~q)

    93-

    p q

    ~ (q ~r)

    Conclusin p s

    94-(r s) (q p)

    ~ p

    Conclusin r

    95-

    p q

    Conclusin p ~q

    96-~r (q p)

    Conclusin ~p v (~r q)

    97-

    ~r p

    (p q) r

    Conclusin ~q

    98-

    r s

    (t ~r) ~sConclusin ~r

    99-

    ~ p q

    ~ (~ s p) ~r

    ~q

    Conclusin ~r

    100-

    ~p

    (q p) r

    ~q

    Conclusin ~ (r t)

    101-

    p (~q s)

    q ~ p

    Conclusin ~q

    102-

    ~r ~ (q p)

    ~r p

    Conclusin ~q

    103-~ (p q) ~r

    (~ p q ) r

    Conclusin p

    104-

    p (q r)

    ~r s

    ~s t

    Conclusin t (~q ~ p)

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    34/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    34

    105-q (r s)

    r ~p

    ~ (~q p)

    Conclusin s

    106-

    s u

    ~(r ~u)

    ~s

    conclusin ~r

    107-

    q (p s)

    r q

    p

    Conclusin r s

    108-(p q) (r s)

    ~s

    p

    Conclusin r t

    109-

    (p q) (s t)

    ~p r

    s ~t

    Conclusin r

    110-p q

    r s

    (q s) t

    ~t

    Conclusin ~ (p r)

    111-

    ~p (q r)

    (p s) t

    ~ (p s) ~r~t

    Conclusin ~q

    112-

    ~ (p ~s) ~q

    ~s(~t ~p)

    Conclusin ~q t

    113-(p r) (p q)p ~q

    Conclusin r

    114-

    [p (q r)] (s t)

    ~q p

    Conclusin ~ t s

    115-

    [ q (r s)] (q r)

    ~ (s ~p)

    Conclusin p (q s)

    116-

    p [(q u) r]

    (~r s) t

    Conclusin p (u t)

    117-

    p (r q)

    (r q) s

    Conclusin p s

    118-

    [(p q) (r s)] (s q)

    (q t ) ( t u)

    (u ~r)

    Conclusin ~q

    119-

    [(q t) (u s)] (r ~s)q u

    t r

    Conclusin p

    120-

    ~ p q

    (s ~p) ~r

    ~q

    Conclusin ~r

    Simbolice los siguientes razonamientos y demuestre su validez utilizando las reglas de equivalencia y de inferencia

    121-Si Samuel es inteligente y estudia mucho, sacar buenas notas y aprobar el curso. Si Samuel estudia mucho, perocarece de inteligencia, sus esfuerzos sern justipreciados, y si los son aprobar el curso. Samuel es inteligente, por locual estudia mucho. Luego, Samuel aprobar el curso. (I. E, B. C, A)

    122-Si el despensero hubiera estado presente, entonces habra sido visto, y si hubiera sido visto, habra sidointerrogado. Si hubiera sido interrogado, habra contestado, y si hubiera contestado se le habra odo. Pero eldespensero no fue odo. Si el despensero no fue visto ni odo, entonces debe haber estado en su trabajo. Si estaba ensu trabajo, debi estar presente. Luego, el despensero fue interrogado. (P, V, I, C, 0, T)

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    35/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    35

    123-Si se presentan los sntomas ordinarios de un resfro y el paciente tiene alta temperatura, entonces, si tienepequeas manchas en la piel, est con sarampin. Claro est que el paciente no puede tener esta enfermedad si suhistoria clnica revela que ya la tuvo. El paciente tiene alta temperatura y su historia clnica revela que ha tenidosarampin antes. Adems de los sntomas ordinarios de un resfro tiene manchas en la piel. Concluyo que el pacientetiene una infeccin viral. (0, T, M, S, R, V). Nota: al realizar este ejercicio, observar que la conclusin (V), no seencuentra en las premisas y, sin embargo, se puede deducir de ellas. Por qu? Porque sus premisas encierran unacontradiccin -encuntrela- y de una contradiccin se puede derivar cualquier cosa. Es decir, si una persona admite p.~p, puede aceptar lo que sea.

    124-Si Dios quisiera evitar el mal pero fuera incapaz de hacerlo, sera impotente; si fuera capaz de evitarlo pero noquisiera hacerlo, sera malvolo. El mal slo puede existir si Dios no quiere o no puede impedirlo. El mal existe. SiDios existe, no es impotente ni malvolo. Luego, Dios no existe. (Q, C, I, M, E, D).

    125-Si compro un automvil nuevo esta primavera o hago ajustar mi automvil viejo, ir a Canad en el verano yparar en Duluth. Visitar a mis padres, si paro en Duluth. Si visito a mis padres insistirn en que pase el verano conellos. Si insisten en que me quede con ellos durante el verano, estar all hasta el otoo. Pero si me quedo all hasta elotoo no ir a Canad. Por consiguiente no har ajustar mi automvil viejo. (N, H, C, D, V, I, 0).

    126-Si el despensero dijo la verdad, entonces la ventana estaba cerrada cuando entr a la habitacin, y si el jardinerodijo la verdad, entonces el sistema de riego automtico no funcionaba la noche del crimen. Si el jardinero y eldespensero mienten, entonces debe existir una confabulacin para proteger a alguien de la casa y habra habido un

    pequeo charco de agua en el piso junto a la ventana. Sabemos que la ventana no pudo estar abierta cuando eldespensero entr en la habitacin. Haba un pequeo charco de agua sobre el piso, justo al lado de la ventana. Luego,

    si hay una confabulacin para proteger a alguien de la casa, entonces el jardinero no dijo la verdad. (D, V, J. R, C, A).

    127-El jefe de ellos abandonara el pas si temiera ser capturado y no lo abandonara a menos que temiera sercapturado. Si temi ser capturado y abandon el pas, la red de espionaje enemiga estar desmoralizada y no tendr

    poder para saboteamos. Si no temi ser capturado y permaneci en el pas, eso significara que ignoraba la labor denuestros agentes. Si realmente ignora la labor de nuestros agentes, entonces nuestros agentes pueden consolidar su

    posicin dentro de la organizacin enemiga, y si lo logran, harn que la red de espionaje enemiga carezca de poder parasaboteamos. Luego carecer de poder para saboteamos. (J, T, E, P, 1, C).

    128-Si los estudiantes preparan el examen, entonces hay parcial de paradigmas, y si hoy hay parcial de paradigmasentonces los estudiantes lo respondern correctamente. Si los estudiantes responden el examen correctamente, sacaran

    buenas notas y si sacan buenas notas entonces aprobaran la materia. Los estudiantes no aprobaron la materia. Si no hayparcial de paradigmas y los estudiantes no aprobaron la materia entonces los estudiantes estaban enterados del examen.Si estaban enterados del examen entonces prepararon el examen. Por lo tanto hoy hay parcial de paradigmas o losestudiantes aprueban la materia.

    129-Los delincuentes se refugian en otro pas si y solo si Colombia es soberana y el gobierno no invade territorioextranjero. Los delincuentes se someten voluntariamente a la ley o se refugian en otro Pas. Si Colombia es soberanaentonces el gobierno invade territorio extranjero. Por lo tanto los delincuentes se someten voluntariamente a la ley

    130-Si los estudiantes hicieron la tarea entonces presentaran el parcial. Si los estudiantes estudiaron para el parcialentonces sacaran buenas notas. Si presentan el parcial o sacan buenas notas entonces pasaran la materia. Los

    estudiantes no pasaron la materia. Por lo tanto no hicieron la tarea y no estudiaron para el parcial.

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    36/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    36

    131-Los estudiantes de paradigmas no estudian o tienen suerte. Si los estudiantes de paradigmas son indisciplinados ono estudian, entonces no aprobaran el curso. Los estudiantes de paradigmas no tienen suerte. En conclusin losestudiantes de paradigmas no aprobarn el curso.

    132-La jubilacin no es un derecho o no es voluntaria, si y solo si las leyes colombianas no son justas. Si la jubilacinno es un derecho o es voluntaria, entonces, las leyes colombianas son justas. En conclusin si la jubilacin es underecho entonces es voluntaria.

    133-Si el estudiante presta atencin o presenta los parciales a tiempo entonces pasar la materia y mejorar elpromedio. El estudiante no pas la materia. Por lo que se deduce que no present los parciales a tiempo

    134-Los realitis de la televisin no son crueles o los Colombiamos somos masoquistas si y solo si los realitis son

    seguidos por los intelectuales. Los realitis son crueles y no son buenos para los nios. Los colombianos no somosmasoquistas. Por todo lo anterior deducimos que los realitis no son seguidos por intelectuales o la televisin es de malacalidad.

    135-Si la huelga es necesaria entonces los estudiantes se manifestarn. Si los estudiantes se organizan entonces ladictadura decaer. Si los estudiantes se manifiestan o la dictadura decae entonces la justicia no es ciega. La justicia esciega. Por lo tanto la huelga es innecesaria y los estudiantes no se organizarn

    136-Uribe ser candidato a la presidencia y los dems candidatos no tendrn garantas si pasa el referendo entonces. SiUribe es candidato o los dems candidatos no tienen garantas entonces las elecciones presidenciales no serninteresantes. Por lo tanto si las prximas elecciones son interesantes fue por que no paso el referendo

    137-Hoy hay energa elctrica o no ser necesario un plan b para el examen. Hoy hacen mantenimiento de la redelctrica si hay examen. Hoy no hacen mantenimiento de la red elctrica o no hay energa elctrica. Si hoy realizanmantenimiento de la red elctrica, entonces es necesario un plan b para el examen. Por lo tanto hoy no hay examen

    138-Espaa rein en la nueva granada o el movimiento comunero no tuvo xito. Si la esclavitud permaneci o Espaareino en la nueva granada entonces la libertad no fue real. El movimiento comunero tuvo xito. Por lo tanto la libertadno fue real.

    139-Si la corrupcin no es parte de la naturaleza humana o el gobierno la permite, entonces o el carrusel de lacontratacin no seguir funcionando o los corruptos irn a la crcel. Los corruptos no van a la crcel. La corrupcin no

    es parte de la naturaleza humana. Por lo tanto, los alcaldes seguirn haciendo malos contratos si el carrusel de lacontratacin sigue funcionando.

    140-Los exmenes parciales no se realizaran este ao si los estudiantes exigen flexibilidad acadmica. Si losestudiantes no exigen flexibilidad acadmica entonces no hay normalidad acadmica en la universidad. Los parciales serealizaran este ao. Por lo tanto no hay normalidad acadmica en la universidad.

    141- Si presente el parcial a tiempo entonces obtuve buena nota y aprob la materia. No obtuve buena nota si noestudie para el parcial. Presente el parcial a tiempo. Por lo tanto presente el parcial a tiempo, estudie para el parcial yaprob la materia.

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    37/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    37

    142- Si el TLC es conveniente para Colombia o se integra Colombia al ALBA entonces la economa se fortalece. Nohabr importaciones significativas o las exportaciones permanecen iguales si El TLC no es conveniente para Colombia.La Economa Colombiana no se fortalece. Si el TLC no es conveniente para Colombia y no se integra Colombia alALBA entonces las exportaciones no permanecern iguales. Por lo tanto no habr importaciones significativas

    3.4 Lgica de predicados.143-Defina los siguientes conceptos:

    Universo de discurso

    Predicado

    Trmino

    Cuantificador

    144-Cul es la diferencia entre la lgica de predicados y la lgica proposicional?

    145-Represente en trminos de lgica de predicados los siguientes enunciados:

    Alguna mujer es madre de Luisa

    Todos los seres humanos tienen una madre

    Algunos seguidores de Aristteles siguen a Aquino

    Todo amigo de Luis y de Carlos es amigo de Antonio

    Todo primo mayor de 2 es impar

    3.5 Representacin de Conocimiento (RC) con lgica de predicadosPor ser una forma de Representacin de Conocimiento (RC) tan natural, la lgica puede emplearse para describircualquier afirmacin dentro de cualquier dominio. Para realizar la representacin debe tenerse en cuenta el siguiente

    proceso:

    (1) Identificar el dominio en el cual se encuentra el conocimiento que se desee representar (matemticas, biologa,filosofa, medicina, etc.).

    (2) Interpretar el conocimiento formulado en el lenguaje natural.

    (3) Identificar los tipos de objetos de los que se habla en el enunciado

    (4) Separar o identificar las caractersticas de los objetos y/o relaciones entre los objetos que dan la idea de predicados.

    (5) Escoger los smbolos de la lgica para los predicados y el nmero de objetos involucrados en los predicados.

    Cuando un predicado expresa caracterstica de un objeto, solamente esta involucrado un objeto. Cuando expresarelacin estarn involucrados dos o ms objetos, en tal caso es necesario definir un orden en cada uno de los objetos,que determinaran el rol del objeto dentro del predicado.

    (6) Identificar los conectivos

    (7) Escribir la Formula Bien Definida (FBD). (Expresiones lgicas en forma de predicados)

    Por ejemplo

    Los peces excepto los tiburones son amables con los nios.

    (x,y) (pez(x) tiburn(x)) amable(x, y) nio(y)

    146-Exprese los siguientes enunciados en trminos de predicados.

  • 7/21/2019 Guia Paradigm as Deprogram Ac i On

    38/57

    Universidad de PamplonaFacultad de Ingenieras y ArquitecturaGua del estudiante para Paradigmas de Programacin

    Profesor: Luis Alberto Esteban Villamizar

    -----------------------------------------------------------------------------------------------------------------------------01-2015----------

    38

    Los mamferos son vertebrados y poseen un ciclo de vida completa.

    Los pjaros cantores vuelan.Ningn ser inerte muere.

    La ballena es un mamfero pero no es pez o reptil.

    Algunas aves no vuelan.

    La ciencia avanzar y la tecnologa tambin si hay investigacin cientfica.

    El 13 es nmero primo e impar.

    Todo amigo de Luis y de Carlos, es amigo de todo el mundo.

    Ningn nmero impar divide a todos los dems nmeros

    Si alguien puede hacerlo, Juan puede hacerlo.

    147-Exprese los siguientes razonamientos en trminos de predicadosP1: Ningn profesional es indeciso

    P2: Todos los buenos ingenieros son profesionales.

    P3: Carlos es un buen ingeniero

    Pl: Los escritores no saben de astronoma.

    P2: Los astrnomos saben de astronoma.

    P3: Algunos escritores saben interpretar seales astronmicas.

    P4: Pedro y Luis son escritores.

    Pl. 2 es primo.P2.- Para todo primo hay un primo mayor que l

    P3: Todo primo mayor que 2 es impar.

    C: Existen primos impares

    Pl: El murcilago es un animal mamfero.

    P2: Los animales son vertebrados o invertebrados.

    P3: Los mamferos son vertebrados y vivparos.

    Represente los siguientes razonamientos en trminos de predicados

    148-Todos los deportistas de baloncesto son altos y giles. Todos los deportistas de atletismo son delgados y rpidos.Existen algunos deportistas de natacin que no son delgados ni giles. Si existe un deportista de atletismo que no searpido y que tambin sea deportista de baloncesto, entonces tambin es deportista de natacin. Por lo tanto todos losdeportistas de baloncesto y de ftbol son de natacin.

    149-Todos los estudiantes de sistemas cursan paradigmas de programacin si y solo s aprueban estructuras deprogramacin. No todos los estudiantes de sistemas que cursan paradigmas, cursan sistemas operativos. Tod