Saltar al contenido
Inicio 100 Días de Código en Python — Día 41: Fundamentos web — Introducción a HTML

100 Días de Código en Python — Día 41: Fundamentos web — Introducción a HTML

Nivel: Grado décimo Área: Tecnología e Informática Modalidad: Tutorial práctico Fuente: Curso "100 Days of Code: The Complete Python Pro Bootcamp" (Angela Yu, App Brewery). Contenido del Día 41 (bloque Web Foundation).

Este tutorial adapta pedagógicamente el Día 41. Las secciones 📝 Ejercicio original del curso provienen de los archivos del curso (transcripciones de las lecciones 308 a 315). Los archivos de inicio (index.html, goal.png) se descargan desde los recursos de Udemy y no están en la carpeta, así que los fragmentos de código de los ejercicios originales son reconstrucciones a partir de lo que describe la profesora. Los retos 🟢🟡🟠🔴, el proyecto extra y el proyecto integrador son creaciones de esta adaptación. Las correcciones al material original aparecen como 🛠️ Nota técnica.

Nota sobre las verificaciones: el 26 de septiembre de 2026 se comprobó con Google Chrome 153 (modo headless) y Python 3.14 el comportamiento de los ejemplos de esta guía.


Tabla de contenidos

  1. Antes de empezar: ¿por qué HTML en un curso de Python?
  2. ¿Cómo funciona Internet?
  3. ¿Cómo funcionan los sitios web?
  4. El software que necesitamos
  5. ¿Qué es HTML?
  6. Elementos de encabezado: h1 a h6
  7. El elemento párrafo: p
  8. Elementos vacíos: hr y br
  9. 🚀 Proyecto del día: Ranking de películas
  10. 🌟 Proyecto extra: el menú de la tienda escolar
  11. 🏆 Proyecto integrador del bloque web (Días 41 a 44) — Etapa 1
  12. 🧩 Comprueba lo aprendido
  13. 🤖 Programar con apoyo de IA
  14. 🛠️ Correcciones técnicas al material original
  15. 📋 Matriz de trazabilidad
  16. 📦 Evidencias de aprendizaje del Día 41

0. Antes de empezar: ¿por qué HTML en un curso de Python?

(Adaptación pedagógica; no es una lección del curso.)

Hasta el Día 40 escribimos programas en Python. Del Día 41 al 44 el curso hace una pausa para aprender los fundamentos de la web: HTML y CSS. No es un desvío: en los días siguientes del mismo curso vamos a extraer datos de páginas web con Beautiful Soup (Día 45) y a construir sitios web con Python usando Flask (Día 54 en adelante). Para leer una página con un programa o para generar páginas desde Python, primero hay que entender cómo está hecha una página.

Diferencia importante: HTML no es un lenguaje de programación. No tiene variables, condicionales ni ciclos. Es un lenguaje de marcado: sirve para describir la estructura de un documento. Por eso aquí no hablaremos de "ejecutar" código, sino de abrir o renderizar (dibujar) una página en el navegador.

Lo nuevo hoy:

  1. Qué pasa entre tu computador y un servidor cuando escribes una dirección web.
  2. Qué hace cada tipo de archivo de una página: HTML, CSS y JavaScript.
  3. Tus primeros elementos HTML: encabezados, párrafos, líneas horizontales y saltos de línea.

Prerequisito general: saber crear carpetas y archivos en el computador, y haber trabajado con un editor de código (en el Día 15 el curso usa PyCharm; para la web usaremos VS Code, ver sección 3). No se necesita saber Python para este día, salvo en algunos retos opcionales.


1. ¿Cómo funciona Internet?

(Fuente: 308 - How Does the Internet Actually Work-.md)

🎯 Objetivo de aprendizaje

Al finalizar, podrás explicar con tus palabras el recorrido de una petición web: cliente → proveedor de Internet → DNS → dirección IP → servidor → cliente.

🧠 ¿Qué aprenderemos?

Cliente, servidor, ISP, DNS, dirección IP, IP dinámica, CDN y cables submarinos.

📖 Explicación conceptual

La profesora desmonta un mito: Internet no es una nube. Es, en esencia, una enorme red de cables que conecta computadores entre sí.

Concepto Qué es Analogía del curso
Servidor Computador conectado 24/7 que entrega archivos y datos cuando alguien los pide Una biblioteca abierta día y noche
Cliente El computador (o celular) que usas para pedir una página La persona que entra a la biblioteca
ISP (Internet Service Provider) La empresa a la que pagas por el acceso a Internet En el curso: AT&T, Comcast, BT. En Colombia, por ejemplo: Claro, Movistar, Tigo, ETB
DNS (Domain Name System) Sistema que traduce un nombre (google.com) a una dirección IP Una "guía telefónica mejorada"
Dirección IP Número que identifica a cada equipo conectado Un código postal del computador

El recorrido cuando escribes google.com:

  1. Tu navegador envía la petición a tu ISP.
  2. El ISP la pasa a un servidor DNS, que busca la dirección IP de google.com.
  3. La IP regresa a tu navegador.
  4. Tu navegador hace una petición directa a esa IP, donde están los servidores de Google.
  5. Los servidores responden con los archivos de la página.

IP dinámica y CDN: si buscas hoy la IP de Google y la buscas en un mes, puede cambiar. Muchos sitios usan redes de distribución de contenidos (CDN), que te conectan al servidor más cercano a ti. Por eso la profesora pide no copiar la IP que aparece en su video, sino buscar la tuya.

Los océanos: los continentes se conectan con cables submarinos de fibra óptica que transmiten datos con láser. Se pueden explorar en submarinecablemap.com.

🔎 Ejemplo explicado: buscar la IP de un sitio

El curso propone la página nslookup.io. En Windows también existe el comando nslookup y, como ya sabes Python, puedes preguntarle al DNS desde un programa:

Python
import socket

sitio = "google.com"
ip = socket.gethostbyname(sitio)   # le pide al DNS la IP del nombre
print(f"La IP de {sitio} es {ip}")
  • Qué problema resuelve: traduce un nombre legible por humanos a la dirección que usan las máquinas.
  • Resultado esperado: una dirección del tipo 142.250.x.x. Tu resultado será diferente al de tus compañeros si están en otra red, y puede cambiar otro día (CDN e IP dinámica).
  • Prueba final del curso: copia la IP en la barra del navegador. En el video de la profesora aparece la página de Google.

🛠️ Nota técnica: hoy abrir una IP directamente en el navegador no siempre funciona. Muchos servidores alojan varios sitios en la misma IP y usan HTTPS con certificados emitidos para el nombre (no para la IP), así que el navegador puede mostrar un error de certificado o una página vacía. Eso no contradice la idea central: el DNS sí traduce el nombre a una IP.

⚠️ Errores frecuentes

Error Por qué ocurre Cómo identificarlo Cómo solucionarlo
Creer que "Internet" y "la web" son lo mismo Se usan como sinónimos en la vida diaria Decir "Tim Berners-Lee inventó Internet" Internet es la red; la web es un servicio que funciona sobre ella (ver sección 4)
socket.gaierror en Python Nombre mal escrito o sin conexión El programa termina con ese error Revisa la ortografía (google.com, sin https://) y tu conexión
Poner https://google.com en gethostbyname Se confunde una URL con un nombre de dominio gaierror Pasa solo el dominio: google.com

Retos adicionales (creados para esta adaptación)

  • 🟢 Reto 1 — Aplicación: usa nslookup en la terminal o el programa de Python para buscar la IP de tres sitios que visites a menudo. Anota los resultados en una tabla.
  • 🟡 Reto 2 — Ampliación: modifica el programa para que reciba una lista de sitios y muestre la IP de cada uno. Si un nombre no existe, debe mostrar "No encontrado" en lugar de detenerse (pista: try/except socket.gaierror, Día 30).
  • 🟠 Reto 3 — Desafío: repite la búsqueda de un sitio desde la red del colegio y desde la red de tu casa (o datos móviles). ¿Obtienes la misma IP? Explica el resultado usando los conceptos de CDN e IP dinámica.
  • 🔴 Reto 4 — Pensamiento computacional: dibuja un diagrama del recorrido de una petición desde el computador de la sala de informática hasta el servidor de la plataforma académica del colegio. Identifica cliente, ISP, DNS y servidor. ¿Qué pasaría si el DNS dejara de funcionar pero Internet siguiera activo?

2. ¿Cómo funcionan los sitios web?

(Fuente: 309 - How Do Websites Actually Work-.md)

🎯 Objetivo de aprendizaje

Distinguir la función de HTML, CSS y JavaScript y usar las herramientas para desarrolladores del navegador para inspeccionar una página.

📖 Explicación conceptual

El navegador (Chrome, Safari, Firefox…) recibe del servidor, en general, tres tipos de archivos. La profesora usa la analogía de construir una casa:

Archivo Responsabilidad En la casa
HTML Estructura y contenido: títulos, imágenes, botones, cajas de texto El constructor que levanta paredes e instala el baño
CSS Apariencia: colores, fuentes, tamaños, distribución Los pintores y decoradores
JavaScript Comportamiento: que la página haga cosas El electricista y el plomero

Ejemplo del curso con la página de Google: el HTML pone el logo, la caja de búsqueda y dos botones; el CSS les da el aspecto que conocemos; el JavaScript hace que funcionen.

🔎 Ejemplo explicado: editar una página "en vivo"

  1. Abre en Chrome un sitio de noticias (el curso usa techcrunch.com).
  2. Haz clic derecho sobre un titular → Inspeccionar.
  3. Se abren las herramientas para desarrolladores (DevTools), con el código resaltado.
  4. Haz doble clic sobre el texto del titular en el panel y cámbialo.
  5. Recarga la página (F5): tu cambio desaparece.

¿Por qué? Porque editaste la copia local que descargó tu navegador. Al recargar, el navegador hace una nueva petición al servidor y recibe el archivo original. No cambiaste nada en el servidor ni para otras personas.

🏫 Para el aula (adaptación): el curso sugiere usar este truco como broma. Con este mismo método se pueden fabricar capturas falsas de noticias o de notas. Una captura de pantalla no es una prueba de lo que dice un sitio web. Úsalo solo para aprender, y nunca para engañar a otras personas.

Retos adicionales (creados para esta adaptación)

  • 🟢 Reto 1: inspecciona la página de inicio del sitio web de tu colegio o de tu municipio. Encuentra en el código el texto del título principal.
  • 🟡 Reto 2: en la misma página, identifica un elemento que sea estructura (HTML), uno que sea apariencia (por ejemplo, un color) y uno que tenga comportamiento (un menú que se abre, un botón). Justifica cada uno.
  • 🟠 Reto 3: cambia un texto con DevTools, toma una captura y luego recarga. Escribe un párrafo que explique a un familiar por qué una captura de pantalla puede no ser confiable.
  • 🔴 Reto 4: si HTML, CSS y JavaScript fueran tres personas en un equipo, ¿qué pasaría si una sola persona hiciera todo? Relaciónalo con la idea de dividir un programa en funciones que trabajaste en Python.

3. El software que necesitamos

(Fuente: 310-download-the-required-software.md)

📝 Contenido original del curso

  1. Visual Studio Code, el editor gratuito de Microsoft (code.visualstudio.com).
  2. Extensiones de VS Code:
    • Live Preview (Microsoft): muestra la página mientras escribes.
    • Prettier: da formato automático al código.
    • vscode-icons: íconos para identificar tipos de archivo.
  3. Google Chrome, recomendado por sus herramientas para desarrolladores, aunque uses otro navegador en tu día a día.

🛠️ Nota técnica: el curso advierte que algunos videos muestran el editor Atom. GitHub retiró Atom en diciembre de 2022, así que donde el video diga "Atom" debes usar VS Code.

🏫 Para el aula

  • Cómo previsualizar: clic derecho sobre index.html → Show Preview (Live Preview).
  • Organización recomendada por el curso: crea una carpeta llamada Proyectos de Desarrollo Web y guarda allí cada ejercicio descomprimido.
  • En los computadores del colegio, si no puedes instalar extensiones, abre el archivo .html directamente en el navegador (doble clic) y recarga (F5) cada vez que guardes.

⚠️ Errores frecuentes

Error Por qué ocurre Cómo solucionarlo
VS Code no muestra la carpeta del ejercicio El .zip no se extrajo: estás mirando dentro del comprimido Clic derecho → Extraer todo y abre la carpeta extraída
No aparece "Show Preview" Falta la extensión Live Preview, o el archivo no termina en .html Instala la extensión y revisa la extensión del archivo
Al guardar, el código "se mueve solo" Prettier da formato al guardar Es normal (la profesora también lo menciona)

4. ¿Qué es HTML?

(Fuente: 311 - What is HTML-.md)

🎯 Objetivo de aprendizaje

Explicar qué significan hipertexto y lenguaje de marcado, y reconocer una etiqueta HTML.

📖 Explicación conceptual

HTML = HyperText Markup Language (lenguaje de marcado de hipertexto).

  • Se puede hacer una página solo con HTML, pero no solo con CSS ni solo con JavaScript. Las primeras páginas web eran solo HTML.
  • Hipertexto: texto que enlaza con otros documentos. Es la base de la web. El curso muestra el primer sitio web, creado por Tim Berners-Lee, lleno de enlaces azules que llevan a otros archivos HTML.
  • Lenguaje de marcado: marcas que indican qué es cada parte de un texto. En español, las comillas "marcan" una cita. Un editor de periódico marca con un garabato lo que va en negrita. En HTML, las marcas se llaman etiquetas.

La profesora aclara que existen muchísimas etiquetas, pero en la práctica se usa un grupo pequeño. No hay que memorizarlas: se aprenden a medida que se necesitan.

🛠️ Nota técnica: el video dice que Tim Berners-Lee es "el inventor de Internet". En realidad inventó la World Wide Web (la web: HTML, HTTP y las URL) en 1989–1991. Internet (la red de redes que transporta los datos) existía desde antes, gracias al trabajo de muchas personas, como Vint Cerf y Bob Kahn (protocolo TCP/IP).

Pregunta para discutir

Si HTML "marca" el texto, ¿qué parte de un libro de texto del colegio sería un título, qué parte un párrafo y qué parte un enlace a otro documento?


5. Elementos de encabezado: h1 a h6

(Fuente: 312 - HTML Heading Elements.md)

🎯 Objetivo de aprendizaje

Escribir encabezados HTML con la jerarquía correcta y distinguir etiqueta de elemento.

🧠 ¿Qué aprenderemos?

Etiqueta de apertura, etiqueta de cierre, contenido, elemento y los seis niveles de encabezado.

📖 Explicación conceptual

HTML
<h1>Hola mundo</h1>
Parte Nombre
<h1> Etiqueta de apertura
Hola mundo Contenido
</h1> Etiqueta de cierre (lleva / justo después de <)
Todo junto Elemento

Cualquier cosa entre paréntesis angulares < > es una etiqueta. El elemento incluye las etiquetas y el contenido.

¿Para qué sirven los encabezados? La idea viene de los libros: el índice tiene una jerarquía (título del libro → capítulos → secciones → subsecciones). En HTML hay seis niveles, de h1 (el más importante y, por defecto, el más grande) a h6 (el menos importante). No existe h7.

Reglas de buena práctica del curso:

  1. Un solo h1 por página: es el título principal, como el título del libro.
  2. No saltar niveles: de h1 pasa a h2, no directamente a h3.

Estas reglas no rompen la página si no se cumplen: son convenciones profesionales. Ayudan a los lectores de pantalla y a los buscadores a entender la estructura.

La profesora recomienda consultar MDN Web Docs (Mozilla Developer Network) cuando uses un elemento nuevo.

🔎 Ejemplo explicado

HTML
<h1>Manual del estudiante</h1>
<h2>Capítulo 1: Convivencia</h2>
<h3>1.1 Derechos</h3>
<h3>1.2 Deberes</h3>
<h2>Capítulo 2: Evaluación</h2>
  • Qué problema resuelve: muestra que "Derechos" y "Deberes" pertenecen a "Convivencia", y que "Evaluación" es otro capítulo del mismo nivel.
  • Resultado esperado: cinco líneas de tamaños distintos; las de nivel h2 se ven iguales entre sí, y también las de nivel h3.

⚠️ Errores frecuentes

Error Qué ocurre Cómo identificarlo Cómo solucionarlo
<h1>Título</h6> La apertura y el cierre no coinciden. Es HTML inválido, aunque Chrome lo "repara" y cierra el h1 (verificado) Visualmente puede no notarse; lo detecta un validador (validator.w3.org) o una revisión cuidadosa La etiqueta de cierre debe tener el mismo número. No confíes en que el navegador corrija tus errores
<h1>Título<h1> Falta la / en el cierre: se abre un segundo h1 Todo lo que sigue sale como título Escribe </h1>
Usar h3 porque "se ve del tamaño que quiero" Se confunde importancia con tamaño La jerarquía no tiene sentido al leer solo los títulos Elige el nivel por su importancia; el tamaño se cambia con CSS (Día 44)
Poner varios h1 Varios "títulos del libro" Hay más de un <h1> en el archivo Deja un solo h1; usa h2 para lo demás

📝 Ejercicio original del curso: el índice de un libro (2.1 Heading Element)

  • Enunciado: el index.html de inicio tiene el índice de un libro escrito como texto plano: todo aparece en una sola línea. Hay que usar encabezados para que la vista previa quede igual a la imagen objetivo.
  • Objetivo: reflejar la jerarquía del índice con h1 a h4.
  • Conceptos: etiquetas de apertura y cierre, jerarquía de encabezados.
  • Resultado esperado (según el video): "Book" como h1; "Chapter 1", "Chapter 2" y "Chapter 3" como h2; las secciones de cada capítulo como h3; y "Diagram 1", que está dentro de la sección 1 del capítulo 2, como h4.
  • Restricción: solo agregar etiquetas; no cambiar el texto.

🔍 Antes de programar

  • ¿Cuál es el elemento más importante de la página? ¿Cuántos hay?
  • ¿Qué elementos están al mismo nivel entre sí?
  • ¿"Diagram 1" pertenece a un capítulo o a una sección? ¿Qué nivel le corresponde entonces?
  • ¿Cómo comprobarás que terminaste? (Pista: compara con la imagen goal.png.)

Pista (ábrela solo si llevas más de 10 minutos intentándolo)

La estructura empieza así; complétala tú:

HTML
<h1>Book</h1>
<h2>Chapter 1</h2>
<h3>Section 1</h3>
<!-- ... continúa con el resto de capítulos y secciones ... -->

Retos adicionales (creados para esta adaptación)

  • 🟢 Reto 1 — Aplicación: escribe con encabezados la tabla de contenidos de un libro de texto que uses en otra asignatura (mínimo tres niveles).
  • 🟡 Reto 2 — Ampliación: encuentra en el índice de ese libro un punto que necesitaría siete niveles. ¿Cómo lo resolverías si no existe h7? Propón una reorganización.
  • 🟠 Reto 3 — Desafío (depuración): este fragmento tiene tres errores. Encuéntralos sin abrir el navegador y después comprueba:
HTML
  <h1>Feria de la ciencia</h1>
  <h3>Categorías<h3>
  <h2>Física</h1>
  <h2>Biología</h2>
  • 🔴 Reto 4 — Pensamiento computacional: el reglamento de un torneo deportivo del colegio tiene título, tres deportes, reglas generales y reglas específicas por deporte. Diseña primero en papel el árbol de jerarquía y después escríbelo en HTML. Justifica cada nivel elegido.

6. El elemento párrafo: p

(Fuente: 313 - HTML Paragraph Elements.md)

🎯 Objetivo de aprendizaje

Separar un texto en párrafos con <p> y explicar por qué importa para la accesibilidad.

📖 Explicación conceptual

HTML
<p>Este es un párrafo.</p>

¿Por qué no basta con escribir el texto con Enter? Porque el navegador ignora los saltos de línea del archivo: todo el texto plano queda en una sola línea continua. Con <p>, cada párrafo queda separado por un espacio.

Accesibilidad: las personas ciegas usan lectores de pantalla, que detectan el inicio de cada párrafo y permiten saltar de uno a otro. Sin <p>, el lector no sabe dónde empieza y termina cada idea.

Lorem ipsum: texto de relleno para diseñar cuando aún no hay contenido real. Proviene de un texto de Cicerón de hace más de 2 000 años y se usa en la imprenta desde el siglo XVI. Es mejor que escribir "contenido contenido contenido", porque imita la longitud y el ritmo de un texto natural. Se genera en lipsum.com, y hay variantes divertidas (Bacon Ipsum, Bro Ipsum, Pirate Ipsum…).

🔎 Ejemplo explicado

HTML
<p>El reciclaje reduce la cantidad de residuos que llegan al relleno sanitario.</p>
<p>En el colegio hay tres canecas: blanca, negra y verde.</p>

Resultado esperado: dos bloques de texto separados por un espacio vertical. Si quitas las etiquetas, verás ambas frases pegadas en la misma línea.

⚠️ Errores frecuentes

Error Qué ocurre Cómo solucionarlo
Presionar Enter en el código esperando una línea nueva El navegador lo ignora Usa un <p> por párrafo
Olvidar </p> A veces "funciona" porque el navegador cierra el párrafo solo, pero el código es difícil de leer y fallará en casos más complejos Cierra siempre el párrafo
Meter un encabezado dentro de un párrafo: <p><h2>...</h2></p> Un h2 no puede ir dentro de un p: el navegador cierra el párrafo antes y deja un <p></p> vacío Los encabezados van fuera de los párrafos

📝 Ejercicio original del curso: tres párrafos (2.2 Paragraph Element)

  • Enunciado: el index.html tiene tres párrafos de texto en latín (Lorem ipsum) que se ven mezclados en una línea. Hay que separarlos.
  • Objetivo: que la vista previa muestre tres párrafos distintos.
  • Conceptos: elemento p.
  • Resultado esperado: cada párrafo en su propio bloque, igual que en la imagen objetivo.

🔍 Antes de programar

  • ¿Cómo sabes dónde termina un párrafo si el texto está en latín y no lo entiendes? (Pista: mira el archivo, no la vista previa.)
  • ¿Cuántas etiquetas de apertura y cuántas de cierre necesitas en total?

Reto extra del curso: genera tu propio texto de relleno (Lorem, Bacon o Bro Ipsum) y crea un "artículo" con varios párrafos.

Retos adicionales (creados para esta adaptación)

  • 🟢 Reto 1: crea un artículo sobre tu deporte favorito con un h1, dos h2 y al menos dos párrafos bajo cada h2, usando texto de relleno.
  • 🟡 Reto 2: reemplaza el texto de relleno por contenido real escrito por ti. Compara: ¿cambia el aspecto visual? ¿Por qué los diseñadores prefieren Lorem ipsum al empezar?
  • 🟠 Reto 3: activa el lector de pantalla de tu sistema (Narrador en Windows: Ctrl + Win + Enter) y escucha tu página con y sin etiquetas <p>. Describe la diferencia.
  • 🔴 Reto 4: escribe un pequeño programa en Python que reciba un texto largo con párrafos separados por líneas en blanco y genere el HTML con cada párrafo dentro de <p>...</p> (pista: texto.split("\n\n") y un ciclo for). Así conectas lo que ya sabes con lo nuevo.

7. Elementos vacíos: hr y br

(Fuente: 314 - Self Closing Tags.md)

🎯 Objetivo de aprendizaje

Usar correctamente los elementos vacíos <hr /> y <br />, y decidir cuándo no usarlos.

📖 Explicación conceptual

Un elemento vacío (void element) no puede tener contenido. Por eso tiene una sola etiqueta y no tiene etiqueta de cierre.

Elemento Qué hace Cuándo usarlo
<hr /> Línea horizontal (horizontal rule) Separar temas diferentes
<br /> Salto de línea (break) dentro de un mismo párrafo Poemas, direcciones: cuando el salto de línea es parte del significado

¿Dónde va la barra?

  • Etiqueta de cierre: </p> → la barra va después de <.
  • Elemento vacío: <br /> → la barra va antes de >, normalmente con un espacio.
  • Cuidado: es la barra /, no la barra invertida \.

¿<br> o <br />? Las dos son válidas. En HTML5 el navegador ignora la barra final. La profesora recomienda escribirla porque así un humano distingue a simple vista un elemento vacío de uno que necesita cierre.

🔎 Ejemplo explicado: el poema de William Blake

HTML
<p>
  To see a World in a Grain of Sand<br />
  And a Heaven in a Wild Flower,<br />
  Hold Infinity in the palm of your hand<br />
  And Eternity in an hour.
</p>
  • Por qué un solo <p>: el poema es una unidad; no son cuatro párrafos.
  • Por qué <br />: sin saltos, los versos quedarían en una sola línea y se perdería el ritmo.

⚠️ Errores frecuentes

Error Por qué es un problema Solución
Usar varios <br /> para separar párrafos o "dar espacio" Afecta la accesibilidad: el lector de pantalla no reconoce párrafos distintos Crea un <p> nuevo por cada párrafo; el espacio se controla con CSS (Día 44)
Escribir <br></br> o <hr>texto</hr> Los elementos vacíos no tienen cierre ni contenido <br /> y <hr />
Escribir <br\> Con barra invertida, Chrome no reconoce un br: crea un elemento desconocido llamado br\ y no hay salto de línea (verificado) <br />

📝 Ejercicio original del curso: la página de William Blake

  • Enunciado: el index.html contiene el nombre del poeta, su dirección y dos párrafos de Wikipedia sobre él, todo desordenado.
  • Resultado esperado (según el video):
    1. El nombre como h1.
    2. La dirección en un párrafo, con cada línea separada por <br />.
    3. Un <hr /> entre la dirección y la descripción.
    4. La descripción en dos párrafos separados.
  • Consejo del curso: para comparar tu código con la solución, usa diffchecker.com: pega ambos textos y resalta las diferencias. La profesora muestra que un espacio extra no importa, pero una etiqueta de cierre mal escrita cambia toda la página.

🔍 Antes de programar

  • ¿Cuántos párrafos hay en total? ¿La dirección es un párrafo o varios?
  • ¿Qué elemento separa dos temas distintos?
  • ¿Dónde exactamente va cada <br />: al principio o al final de la línea?

💡 Alternativa (adaptación): HTML tiene el elemento <address> para datos de contacto. No lo pide el curso, pero puedes consultarlo en MDN y compararlo con la solución que usa <p>.

Retos adicionales (creados para esta adaptación)

  • 🟢 Reto 1: escribe la letra de una canción o un poema colombiano que te guste (por ejemplo, de José Asunción Silva) con un <p> por estrofa y <br /> por verso.
  • 🟡 Reto 2: crea la "tarjeta de contacto" del colegio: nombre como h1, dirección en un párrafo con saltos, <hr />, y un párrafo sobre su historia.
  • 🟠 Reto 3 — Depuración: un compañero usó ocho <br /> seguidos para separar dos secciones. Explica por qué es mala práctica y reescribe el código correctamente.
  • 🔴 Reto 4: decide para cada caso si usarías <p>, <br /> o <hr />, y justifica: (a) una receta con ingredientes y pasos; (b) el cambio de tema entre "Noticias" y "Eventos"; (c) una dirección postal; (d) dos ideas distintas sobre el mismo tema.

8. 🚀 Proyecto del día: Ranking de películas

(Fuente: 315 - Day 41 Project - Movie Ranking.md)

Problema

Cuando alguien te pide una recomendación de película, no recuerdas cuáles has visto y te gustaron. La profesora se inspiró en rogerebert.com, el sitio de un famoso crítico de cine que registraba críticas de todo lo que veía.

Contexto

Este proyecto sirve para cualquier lista personal: películas, series, libros, videojuegos o canciones. Es tu primera página web completa hecha desde cero.

Objetivo

Construir una página web que muestre al menos tres películas favoritas y explique por qué te gustan.

Requisitos funcionales (originales del curso)

  1. Un h1 como título de la página.
  2. Un h2 como subtítulo.
  3. Un <hr /> como elemento vacío después del subtítulo.
  4. Tres películas, cada una con un h3.
  5. Un párrafo (<p>) que explique por qué te gustó cada película.

Solución de la profesora (resumen del video): h1 "Las mejores películas de todos los tiempos según Angela"; h2 "Mis 3 mejores películas"; <hr />; y como h3: El viaje de Chihiro (su anime favorito), Ex Machina (ciencia ficción) y Drive (por su fotografía), cada una con un párrafo corto.

Restricciones técnicas

Solo puedes usar lo aprendido hoy: h1–h6, p, hr y br.

Planificación

  1. Comprender: ¿qué información mostrará la página?
  2. Entradas: tus tres películas y tus razones.
  3. Proceso: organizar la información por jerarquía.
  4. Salida: una página que se vea como la imagen objetivo, pero con tu contenido.
  5. Dividir: encabezado de la página / separador / película 1 / película 2 / película 3.
  6. Diseñar: escribe primero en papel el "esqueleto" con los nombres de las etiquetas.
  7. Implementar, 8. Probar, 9. Corregir, 10. Mejorar (ver abajo).

Construcción paso a paso

  • Versión 1 — Esqueleto: solo el h1 y el h2. Previsualiza.
  • Versión 2 — Separador: agrega <hr />. Comprueba que aparece la línea.
  • Versión 3 — Las películas: agrega los tres h3. Lee solo los títulos: ¿se entiende la estructura?
  • Versión 4 — Contenido: agrega un párrafo por película.
  • Versión final — Personalización: agrega lo que quieras con <br />, más párrafos o un poema sobre tu película favorita (idea de la profesora).

Pruebas

Prueba Resultado esperado
Contar los <h1> del archivo Exactamente 1
Leer solo los encabezados en orden h1 → h2 → h3, h3, h3, sin saltos de nivel
Contar películas Al menos 3
Revisar cada <p> Tiene su </p>
Abrir la página Hay una línea horizontal entre el subtítulo y las películas

🧪 Prueba y depuración

Este código tiene cuatro errores. Encuéntralos, explica qué efecto produce cada uno y corrígelos:

HTML
<h1>Mis películas favoritas<h1>
<h2>Top 3 de 2026</h2>
<hr></hr>
<h3>Encanto</h3>
<p>Porque muestra la cultura colombiana y su música.
<h4>Coco</h4>
<p>Por su historia sobre la familia.</p>
<h3>Intensamente 2</h3>
<p>Porque explica las emociones <br\> de forma divertida.</p>

⭐ Extensión del proyecto

  • Agrega una calificación de 1 a 5 estrellas con el carácter ★ (pista: el Día 42 verás por qué la página necesita <meta charset="UTF-8"> para mostrar bien ese símbolo).
  • Agrega una sección "Películas que no recomiendo" separada por otro <hr />.
  • Escribe los datos (director, año, duración) en un párrafo con <br /> entre cada dato.

9. 🌟 Proyecto extra: el menú de la tienda escolar

(Proyecto creado para esta adaptación; no existe en el curso original.)

Situación

La tienda escolar quiere publicar su menú para que los estudiantes sepan qué hay antes del descanso y no se formen filas largas preguntando precios.

Requisitos

  1. Un título principal y un párrafo de bienvenida con el horario de atención.
  2. Al menos tres categorías (por ejemplo: bebidas, comidas, frutas).
  3. Al menos tres productos por categoría, con su nombre, precio y una descripción corta.
  4. Una sección final de "Información importante" (medios de pago, productos sin azúcar, etc.) separada del resto.
  5. Solo puedes usar h1–h6, p, br y hr.

Decisiones que debes tomar (y justificar por escrito)

  • ¿Qué nivel de encabezado tiene cada producto?
  • ¿El precio va en el mismo párrafo que la descripción, separado con <br />, o en otro párrafo?
  • ¿Dónde tiene sentido un <hr /> y dónde sobraría?

Casos de prueba

  • Si alguien lee solo los encabezados, ¿entiende cómo está organizado el menú?
  • ¿Hay un único h1?
  • ¿Algún producto quedó con un nivel de encabezado diferente al de los demás de su categoría?

10. 🏆 Proyecto integrador del bloque web (Días 41 a 44) — Etapa 1

(Proyecto creado para esta adaptación. Se construye en cuatro etapas, una por día; la versión final y los criterios completos están en el tutorial del Día 44.)

Situación problema

Muchos grupos del colegio (el semillero de investigación, el club de robótica, el grupo de danza, el comité ambiental) no tienen un sitio web. La información sobre sus reuniones, sus logros y cómo unirse se pierde en grupos de chat.

Pregunta orientadora

¿Cómo podemos construir un sitio web claro, accesible y atractivo que presente un grupo o proyecto del colegio a la comunidad educativa?

Etapa 1 (hoy): el contenido y la estructura

  1. Elige un grupo o proyecto real del colegio (o uno que te gustaría crear).
  2. Escribe index.html solo con lo aprendido hoy:
    • h1 con el nombre del grupo.
    • Un párrafo de presentación (¿quiénes son?, ¿qué hacen?).
    • <hr />.
    • Al menos tres secciones con h2 (por ejemplo: "Qué hacemos", "Logros", "Cómo unirse"), cada una con uno o más párrafos.
    • Un dato de contacto o lugar de reunión en un párrafo con <br />.
  3. Entregable de la etapa: el archivo index.html y una hoja con el "árbol de encabezados" dibujado a mano.

En las siguientes etapas agregarás: estructura completa, listas, enlaces e imágenes (Día 42); CSS externo y selectores (Día 43); colores, fuentes y modelo de caja (Día 44).


11. 🧩 Comprueba lo aprendido

Conceptuales

  1. Explica la diferencia entre cliente y servidor con un ejemplo del colegio.
  2. ¿Qué hace un servidor DNS? ¿Por qué se compara con una guía telefónica?
  3. ¿Qué diferencia hay entre una etiqueta y un elemento?
  4. ¿Por qué se recomienda un solo h1 por página si el navegador acepta varios?
  5. ¿Qué es un elemento vacío? Da dos ejemplos.

Análisis de código

¿Qué problema de accesibilidad tiene este código? ¿Cómo lo arreglarías?

HTML
<p>Primera idea sobre el agua.<br /><br />Segunda idea sobre el aire.<br /><br />Tercera idea sobre el suelo.</p>

Predicción

Sin abrir el navegador, describe cómo se verá esta página. Luego compruébalo.

HTML
<h2>Horario</h2>
Lunes: matemáticas
Martes: sociales
<p>Miércoles: inglés</p>

Depuración

Encuentra y corrige los errores:

HTML
<h1>Club de ajedrez</h2>
<p>Nos reunimos los jueves.</p
<hr/>
<h3>Integrantes</h3>

Modificación

Toma tu Ranking de películas y conviértelo en un "Ranking de libros del plan lector", agregando un cuarto nivel de encabezado para las citas favoritas de cada libro.

Creación

Crea desde cero la página "Mi horario de clases" con un h1, un h2 por día de la semana y un párrafo por día con cada materia separada por <br />. Justifica por qué aquí sí es adecuado usar <br />.


12. 🤖 Programar con apoyo de IA

La IA puede ayudarte a aprender HTML, pero tú eres responsable de comprobar lo que dice. Sigue siempre este ciclo: formula el problema → intenta tú primero → consulta a la IA → lee y entiende el código → pruébalo → compáralo con MDN → modifícalo → explícalo con tus palabras.

Actividad 1 — Comprobar una afirmación. Pregúntale a una IA: "¿Quién inventó Internet?" y "¿Quién inventó la web?". ¿Da la misma respuesta a las dos preguntas? Compara con la nota técnica de la sección 4 y con una fuente confiable (por ejemplo, la página del CERN sobre el nacimiento de la web).

Actividad 2 — Detectar errores. Pide a una IA: "Escríbeme una página HTML con mis 3 películas favoritas usando h1, h2, hr, h3 y p". Revisa la respuesta con la tabla de Pruebas de la sección 8. ¿Cumple todas? ¿Usó elementos que aún no conoces (<ul>, <!DOCTYPE>, <head>)? Busca en MDN qué hace cada uno antes de dejarlos en tu código.

Actividad 3 — <br> contra <p>. Pregúntale a la IA: "¿Puedo usar <br> para separar párrafos?". Compara su respuesta con lo que dice el curso sobre accesibilidad y con la página de MDN del elemento <br> (sección Accessibility concerns).


13. 🛠️ Correcciones técnicas al material original

Archivo Afirmación del curso Observación Tratamiento
308 Los cables submarinos transmiten "hasta 400 gigabytes de datos por segundo" Las capacidades de fibra se expresan en gigabits por segundo (Gb/s); un gigabyte son 8 gigabits. Es muy probable que se trate de una confusión de unidades en la transcripción Mencionado aquí; el concepto central no cambia
308 Copiar la IP en el navegador muestra Google Hoy puede fallar por HTTPS y alojamiento compartido Nota técnica de la sección 1
308 "Internet es un trozo largo de alambre" Es una simplificación útil; Internet también usa enlaces inalámbricos, satélites y equipos como routers Tratado como analogía
310 Algunos videos usan Atom Atom fue retirado en diciembre de 2022 Nota técnica de la sección 3
311 Tim Berners-Lee es "el inventor de Internet" Inventó la web, no Internet Nota técnica de la sección 4; Actividad 1 de IA
312 Abrir con h1 y cerrar con h6 "tampoco va a funcionar" Es HTML inválido, pero Chrome 153 lo repara y cierra el h1 correctamente (verificado). El error real que "rompe" la página es olvidar la / (<h1>Título<h1>): todo lo siguiente queda dentro de un nuevo h1 Tabla de errores de la sección 5
314 La barra final de <br /> es opcional en HTML5 Correcto: el navegador la ignora. En cambio, una barra invertida (<br\>) sí rompe el salto (verificado) Tabla de errores de la sección 7

14. 📋 Matriz de trazabilidad

Contenido original Archivo de origen Concepto desarrollado Ejercicio original Reto adicional Proyecto relacionado
Cliente, servidor, ISP, DNS, IP, CDN, cables submarinos, nslookup.io 308 Sección 1 Búsqueda de la IP de Google Retos 1–4 de la sección 1 Etapa 1 del integrador (contexto)
HTML, CSS y JS (analogía de la casa), DevTools, copia local 309 Sección 2 Editar TechCrunch con DevTools Retos 1–4 de la sección 2 —
VS Code, Live Preview, Prettier, vscode-icons, Chrome, aviso sobre Atom 310 Sección 3 — — Todos
Hipertexto, lenguaje de marcado, etiquetas, primer sitio web, MDN 311 Sección 4 — Pregunta para discutir —
Etiqueta y elemento, h1–h6, un solo h1, no saltar niveles 312 Sección 5 2.1 Índice del libro Retos 1–4 de la sección 5 Secciones 8, 9 y 10
p, lectores de pantalla, Lorem ipsum y variantes 313 Sección 6 2.2 Tres párrafos; reto extra de Lorem ipsum Retos 1–4 de la sección 6 Secciones 8, 9 y 10
Elementos vacíos, hr, br, poema de Blake, diffchecker, barra final opcional 314 Sección 7 Página de William Blake Retos 1–4 de la sección 7 Secciones 8, 9 y 10
Proyecto Movie Ranking: h1, h2, hr, 3 × h3, p 315 Sección 8 Proyecto del día 🧪 y ⭐ de la sección 8 Sección 8
(No existe en el curso original) — — — Menú de la tienda escolar Sección 9
(No existe en el curso original) — — — Sitio web de un grupo del colegio, etapa 1 Sección 10

15. 📦 Evidencias de aprendizaje del Día 41

  • Diagrama del recorrido de una petición web (Reto 4 de la sección 1).
  • Resultado del programa de Python que consulta IP, con al menos tres sitios.
  • Los tres ejercicios originales resueltos: índice del libro, tres párrafos y página de William Blake.
  • El proyecto Ranking de películas funcionando, con captura de la vista previa y la tabla de pruebas diligenciada.
  • El menú de la tienda escolar (proyecto extra) con la justificación escrita de tus decisiones.
  • Etapa 1 del proyecto integrador y su árbol de encabezados.
  • Cuaderno de errores: etiquetas de cierre mal escritas, niveles de encabezado saltados, <br /> usado en lugar de <p>, barra invertida, .zip sin extraer.