{"id":6432,"date":"2019-01-09T19:39:59","date_gmt":"2019-01-09T18:39:59","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=6432"},"modified":"2019-01-20T19:44:00","modified_gmt":"2019-01-20T18:44:00","slug":"i1m2018-programas-interactivos-en-haskell","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2018-programas-interactivos-en-haskell\/","title":{"rendered":"I1M2018: Programas interactivos en Haskell"},"content":{"rendered":"<p>En la clase de hoy de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-18\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> se ha estudiado el <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-18\/temas\/tema-13.html\">tema 13<\/a> sobre programas interactivos.<\/p>\n<p>Se ha empezado observando un procedimiento que pide que se escriba una cadena y devuelve su longitud:<\/p>\n<pre lang=\"haskell\">\nlongitudCadena :: IO ()\nlongitudCadena = do\n  putStr \"Escribe una cadena: \"\n  xs <- getLine\n  putStr \"La cadena tiene \"\n  putStr (show (length xs))\n  putStrLn \" caracteres\"\n<\/pre>\n<p>A continuaci\u00f3n se han estudiado los elementos implicados en el procedimiento anterior: el tipo de las acciones de entrada\/salida (<code>IO<\/code>), las acciones b\u00e1sicas (<code>getChar<\/code>, <code>putChar<\/code> y <code>return<\/code>), la secuenciaci\u00f3n de acciones con <code>do<\/code> y la definici\u00f3n de algunos procedimientos del preludio (<code>getLine<\/code>, <code>putStr<\/code>, <code>putStrLn<\/code>, y <code>sequence_<\/code>).<\/p>\n<p>Como aplicaci\u00f3n se han estudiado un <a href=\"http:\/\/bit.ly\/1QtYGSm\">programa para adivinar un n\u00famero<\/a> en sus dos versiones: cuando la m\u00e1quina tiene que adivinar el n\u00famero pensado por el humano y cuando es el humano el que tiene que adivinar el n\u00famero generado aleatoriamente por la m\u00e1quina.<\/p>\n<p>Los apuntes correspondientes a la clase son las 6 primeras secciones del tema 6:<\/p>\n\n<!-- iframe plugin v.5.0 wordpress.org\/plugins\/iframe\/ -->\n<iframe loading=\"lazy\" src=\"https:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-18\/temas\/tema-13.html\" width=\"100%\" frameborder=\"1\" height=\"500\" scrolling=\"yes\" class=\"iframe-class\"><\/iframe>\n\n","protected":false},"excerpt":{"rendered":"<p>En la clase de hoy de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas se ha estudiado el tema 13 sobre programas interactivos. Se ha empezado observando un procedimiento que pide que se escriba una cadena y devuelve su longitud: longitudCadena :: IO () longitudCadena = do putStr &#8220;Escribe una cadena: &#8221; xs<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","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":[320],"tags":[270,321],"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\/6432"}],"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=6432"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/6432\/revisions"}],"predecessor-version":[{"id":6435,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/6432\/revisions\/6435"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=6432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=6432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=6432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}