Lecciones impartidas en clase (curso 2018/19)

Introducción

Esta lección contiene un índice de las lecciones que estoy impartiendo en clase durante el curso 2018/19, así como los ejercicios que están realizado los alumnos.

Para elaborar este índice he utilizado como base las guías de estudio que ofrezco a mis alumnos de la modalidad semipresencial en la plataforma Moodle de la Conselleria de Educación. El trabajo propuesto a estos alumnos es el mismo que siguen en clase mis alumnos de la modalidad presencial, aunque la distribución temporal no sea la misma.

La información se ofrece distribuida en semanas, ya que es así como está organizada la modalidad semipresencial.

También se pueden consultar las lecciones impartidas en el pasado curso 2017/18.

Semana S01: del 10/09/18 al 16/09/18

Presentación

  1. Leed la lección Presentación de los apuntes.

¿Qué es PHP?

  1. Leed la lección Lenguajes de programación.
  2. Leed la lección Qué es PHP.

Instalación de XAMPP

  1. Leed la lección Qué es XAMPP.
  2. Leed la lección Instalación de XAMPP en Windows.
  3. Instalad XAMPP 7.2.9.

    Nota: Una vez instalado XAMPP, haced una copia de seguridad de la carpeta /xampp/apache/conf/ y del archivo /xampp/php/php.ini por si necesitáis recuperarlos.

Configuración de Apache y PHP

  1. Leed la lección Configuración de Apache y PHP.

    En esta lección se tratan dos puntos muy importantes:

    1. los Alias de Apache, que utilizaremos durante todo el curso.
    2. las opciones de configuración de PHP, que modificarse como se indica en la lección para que el comportamiento sea el mismo en los ordenadores de todos los alumnos.
  2. Configurad php.ini de acuerdo con la lección Configuración de Apache y PHP.
  3. Para familizarizaros con la creación de Alias en Apache, haced los ejercicios Apache 1 y 2.
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Instalación y configuración de Eclipse for PHP developers

  1. Leed la lección Qué es Eclipse PHP.
  2. Leed la lección Instalación de Eclipse PHP.
  3. Instalad Java Runtime Environment 10 (si no lo tenéis ya instalado) y Eclipse PHP Photon.

    Si vuestro Windows es de 64 bits, instalad las versiones de 64 bits de Java Runtime Envirnment 8 y de Eclipse PHP (aunque también se podrían instalar las de 32 bits). Pero si vuestro Windows es de 32 bits, tenéis que instalar las versiones de 32 bits.

  4. Leed la lección Configuración de Eclipse PHP 1.

    En esta lección se explica cómo crear un workspace de ejemplo y crear en él un proyecto, una carpeta enlazada, programas de ejemplo, configurar una herramienta externa para ejecutar archivos HTML, etc. Cread ese workspace de ejemplo siguiendo los pasos de la lección. Más adelante, podéis borrar la carpeta del workspace.

  5. Leed la lección Configuración de Eclipse PHP 2.

    En esta lección se explican las opciones de configuración de Eclipse que vamos a utilizar durante el curso. La mayoría son necesarias para seguir la guía de estilo PSR-2. El resto son opcionales y responden más a los gustos de cada uno. Como la configuración hay que realizarla en cada workspace, os aconsejo realizarla únicamente con el workspace definitivo.

  6. Para familiarizaros con la creación de proyectos y carpetas enlazadas en Eclipse y la creación de alias en Apache, haced los ejercicios Apache y Eclipse 3, 4 y 5.
  7. Para configurar Apache y Eclipse tal y como se utilizará durante el curso, haced el ejercicio Apache y Eclipse 6.
  8. Configurad Eclipse de acuerdo con la lección Configuración de Eclipse PHP 2.
  9. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S02: del 17/09/18 al 23/09/18

Estas son las actividades a realizar durante esta semana.

Cómo hacer los ejercicios (1)

  1. Leed la lección Cómo realizar los ejercicios
  2. Leed la lección Ejemplos de resolución de ejercicios - Sin formularios
  3. Leed la lección Uso de Eclipse

Primeras páginas en PHP

  1. Leed la lección Primeras páginas en PHP
  2. Leed la lección Cadenas
  3. Leed la lección Guía de estilo.

    El estilo que se recomienda en esta lección es el que tenéis que utilizar en vuestros programas.

  4. Haced los ejercicios 1 a 3 de Primeras páginas.

    Estos ejercicios se pueden hacer de muchas maneras, incluyendo más o menos líneas en cada uno de los fragmentos PHP o HTML. Las soluciones propuestas son un ejemplo de solución.

  5. En la página de soluciones podéis consultar soluciones de los ejercicios.

Variables

  1. Leed la lección Variables 1

    Esta semana no se realizan ejercicios con variables, pero quiero que leáis esa primera lección.

  2. Haced los ejercicios 4 a 8 de Primeras páginas.

    En estos ejercicios se necesita la función rand() que genera números aleatorios que se comenta en la lección Operaciones aritméticas (apartado Números aleatorios).

  3. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S03: del 24/09/18 al 30/09/18

En la primera parte del curso de PHP vamos a hacer un pequeño repaso general de PHP, tocando los temas vistos el año pasado en el módulo LMSGI: variables, operaciones, if ... else .. y for ... además de las matrices, un tipo de variable que permite almacenar varios datos distintos en una sola variable. Esta parte la he llamado PHP, sin formularios porque las páginas no contienen formularios, por lo que el usuario no puede proporcionar información a los programas. Para que cada vez que se ejecuten los programas los resultados sean distintos, recurriremos a números aleatorios.

Estas son las actividades a realizar durante esta semana.

Nueva versión de Eclipse

El 19 de septiembre se publicó una nueva versión de Eclipse PHP, Eclipse PHP 2018-09. A partir de esta versión, Eclipse ha cambiado la forma de referirse a sus versiones (he actualizado la información de la lección Qué es PHP). En la lección Instalación de Eclipse PHP he añadido los enlaces de descarga de la versión para Windows.

En la lección Instalación de Eclipse PHP he añadido un apartado sobre la actualización de Eclipse PHP.

No es imprescindible instalar la nueva versión, pero como en cada versión se corrigen fallos y la actualización es sencilla, creo que vale la pena actualizarse.

Variables y operaciones

  1. Leed los apartados de la lección Tipos de variables: enteras y decimales.
  2. Leed la lección Operaciones aritméticas.
  3. Haced los ejercicios Variables 1.
    1. En estos ejercicios se necesita la función rand() que genera números aleatorios y que se comenta en el apartado Números aleatorios de la lección Operaciones aritméticas .
    2. Los valores aleatorios se utilizan en varios lugares de la página web, por lo que se deben guardar en una variable y después utilizar la variable el número de veces necesario. En algunos ejercicios también es necesario hacer cálculos adicionales con esas variables.
    3. Los dados y las cartas que aparecen en algún ejercicio son imágenes SVG que podési conseguir descargando las plantillas de los ejercicios. El resto de imágenes SVG están incluidas en la propia página web. Podéis mirar el código fuente de los ejercicios de ejemplo. En realidad los programas sólo tienen que generar algunos valores numéricos del código SVG.
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S04: del 01/10/18 al 07/10/18

Estructuras de control: Sentencia condicional if ... elseif ... else ...

  1. Leed el apartado Variables lógicas de la lección Tipos de variables (solamente el apartado Variables lógicas).
  2. Leed la lección Operaciones lógicas.
  3. Leed el apartado if ... elseif ... else ... de la lección Estructuras de control (espero ampliar esta lección esta semana con más ejemplos e ilustraciones).
  4. Haced los ejercicios if ... else ... (1). Los ejercicios 1, 2 y 4 son los más fáciles. El 3 y el 5 son más difíciles. Si el ejercicio 3 os cuesta, haced antes los ejercicios extra que son más fáciles.
  5. En la página de soluciones podéis consultar soluciones de los ejercicios.
  6. Podéis hacer también los ejercicios extra if ... else ... (1). Son cuatro ejercicios que puse en exámenes de años anteriores (por eso no hay soluciones disponibles). El ejercicio de Piedra, papel, tijera es que más les ha costado a los alumnos de presencial. Dejadlo para el final.

Estructuras de control: Bucle for

  1. Leed la lección Bucle for.
  2. Repasad el apartado colores HSL de la lección Colores de los apuntes de HTML/CSS.

    Tradicionalmente los colores en las páginas web se han definido mediante nombres de colores o códigos RGB, pero CSS3 permite usar códigos HSL que son más intuitivos que los códigos RGB. En esta lección se explica cómo se expresan los colores mediante códigos HSL.

  3. Haced los ejercicios 1 a 5 de Bucle for (1).
  4. Leed la lección Contadores y acumuladores.
  5. Haced los ejercicios 11 a 15 de Bucle for (1).
  6. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S05: del 08/10/18 al 14/10/18

Matrices

  1. Leed la lección Matrices.

    Las matrices son un tipo de variable muy flexible que utilizaremos mucho a partir de ahora. En los ejercicios de esta semana, los índices de las matrices son numéricos y correlativos. En las próximas semanas trabajaremos con matrices asociativas, es decir, de índices no numéricos o no correlativos.

Estructuras de control: Bucle foreach

  1. Leed las lecciones Resumen bucle foreach y Bucle foreach

    Los bucles foreach permiten recorrer estructuras (matrices, recursos, etc) sin preocuparse por el número de elementos, lo que los hace muy útiles cuando se deben recorrer estructuras no generadas por el propio programa, como información proveniente de formularios o consultas a bases de datos.

Ejercicios de matrices

  1. Haced los ejercicios Matrices (1).
    • En los ejercicios del apartado "Sin bucles" no hace falta utilizar bucles ni if ... else ..., pero sí que hay que definir una matriz.
    • En los ejercicios del apartado "Con bucles" se deben utilizar bucles. La idea es la siguiente:
      • En cada ejercicio hay que crear una o varias matrices para almacenar los datos
      • Para generar las matrices, se deben utilizar bucles for.
      • Para recorrer las matrices creadas (por ejemplo para mostrarlas), se aconseja utilizar bucles foreach. Se podrían utilizar también bucles for, pero los bucles foreach son más sencillos.
    • En los ejercicios del apartado "Ordenar matrices" se deben utilizar bucles como en los anteriores, además de utilizar funciones de ordenación de matrices.
  2. En la página de soluciones podéis consultar soluciones de los ejercicios.

Ejercicios de ampliación: Bucles for con fórmulas

Estos ejercicios son opcionales.

En estos ejercicios se necesita escribir fórmulas para generar series de números que permiten crear dibujos. Mirando el código fuente de los programas de ejemplo se pueden ver los números, pero las fórmulas se os tienen que ocurrir a vosotros. En realidad, es más fácil de lo que parece, porque las series de números forman sucesiones aritméticas por lo que las fórmulas son (casi) siempre del tipo a * x + b, donde a y b son números enteros.

  1. Leed la lección Sucesiones aritméticas (esta lección está en los apuntes Temas de informática).
  2. Practicad la deducción de fórmulas haciendo los ejercicios Sucesiones aritméticas

    Son ejercicios que podéis repetir las veces que queráis. El primero es trivial, pero el segundo exige bastante cálculo mental (aunque podéis empezar haciéndolo con papel y lápiz y calculadora), sobre todo si se elige el mayor nivel de dificultad.

  3. Haced los ejercicios Bucle for (2). El más difícil es el ejercicio 3, porque en las fórmulas aparecen dos variables. Lo podéis dejar para el final.
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Ejercicios de ampliación: Matrices de dos dimensiones

Estos ejercicios son opcionales.

  1. Haced los ejercicios Matrices (2).

    En estos ejercicios aparecen matrices de dos dimensiones. No son ejercicios muy difíciles, pero cuando se trabaja por primera vez con matrices de varias dimensiones, es fácil liarse. Normalmente, os ayudará pensar las matrices de dos dimensiones como tablas de bases de datos, en las que el primer índice indica el registro y el segundo índice indica la columna.

  2. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S06: del 15/10/18 al 21/10/18

Esta semana y la próxima vamos a ver el uso de formularios en PHP. Lo haremos en dos pasos:

  1. Recogida de datos sin comprobación posterior

    En esta parte se trata de aprender a utilizar formularios y a recoger los datos introducidos en ellos, pero no haremos ninguna comprobación sobre los datos recogidos.

  2. Recogida de datos con comprobación posterior

    En esta parte veremos cómo comprobar los datos recibidos y cómo mostrar mensajes al usuario en caso de que no sean correctos.

Esta semana vamos a hacer programas sin comprobación posterior y la semana que viene ya haremos la comprobación de los datos. Los ejercicios son fáciles, pero esta semana hay mucho que leer.

Estas son las actividades a realizar durante esta semana.

Formularios (1)

El mecanismo de HTML para recoger información del usuario son los formularios, que nos permitirán crear páginas web interactivas.

  1. Leed la lección Formularios (apuntes HTML/CSS).

    Esta lección forma parte de los apuntes de HTML y trata los aspectos de los formularios relacionados con la presentación del formulario. Faltan por contar algunos tipos de controles y algunos atributos, pero no son demasiado importantes.

    Este año en el módulo de Lenguaje de Marcas he dejado de utilizar la sintaxis XHTML y utilizo la sintaxis HTML. Por eso en las lecciones de los apuntes de HTML las etiquetas vacías (como <input />) no aparecen con la barra final (sino como <input>). Sin embargo, en vuestros ejercicios del módulo de Implantación de Aplicaciones Web sigo utilizando la sintaxis XHTML. Como a los navegadores les da lo mismo, podéis utilizar la sintaxis que queráis.

  2. Leed la lección Controles en formularios.

    Esta lección trata los aspectos de los formularios relacionados con el tratamiento de los datos. Faltan por contar los tipos de controles nuevos en HTML 5, pero su tratamiento no difiere de los controles de HTML 4.

  3. Leed la lección Recogida de datos.

    Esta lección es bastante densa porque aborda los problemas y riesgos de los programas que recogen datos. El problema consiste básicamente en que no podemos saber a priori qué datos van a llegar al programa y probablemente llegarán datos con mala intención. La solución es que los programa no trabajen directamente con $_REQUEST, sino con variables que contengan los datos recibidos una vez "limpiados" y comprobados. Para ello, usaremos una función recoge().

    En resumen, todo lo que se cuenta en esta lección es para justificar el uso de la función recoge() que se encuentra al final del tema. Al final de la lección hay otras funciones recoge(). Para los primeros ejercicios, utilizaremos la primera función recoge().

  4. Leed los dos primeros apartados (Estructura general y Sin comprobación de datos) de la lección Ejemplo de ejercicio.

    En esta lección se explica cómo realizar los ejercicios con formularios. El ejemplo del apartado recogida de datos sin comprobación os puede servir de guía para la página de ejercicios de esta semana.

  5. Haced los ejercicios Controles en formularios (1).
  6. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S07: del 22/10/18 al 28/10/18

Formularios (2)

  1. Leed la lección Comprobación de datos

    En esta lección se comentan varias familias de funciones de comprobación de datos, pero tened en cuenta que de todas las funciones que se comentan en esta página, las que vamos a utilizar principalmente son is_numeric() y ctype_digit() y en algún caso filter_var().

  2. Leed la lección Ejemplo de resolución de ejercicio (con comprobación de datos)

    En los ejercicios de esta semana ya hace falta incluir el tratamiento de errores de los datos recogidos del formulario. En esta lección se explica un modelo de resolución de ejercicio, con las diferentes partes de la página (recogida de datos, tratamiento de errores, generación del resultado). Es muy importante entender la estructura propuesta porque se utilizará en todos los ejercicios posteriores.

  3. Haced los ejercicios Controles en formularios (2).

    En el último ejercicio aparecen muchos controles, si habéis hecho el resto, no es necesario hacerlo.

  4. Haced los ejercicios Selección (1).

    Estos ejercicios, salvo el último, son una selección de ejercicios de las páginas que se ofrecen como material extra.

Ejercicios de ampliación [optativo]

Antes del curso 2016/17 no daba ejercicios sin formularios y por eso tenía muchos ejercicios con formularios. Ahora no tiene sentido que os pida hacer todos los ejericicios con formularios, pero podéis hacer los que os parezcan intersantes como ejercicios de ampliación:

  1. Ejercicios Operaciones aritméticas
  2. Ejercicios if else
  3. Ejercicios for 3

Otras páginas de ejercicios los podéis hacer también como ejercicios de ampliación, pero son más difíciles (o distintos a lo que estamos viendo este año):

  1. Ejercicios for 1
  2. Ejercicios for 2
  3. Ejercicios for 4
  4. Ejercicios for 5
  5. Ejercicios Matrices 1

Podéis hacer tantos como queráis. Normalmente los primeros de cada página son más fáciles y se van complicando.

Semana S08: del 29/10/18 al 04/11/18

Cabeceras

  1. Leed la lección El protocolo HTTP

    Esta lección es un resumen brevísimo, ya que no necesitamos profundizar en este tema. En el módulo de Servicios de red veréis el tema con más detalle.

  2. Leed la lección La función header()

    En esta lección se comenta las dos cabeceras que vamos a utilizar: Location para redireccionar páginas y Content-type para definir tipos MIME.

    Si queréis hacer pruebas con el BOM, podéis instalar Notepad++ y el plug-in HEX-Editor. En la lección otros programas > Notepad++ tenéis instrucciones detalladas.

  3. Haced los ejercicios Cabeceras.

    Los ejercicios del primer apartado (redirecciones) nos permiten mejorar los formularios. Cuando la página a la que el formulario envía los datos detecta un error, se redirige automáticamente a la primera, para que se vuelva a mostrar el formulario con los errores detectados. Cada ejercicio se basa en el anterior. Para hacerlos se recomienda ir paso a paso:

    1. primero se hace la primera página, generando el formulario, sin preocuparse todavía por los avisos
    2. después se hace la segunda página, para validar el formulario, de manera similar a los ejercicios de la semana pasada, pero cuando se encuentran errores, en vez de mostrar un aviso, se redirige a la primera página enviando la información necesaria
    3. por último, se completa la primera página de manera que recoja los datos que le puede enviar la segunda página y se incluyen en el formulario
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S09: del 05/11/18 al 11/11/18

Sesiones

  1. Leed la lección Sesiones

    Las sesiones nos permiten compartir variables entre diferentes páginas web, lo que permite crear verdaderas aplicaciones web.

  2. Haced los ejercicios Sesiones (1).

    La parte de teoría es bastante sencilla, pero las aplicaciones son infinitas. Para hacer los ejercicios, os recomiendo que vayáis escribiendo el programa siguiendo el orden de utilización de la aplicación. En las soluciones de Sesiones (1) he indicado precisamente ese orden, para que os resulte más fácil entenderlas. Que no os importe mirar las soluciones al hacer los dos o tres primeros ejercicios.

  3. Haced los ejercicios Minijuegos (1).
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S10: del 12/11/18 al 18/11/18

Sesiones (2)

  1. Haced los ejercicios Sesiones (2).

    Son ejercicios similares a los ejercicios Sesiones (1) de la semana pasada, pero con más páginas cada uno.

  2. Haced los ejercicios Matrices (1).

    En estos ejercicios se deben guardar matrices en $_SESSION. Son complicados porque en ellos aparecen todo lo que hemos visto en el curso, así que son buenos ejercicios de recapitulación. En el examen no habrá ejercicios como estos que conjuguen todo.

    • Los ejercicios 1 y 2 utilizan formularios con cajas de texto
    • Los ejericicios 11, 12 y 13 utilizan formularios que únicamente contienen botones submit que contienen entidades numéricas (emojis).
    • Los ejercios 21 a 25 utilizan formularios con otros controles.
  3. En la página de soluciones podéis consultar soluciones de los ejercicios.

Ejercicios de ampliación

Estos ejercicios son opcionales.

Estos ejercicios se pueden también considerar ejercicios de recapitulación. Se trata de hacer una aplicación web (en este caso, juegos) más compleja de lo que hemos hecho hasta ahora y para ello los ejercicios están "encadenados". En cada uno se van añadiendo más elementos hasta obtener finalmente la aplicación completa. Cada ejercicio se debe ir haciendo a partir del anterior.

  1. Haced los ejercicios Tragaperras.

    El objetivo de estos ejercicios es obtener finalmente una máquina tragaperras completa. En las plantilla sólo he incluido los dos primeros ejercicios, porque lo mejor a partir del segundo ejercicio es hacer cada ejercicio a partir del anterior

    Para estos ejercicios os he proporcionado tres tipos de ayuda: en la página del enunciado hay un desplegable con los puntos que debe contemplar vuestro programa, en la página de ayuda se muestran trocitos de código correspondientes a los puntos mencionados en la página del enunciado, y en la página de soluciones están las soluciones completas.

  2. Haced Haced los ejercicios Memorión

    El objetivo de estos ejercicios es completar un juego de memoria.