{"id":2877,"date":"2013-10-28T09:00:47","date_gmt":"2013-10-28T08:00:47","guid":{"rendered":"https:\/\/blogs.ua.es\/pi\/?p=2877"},"modified":"2013-12-03T13:35:04","modified_gmt":"2013-12-03T12:35:04","slug":"no-esta-mal-funciona","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/pi\/2013\/10\/28\/no-esta-mal-funciona\/","title":{"rendered":"No est\u00e1 mal, funciona"},"content":{"rendered":"<p>&#8220;No est\u00e1 mal, funciona&#8221;, es lo que me dicen muchos de mis alumnos cuando les reviso su c\u00f3digo y les se\u00f1alo algunos errores. S\u00ed, funciona, pero eso no es lo \u00fanico importante. Por ejemplo, veamos el siguiente fragmento de c\u00f3digo escrito en PHP:<\/p>\n<pre>if(($fichero = @file(\"testimonios.txt\")) == false)\r\n\u00a0 echo \"No se ha podido abrir el fichero\";\r\nelse\r\n{\r\n\u00a0 $num = rand(1, count($fichero));\r\n\u00a0 $i=1;\r\n\u00a0 foreach($fichero as $numLinea =&gt; $linea)\r\n\u00a0 {\r\n\u00a0 \u00a0 if ($i==$num)\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 list($titulo, $fecha, $contenido) = explode('###', $linea);\r\n\u00a0 \u00a0 \u00a0 echo \"&lt;fieldset&gt;&lt;legend&gt;&lt;h2&gt;\".htmlspecialchars($titulo) .\"&lt;\/h2&gt;&lt;\/legend&gt;\";\r\n\u00a0 \u00a0 \u00a0 echo htmlspecialchars($contenido).\"&lt;br \/&gt;&lt;br \/&gt;\".htmlspecialchars($fecha);\r\n\u00a0 \u00a0 \u00a0 echo \"&lt;\/fieldset&gt;\";\r\n\u00a0 \u00a0 }\r\n\u00a0 \u00a0 $i = $i+1;\r\n\u00a0 }\r\n}<\/pre>\n<p>El prop\u00f3sito de este c\u00f3digo es leer un fichero (&#8220;testimonios.txt&#8221;) que tiene el siguiente formato, en el que cada l\u00ednea es un testimonio de una persona:<\/p>\n<pre>titulo###fecha###contenido<\/pre>\n<pre>titulo###fecha###contenido<\/pre>\n<pre>titulo###fecha###contenido<\/pre>\n<p>Se tiene que elegir una l\u00ednea al azar y mostrarla.<\/p>\n<p>\u00bfQu\u00e9 problemas tiene este c\u00f3digo?<\/p>\n<ol>\n<li>Utiliza un bucle para localizar en el array el testimonio a mostrar: los arrays son estructuras de acceso directo, si tienes una posici\u00f3n ($num), accedes y punto, no necesitas un bucle para acceder a una posici\u00f3n.<\/li>\n<li>Parece que tampoco entiende el manejo de foreach(): necesita $i para saber en qu\u00e9 posici\u00f3n est\u00e1, cuando $numLinea ya le valdr\u00eda.<\/li>\n<li>Cuando por fin encuentra el testimonio y lo muestra ($i==$num), no finaliza el bucle, sigue y sigue buscando en el array hasta llegar al final.<\/li>\n<li>Utiliza el fieldset y el legend, cuyo prop\u00f3sito es agrupar controles en un formulario, para mostrar el testimonio en una &#8220;caja bonita&#8221; con borde.<\/li>\n<\/ol>\n<p>Esto no lo ha hecho un alumno de primero, es de un alumno de tercero.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;No est\u00e1 mal, funciona&#8221;, es lo que me dicen muchos de mis alumnos cuando les reviso su c\u00f3digo y les se\u00f1alo algunos errores. S\u00ed, funciona, pero eso no es lo \u00fanico importante. Por ejemplo, veamos el siguiente fragmento de c\u00f3digo &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/blogs.ua.es\/pi\/2013\/10\/28\/no-esta-mal-funciona\/\"> <span class=\"screen-reader-text\">No est\u00e1 mal, funciona<\/span> Leer M\u00e1s  &raquo;<\/a><\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[6231,841,2272],"class_list":["post-2877","post","type-post","status-publish","format-standard","hentry","category-general","tag-error","tag-php","tag-reflexion"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts\/2877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/comments?post=2877"}],"version-history":[{"count":2,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts\/2877\/revisions"}],"predecessor-version":[{"id":2879,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts\/2877\/revisions\/2879"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/media?parent=2877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/categories?post=2877"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/tags?post=2877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}