Cómo realizar los ejercicios

Esta lección contiene algunos consejos generales sobre la realización de los ejercicios.

Organizar los ejercicios en el área de trabajo

En la configuración recomendada de VSCode o en el ejercicio Apache 5 de la página de ejercicios de Apache (1) se propone la creación de la carpeta "Mis documentos\IAW\PHP" para guardar en ella todos los programas del curso. En esta carpeta se propone crear las siguientes subcarpetas

Se recomienda organizar los ejercicios por carpetas, creando una carpeta para cada lección. Se recomienda que no haya espacios en blanco en los nombres de las carpetas o de los archivos porque los espacios en blanco no pueden formar parte de una URL. Es decir, realmente sí que puede haber espacios en blanco en los nombres de carpetas o archivos, pero en las URLs el espacio en blanco se debe escribir como %20, lo que las hace difíciles de leer o escribir. Por ejemplo, las carpetas se pueden llamar:

Utilizar las plantillas

Para facilitar la realización de los ejercicios, al principio de cada página de ejercicios hay un enlace a un fichero zip que se puede descargar y que incluye unas plantillas de los ejercicios. Las plantillas incluyen todo el html que no cambia al actualizar la página, para que el alumno no pierda tiempo identificando y copiando y pegando código html de los ejemplos. Las plantillas también incluyen las etiquetas de apertura y cierre de los fragmentos php. En el fichero zip también se incluyen, en su caso, las imágenes utilizadas en los ejercicios.

El fichero zip contiene una carpeta con todo el material por lo que se puede descomprimir directamente, sin necesidad de descomprimir el contenido en una carpeta. El nombre de la carpeta incluye la coletilla "-plantillas" (pm-vscode-plantillas, sf-primeras-paginas-plantillas, etc.). Se recomienda borrar la parte "-plantillas" y dejar el resto, de manera que si en futuro se descomprime de nuevo el fichero zip no se sobrescriba el trabajo realizado.

Nota: Las plantillas se proporcionan para evitar al alumno el trabajo repetitivo, pero se aconseja hacer de vez en cuando algún ejercicio "desde cero", sin utilizar las plantillas.

Las plantillas contienen en varios lugares la cadena "Escriba aquí su nombre". Busque y sustituya la cadena por su propio nombre:

Cómo realizar los ejercicios. Sustituir Escriba aquí su nombre

Consultar los ejemplos de ejercicios

En los enunciados de los ejercicios se incluye normalmente un ejemplo de ejercicio de muestra y un icono de enlace al ejemplo Enlace a ejemplo, que permite abrir el ejercicio de muestra en una pestaña (o ventana) diferente.

Estos ejemplos se pueden utilizar para:

En los ejemplos de ejercicios, los nombres de los ficheros suelen coincidir con el nombre de la lección y el número del ejercicio. Por ejemplo, en los ejercicios de la página Primeras páginas los ficheros se llaman primeras-paginas-1.php, primeras-paginas-2.php, etc. Si un ejercicio consta de varias páginas php, se añade un número de orden. Por ejemplo, el tercer ejercicio de la página Primeras páginas consta de dos páginas que se llaman primeras-paginas-3-1.php y primeras-paginas-3-2.php.

Se recomienda utilizar los mismos nombres de archivos que los de los ejercicios de muestra, para no tener problemas en los enlaces al copiar porciones de código html de los ejercicios de muestra.

Consultar las soluciones

Las soluciones de los ejercicios se encuentran disponibles en la página de soluciones de los ejercicios.

En programación existen siempre muchas maneras de conseguir el mismo resultado, por lo que las soluciones propuestas no son más que una de las posibles soluciones.

Si no se sabe realizar un ejercicio, se recomienda consultar la solución para ver cómo se puede realizar, aunque no conviene hacerlo a la menor dificultad.

Aunque el alumno piense que ha realizado correctamente, se recomienda consultar las soluciones, para confirmar que se han tenido en cuenta todas las condiciones del problema y, en su caso, ver otra manera de resolverlo.

Reutilizar los ejercicios

Los ejercicios de cada lección suelen ser bastante similares y estar graduados de menor a mayor dificultad, por lo que se aconseja utilizar un ejercicio como base del siguiente (o en general, hacer un ejercicio a partir de un ejercicio similar ya realizado).

Si lo que se hace en un ejercicio se va a aprovechar en los siguientes ejercicios, merece la pena perder un poco de tiempo en cada ejercicio consiguiendo que:

En los apartados siguientes se comentan estos aspectos.

Incluso puede valer la pena comenzar un ejercicio a partir de la solución de un ejercicio anterior disponible en la página de soluciones de los ejercicios.

Formatear el código fuente PHP

Es conveniente adoptar un estilo definido en el código fuente de las páginas php. Eso facilita la legibilidad y la reutilización del código.

En la página de Guía de estilo para PHP se comentan algunos aspectos a seguir a la hora de escribir el código PHP. Las soluciones de los ejercicios disponibles en la página de soluciones de los ejercicios siguen esa guía de estilo.

Código HTML de los ejercicios

Este curso es un curso sobre PHP, no sobre HTML. Por tanto, no es necesario que el alumno sea capaz de escribir el código HTML de los ejercicios, pero sí debe ser capaz de escribir el código PHP que genera el código HTML de los ejercicios.

¿Cómo saber qué código HTML debe generarse en cada ejercicio?. En los enunciados de los ejercicios se incluye un ejemplo de ejercicio resuelto y un enlace al ejercicio resuelto, que se puede abrir en una pestaña (o ventana) diferente. Mostrando el código fuente de las páginas de los ejercicios, se puede ver el código HTML buscado. Ese código fuente HTML se puede copiar y pegar en las páginas PHP.

Validar páginas

Las páginas web (tanto las páginas html como las creadas en PHP) deberían ser páginas HTML válidas.

Para validar tanto las páginas html como las creadas en PHP es necesario utilizar validadores de html. Uno de los más utilizados es el validador del W3C.

La extensión Web Developer de Firefox y Chrome permite utilizar fácilmente el validador del W3C. En la lección Otros programas se explica cómo instalar y utilizar Web Developer en Firefox.

Nota: En los exámenes no se requerirá que las páginas sean válidas, aunque sí se requerirá que se vean correctamente.

Formatear el código fuente HTML

Es conveniente que el código HTML (tanto de las páginas html como de las páginas generadas con PHP) esté convenientemente formateado, ya que eso permitirá encontrar fácilmente los posibles errores de la página. Para ello, el código PHP debe incluir en las instrucciones los saltos de línea y espacios necesarios.

Los ejemplos siguientes muestran dos fragmentos de PHP que generan el mismo código fuente incorrecto, sin formatear en el primer caso y formateado correctamente en el segundo. Es evidente en qué caso es más fácil encontrar el error ( no se cierran las filas de tabla con </tr>).

Desaconsejado
<?php
print "<table style=\"border: black 1px solid;\">";
for ($i=1; $i<=2; $i++) {
    print "<tr>";
    for ($j=1; $j<=2; $j++) {
        print "<td>$i-$j</td>";
    }
}
print "</table>";
?>
<table style="border: black 1px solid;"><tbody><tr><td>1-1</td><td>1-2</td><tr>
<td>2-1</td><td>2-2</td></tbody></table>
Desaconsejado
<?php
print "<table style=\"border: black 1px solid;\">\n";
for ($i=1; $i<=2; $i++) {
    print "  <tr>\n";
    for ($j=1; $j<=2; $j++) {
        print "    <td>$i-$j</td>\n";
    }
}
print "</table>\n";
?>
<table style="border: black 1px solid;">
  <tbody>
    <tr>
      <td>1-1</td>
      <td>1-2</td>
    <tr>
      <td>2-1</td>
      <td>2-2</td>
  </tbody>
</table>

Nota: El error en el código fuente anterior es que no se cierran las filas de tabla con </tr>.

No conozco ninguna herramienta que compruebe el formateo correcto del código fuente de una página, pero es fácil hacerlo visualmente, abriendo el código fuente de la página en Firefox. Estas son algunas recomendaciones:

Hojas de estilo de los ejercicios

Todos los ejercicios básicos de muestra utilizan la misma hoja de estilo que se llama mclibre-php-ejercicios.css.

Esta hoja de estilo se incluye generalmente en las plantillas de los ejercicios. En caso de que no esté incluida, se puede copiar de otro grupo de ejercicios.

Probar programas con estructuras if ... else ...

Para probar el funcionamiento de un programa en el que se generan valores aleatorios y el programa da diferentes resultados, podemos actualizar la página de forma repetida hasta que salgan todos los resultados posibles.

Por ejemplo, el programa siguiente indica si el número generado al azar es par o impar. Basta con actualizar la página unas pocas veces para comprobar que se muestran los dos posibles mensajes.

<?php
$n = rand(1, 1000);

if ($n % 2 == 0) {
    print "  <p>$n es par.</p>\n";
} else {
    print "  <p>$n es impar.</p>\n";
}
?>
Enlace a ejemplo

Pero hay veces en los que obtener un valor o una combinación de valores no es fácil. Por ejemplo, el programa siguiente indica si el número generado al azar es múltiplo de 500. Haría falta actualizar muchas veces la página hasta generar uno de los dos valores múltiplos de 500 (500 y 1000).

<?php
$n = rand(1, 1000);

if ($n % 500 == 0) {
    print "  <p>$n es múltiplo de 500.</p>\n";
} else {
    print "  <p>$n no es múltiplo de 500.</p>\n";
}
?>
Enlace a ejemplo

En estos casos podemos añadir una instrucción para forzar un determinado valor de la variable, para poder comprobar que el programa funciona como esperamos. Por supuesto, esa línea debe borrarse una vez realizada la comprobación. Por ejemplo, en el programa del ejemplo anterior podemos forzar el valor 500 para comprobar que se muestra el mensaje correspondiente.

<?php
$n = rand(1, 1000);
$n = 500;

if ($n % 500 == 0) {
    print "  <p>$n es múltiplo de 500.</p>\n";
} else {
    print "  <p>$n no es múltiplo de 500.</p>\n";
}
?>
Enlace a ejemplo