Structs, enums y organizar el código

Agrupar datos, máquinas de estado, namespaces, headers, el preprocesador y constexpr.

12 aulas · 9 horas de práctica · en el navegador, sin instalar nada

Temario

  1. struct: agrupar datos — Un jugador no es un nombre suelto y un número suelto: es las dos cosas juntas. struct arma un tipo nuevo con sus campos, y el punto los lee y los cambia.
  2. Vectores de structs — Un plantel no son cuatro variables: es una lista de jugadores. vector<Jugador> los guarda juntos, y con for, referencias y búsquedas se recorren, se filtran y se cambian.
  3. Structs con funciones — Un struct no guarda solo datos: también puede tener las funciones que los cambian. El caballo sabe avanzar solo, y c.avanzar() mueve a ESE caballo.
  4. enum class: un tipo con valores que tienen nombre — El color de un semáforo no es un string cualquiera ni un número suelto: es ROJO, AMARILLO o VERDE. enum class arma un tipo con exactamente esos valores, y el compilador no deja poner otro.
  5. Máquinas de estado con enum y switch — Un ascensor no "sabe" qué hacer: depende de si está quieto, subiendo o bajando. Un enum dice en qué estado está, y un switch dice qué hace en cada uno y cuándo cambia.
  6. namespace: apellidos para los nombres — El truco y el póker tienen su Carta y su valor(), y cada uno cuenta distinto. Un namespace le pone apellido a cada nombre: truco::valor y poker::valor conviven sin pisarse.
  7. Headers y .cpp: compilar por partes — Un programa grande no es un archivo: es un header que dice qué hay y un .cpp que dice cómo se hace. Declarar y definir, los prototipos, extern, y por qué el linker se queja.
  8. El preprocesador: #include, #define e include guards — Antes de compilar, un programa aparte recorre el código y hace reemplazos de texto: pega los #include, cambia las macros y decide qué partes quedan. Include guards, #ifdef y por qué hoy se prefieren constexpr y funciones.
  9. const y constexpr: lo que no cambia — La gravedad no cambia a mitad del lanzamiento. const le pone candado a un valor, constexpr lo calcula al compilar, y static_assert frena la compilación si una regla no se cumple.
  10. using y alias de tipos — map<int, vector<string>> dice cómo está hecho, no qué es. Un alias le pone nombre: Salon, Mesa, Plato. Y el otro using, el de los namespaces, y por qué using namespace std a veces choca.
  11. Taller: el fixture del torneo — El torneo del barrio, de punta a punta: cada equipo es un struct que sabe anotar sus partidos, el fixture es todos contra todos, y la tabla se ordena con desempate.
  12. Taller: control de tráfico aéreo — La torre de Ezeiza decide quién aterriza primero: emergencias antes que nada, combustible que se gasta mientras esperan, dos pistas y desvíos. Structs, enum, namespace, constexpr y alias, trabajando juntos.

Es parte de