{"id":3739,"date":"2013-10-05T08:44:46","date_gmt":"2013-10-05T06:44:46","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=3739"},"modified":"2013-10-05T08:44:46","modified_gmt":"2013-10-05T06:44:46","slug":"i1m2013-ejercicios-de-definiciones-con-condicionales-guardas-o-patrones-1","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2013-ejercicios-de-definiciones-con-condicionales-guardas-o-patrones-1\/","title":{"rendered":"I1M2013: Ejercicios de definiciones con condicionales, guardas o patrones (1)"},"content":{"rendered":"<p>En la segunda parte de la clase de hoy del curso de  <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-13\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> hemos comentado las soluciones de los primeros 5 ejercicios 3\u00aa relaci\u00f3n sobre definiciones con condicionales, guardas o patrones. <\/p>\n<p>Los ejercicios y su soluci\u00f3n se muestran a continuaci\u00f3n<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 1. Definir la funci\u00f3n divisionSegura tal que\r\n-- (divisionSegura x y) es x\/y si y no es cero e y 9999 en caso\r\n-- contrario. Por ejemplo,\r\n--    divisionSegura 7 2  ==  3.5\r\n--    divisionSegura 7 0  ==  9999.0\r\n-- ---------------------------------------------------------------------\r\n\r\ndivisionSegura _ 0 = 9999\r\ndivisionSegura x y = x\/y\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2. La disyunci\u00f3n excluyente xor de dos f\u00f3rmulas se verifica\r\n-- si una es verdadera y la otra es falsa.\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2.1. Definir la funci\u00f3n xor_1 que calcule la disyunci\u00f3n\r\n-- excluyente a partir de la tabla de verdad. Usar 4 ecuaciones, una por\r\n-- cada l\u00ednea de la tabla.\r\n-- ---------------------------------------------------------------------\r\n\r\nxor_1 :: Bool -> Bool -> Bool\r\nxor_1 True  True  = False \r\nxor_1 True  False = True\r\nxor_1 False True  = True\r\nxor_1 False False = False\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2.2. Definir la funci\u00f3n xor_2 que calcule la disyunci\u00f3n\r\n-- excluyente a partir de la tabla de verdad y patrones. Usar 2\r\n-- ecuaciones, una por cada valor del primer argumento.\r\n-- ---------------------------------------------------------------------\r\n\r\nxor_2 :: Bool -> Bool -> Bool\r\nxor_2 True  y = not y\r\nxor_2 False y = y\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2.3. Definir la funci\u00f3n xor_3 que calcule la disyunci\u00f3n\r\n-- excluyente a partir de la disyunci\u00f3n (||), conjunci\u00f3n (&&) y negaci\u00f3n\r\n-- (not). Usar 1 ecuaci\u00f3n.\r\n-- ---------------------------------------------------------------------\r\n\r\nxor_3 :: Bool -> Bool -> Bool\r\nxor_3 x y = (x || y) && not (x && y)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 2.4. Definir la funci\u00f3n xor_4 que calcule la disyunci\u00f3n\r\n-- excluyente a partir de desigualdad (\/=). Usar 1 ecuaci\u00f3n.\r\n-- ---------------------------------------------------------------------\r\n\r\nxor_4 :: Bool -> Bool -> Bool\r\nxor_4 x y = x \/= y\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 3. Definir la funci\u00f3n modulo tal que (modulo v) es el\r\n-- m\u00f3dulo del vector v. Por ejemplo,\r\n--    modulo (3,4)  ==  5.0\r\n-- ---------------------------------------------------------------------\r\n\r\nmodulo (x,y) = sqrt(x^2+y^2)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 4. Las dimensiones de los rect\u00e1ngulos puede representarse \r\n-- por pares; por ejemplo, (5,3) representa a un rect\u00e1ngulo de base 5 y \r\n-- altura 3. Definir la funci\u00f3n mayorRectangulo tal que \r\n-- (mayorRectangulo r1 r2) es el rect\u00e1ngulo de mayor \u00e1rea ente r1 y r2. \r\n-- Por ejemplo,  \r\n--    mayorRectangulo (4,6) (3,7)  ==  (4,6)\r\n--    mayorRectangulo (4,6) (3,8)  ==  (4,6)\r\n--    mayorRectangulo (4,6) (3,9)  ==  (3,9)\r\n-- ---------------------------------------------------------------------\r\n\r\nmayorRectanglo (a,b) (c,d) | a*b >= c*d = (a,b)\r\n                           | otherwise  = (c,d)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 5. Definir la funci\u00f3n cuadrante tal que (cuadrante p) es\r\n-- es cuadrante del punto p (se supone que p no est\u00e1 sobre los\r\n-- ejes). Por ejemplo,\r\n--    cuadrante (3,5)    ==  1\r\n--    cuadrante (-3,5)   ==  2\r\n--    cuadrante (-3,-5)  ==  3\r\n--    cuadrante (3,-5)   ==  4\r\n-- ---------------------------------------------------------------------\r\n\r\ncuadrante (x,y)\r\n    | x > 0 && y > 0 = 1\r\n    | x < 0 &#038;&#038; y > 0 = 2\r\n    | x < 0 &#038;&#038; y < 0 = 3\r\n    | x > 0 && y < 0 = 4\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la segunda parte de la clase de hoy del curso de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas hemos comentado las soluciones de los primeros 5 ejercicios 3\u00aa relaci\u00f3n sobre definiciones con condicionales, guardas o patrones. Los ejercicios y su soluci\u00f3n se muestran a continuaci\u00f3n<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[222],"tags":[270,300],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3739"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=3739"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3739\/revisions"}],"predecessor-version":[{"id":3740,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3739\/revisions\/3740"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=3739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=3739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=3739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}