—
CURSO: PROGRAMACIÓN EN C++ PARA REFUERZO ESCOLAR CON DEEPSEEK AI
Subtítulo: Domina uno de los lenguajes más potentes y rápidos del mundo. Aprende a programar videojuegos, sistemas y aplicaciones de alto rendimiento entendiendo la memoria, los punteros y la orientación a objetos como un verdadero ingeniero de software
—
FICHA TÉCNICA
Campo Descripción
Código MUN-CPP-001
Carga horaria total 45 horas (recomendado: 3 horas por semana durante 15 semanas)
Modalidad 100% textual guiada por DeepSeek AI, con ejercicios prácticos de codificación, análisis de memoria, depuración guiada y un proyecto final de aplicación de consola o videojuego 2D con SFML
Nivel educativo Adaptable a Bachillerato, Formación Profesional (Informática, Desarrollo de Aplicaciones Multiplataforma) y ámbito universitario. La complejidad de los ejercicios se gradúa según el nivel del alumno.
Riesgo Medio-Alto (frustración con la gestión manual de memoria y los punteros, errores de segmentación difíciles de depurar al inicio, posible escritura en zonas de memoria no asignadas, complejidad de la sintaxis de plantillas y bibliotecas). La IA no ve la pantalla del alumno; el facilitador debe verificar la comprensión de los conceptos de memoria y punteros.
Dirigido a Estudiantes que ya tienen fundamentos de programación en cualquier lenguaje y quieren aprender C++ para comprender cómo funcionan los programas a bajo nivel, desarrollar videojuegos, programar hardware (Arduino, robótica) o prepararse para estudios superiores en ingeniería informática.
Prerrequisito Haber completado el curso de Programación y Pensamiento Computacional con Python (MUN-PYT-001) o tener conocimientos equivalentes de programación (variables, condicionales, bucles, funciones). Es muy recomendable haber cursado también el de Programación Orientada a Objetos con Java o tener nociones de POO. Disponer de un ordenador con un compilador de C++ (g++ con MinGW en Windows, o clang++) y un IDE (VS Code, Code::Blocks, CLion o Qt Creator). Conexión a internet. Autorización parental para menores de edad.
Corpus obligatorio cargado en DeepSeek Documentación oficial de C++ (cppreference.com adaptada), Guía de buenas prácticas de C++ moderno (C++17/20), Manual de la STL (Standard Template Library), Referencia de SFML para videojuegos 2D, Guía de depuración con GDB
Certificación Diploma de aprovechamiento en Programación en C++ con IA. NO es una certificación profesional de C++ (CPA/CPE).
—
AVISO PARA EL ESTUDIANTE (LECTURA OBLIGATORIA)
C++ te da el control total sobre la máquina. Pero con un gran poder viene una gran responsabilidad.
DeepSeek te guiará en cada línea de código, te explicará los conceptos y te ayudará a depurar los temidos errores de segmentación. Pero recuerda:
· La memoria es tuya. Tú la pides, tú la liberas. Si no liberas, tienes fugas. Si accedes donde no debes, el programa se rompe. En Python o Java esto se hacía solo; aquí aprenderás a controlarlo.
· Un segmentation fault no es el fin del mundo. Es tu ordenador diciéndote que has tocado memoria que no te pertenece. Aprende a leer los mensajes del depurador.
· C++ es rápido porque no hace cosas por ti. Esa es su magia y su dificultad. No tiene recolector de basura ni comprobaciones de límites en arrays nativos.
· Paciencia, mucha paciencia. La curva de aprendizaje es más empinada, pero la vista desde la cima es espectacular.
—
MAPA GENERAL DEL CURSO
Parte Título Horas Enfoque
I Fundamentos de C++: del «Hola Mundo» a las funciones 12 h Compilación, tipos, variables, control de flujo, funciones, punteros básicos
II Programación Orientada a Objetos en C++ 12 h Clases, constructores, herencia, polimorfismo, encapsulación
III Gestión de Memoria y la STL 12 h Memoria dinámica, punteros inteligentes, vectores, mapas, algoritmos
IV Proyecto integrador con SFML 9 h Introducción a SFML, sprites, eventos, bucle de juego y proyecto final
—
PARTE I: FUNDAMENTOS DE C++. DEL «HOLA MUNDO» A LAS FUNCIONES
(12 horas)
—
Capítulo 1. Bienvenido al lenguaje que mueve el mundo
(1 hora)
· Inciso 1.1. ¿Cómo funciona este curso? Tú programas en C++; DeepSeek te guía.
· Inciso 1.2. Conoce a tu tutor DeepSeek: cómo pedirle que revise tu código, que te explique un error de compilación o que te ayude a depurar un segmentation fault.
· Inciso 1.3. Tu cuaderno de ingeniero/a de software: fragmentos de código, diagramas de memoria, soluciones a errores.
· Inciso 1.4. Primera provocación: «DeepSeek, ¿por qué lenguajes como Python o Java están escritos en C++? ¿Qué hace a C++ tan especial para construir otros lenguajes?»
—
Capítulo 2. Configuración del entorno y tu primer programa
(2 horas)
· Inciso 2.1. ¿Qué es un compilador? Diferencia entre lenguajes compilados (C++) e interpretados (Python). El proceso: código fuente → preprocesador → compilador → enlazador → ejecutable.
· Inciso 2.2. Instalación del compilador: MinGW (Windows) o g++ (Linux/Mac). VS Code con extensiones C/C++.
· Subinciso 2.2.1. Ejercicio guiado: «DeepSeek, estoy en Windows 11. Guíame para instalar MinGW y configurar VS Code para compilar C++. Voy paso a paso y me esperas.»
· Inciso 2.3. Tu primer programa: hola_mundo.cpp.
«`cpp
#include <iostream>
int main() {
std::cout << «Hola, mundo desde C++!» << std::endl;
return 0;
}
«`
· Inciso 2.4. Explicación línea a línea: #include (preprocesador), iostream (entrada/salida), main (punto de entrada), std::cout (salida estándar), << (operador de inserción).
· Inciso 2.5. Compilación y ejecución desde terminal: g++ hola_mundo.cpp -o hola_mundo && ./hola_mundo.
—
Capítulo 3. Variables, tipos de datos y operadores
(3 horas)
· Inciso 3.1. Tipos primitivos: int, float, double, char, bool, void. Tamaño en memoria de cada tipo (sizeof).
· Inciso 3.2. Declaración e inicialización: int edad = 16;, double pi = 3.14159;, char letra = ‘A’;.
· Inciso 3.3. Entrada y salida: std::cin >> variable;. Flujo de entrada y salida con std::cout y std::cin.
· Inciso 3.4. Modificadores: signed, unsigned, short, long. Límites de cada tipo.
· Inciso 3.5. Conversión de tipos: implícita (promoción) y explícita (casting con static_cast<tipo>(variable)).
· Inciso 3.6. const y constexpr. Variables inmutables.
· Inciso 3.7. Ejercicio práctico: crea un programa que pida al usuario su nombre, edad y altura, y muestre un saludo con esos datos.
—
Capítulo 4. Estructuras de control y bucles
(3 horas)
· Inciso 4.1. Condicionales: if, else if, else. Operador ternario: condicion ? valor_si_true : valor_si_false;.
· Inciso 4.2. switch con case y break. Cuidado con olvidar el break.
· Inciso 4.3. Bucles: for, while, do-while.
· Inciso 4.4. Bucle for basado en rango (C++11): for (auto& elemento : contenedor) { … }.
· Inciso 4.5. break, continue, goto (con moderación).
· Inciso 4.6. Ejercicio práctico: crea una calculadora que pregunte dos números y una operación, y devuelva el resultado usando switch.
—
Capítulo 5. Funciones y paso de parámetros
(3 horas)
· Inciso 5.1. Declaración y definición de funciones. Sintaxis: tipo nombre(parametros) { cuerpo; return valor; }.
· Inciso 5.2. Paso por valor: se copia el dato. Paso por referencia (&): se pasa el original, permitiendo modificarlo. Paso por referencia constante (const &): eficiente y seguro.
· Inciso 5.3. Funciones inline y sobrecarga de funciones.
· Inciso 5.4. Valores por defecto en parámetros.
· Inciso 5.5. Dividir el programa en varios archivos: .h (cabecera con declaraciones) y .cpp (implementación). #ifndef, #define, #endif (guardas de inclusión).
· Inciso 5.6. Ejercicio práctico: crea un programa modular con funciones matemáticas separadas en un archivo de cabecera.
—
PARTE II: PROGRAMACIÓN ORIENTADA A OBJETOS EN C++
(12 horas)
—
Capítulo 6. Clases, objetos y encapsulación
(4 horas)
· Inciso 6.1. Diferencia entre struct (datos públicos por defecto) y class (datos privados por defecto) en C++.
· Inciso 6.2. Definición de una clase: atributos (miembros) y métodos. Modificadores de acceso: private, protected, public.
· Inciso 6.3. Constructores: por defecto, parametrizado, de copia. explicit para evitar conversiones implícitas.
· Inciso 6.4. Destructor: ~Clase(). Único, sin parámetros. Se llama automáticamente al destruir el objeto.
· Inciso 6.5. Lista de inicialización de miembros: Constructor(int a) : atributo(a) {}.
· Inciso 6.6. Separación en .h (declaración) y .cpp (definición).
· Inciso 6.7. Ejercicio práctico: crea una clase Alumno con atributos privados, constructores, getters, setters y un método mostrar() para imprimir sus datos.
—
Capítulo 7. Herencia
(3 horas)
· Inciso 7.1. Sintaxis de herencia: class Perro : public Animal { … };. Tipos de herencia: public, protected, private.
· Inciso 7.2. Llamar al constructor de la clase base desde la derivada: ClaseDerivada(int a, int b) : ClaseBase(a), otroAtributo(b) {}.
· Inciso 7.3. Sobrescritura de métodos.
· Inciso 7.4. Herencia múltiple en C++: class C : public A, public B { … };. El problema del diamante y la herencia virtual (virtual public).
—
Capítulo 8. Polimorfismo y clases abstractas
(5 horas)
· Inciso 8.1. Punteros a clase base que apuntan a objetos derivados. Animal* ptr = new Perro();.
· Inciso 8.2. Funciones virtuales y la tabla virtual (vtable). virtual void sonido() = 0; (función virtual pura).
· Inciso 8.3. Clases abstractas (al menos una función virtual pura). No se pueden instanciar directamente.
· Inciso 8.4. override (C++11): asegura que realmente estás sobrescribiendo.
· Inciso 8.5. final: impide que una clase sea heredada o que un método sea sobrescrito.
· Inciso 8.6. Ejercicio práctico: crea un sistema de figuras geométricas con una clase abstracta Figura y subclases Circulo, Rectangulo y Triangulo que implementen virtual double area() = 0;.
—
PARTE III: GESTIÓN DE MEMORIA Y LA STL (STANDARD TEMPLATE LIBRARY)
(12 horas)
—
Capítulo 9. Punteros y memoria dinámica
(4 horas)
· Inciso 9.1. ¿Qué es un puntero? Dirección de memoria de una variable. int* p = &variable;. Desreferenciación con *p.
· Inciso 9.2. Memoria dinámica: new y delete. new reserva memoria en el heap. delete la libera.
· Inciso 9.3. Arrays dinámicos: int* arr = new int[10]; y delete[] arr;.
· Inciso 9.4. Punteros a punteros. Matrices dinámicas 2D.
· Inciso 9.5. Errores comunes: memory leak (new sin delete), dangling pointer (acceso a memoria ya liberada), double delete.
· Inciso 9.6. Ejercicio práctico: Crea un programa que construya un array dinámico según el tamaño indicado por el usuario y luego lo libere.
—
Capítulo 10. Punteros inteligentes (Smart Pointers)
(3 horas)
· Inciso 10.1. ¿Por qué olvidarse de delete? RAII (Resource Acquisition Is Initialization).
· Inciso 10.2. std::unique_ptr: propiedad exclusiva. auto p = std::make_unique<int>(5);.
· Inciso 10.3. std::shared_ptr: propiedad compartida. std::make_shared<MiClase>.
· Inciso 10.4. std::weak_ptr: referencia sin propiedad (evita ciclos con shared_ptr).
· Inciso 10.5. Ejercicio práctico: reescribe el código anterior de memoria dinámica usando punteros inteligentes.
—
Capítulo 11. La STL (Standard Template Library)
(5 horas)
· Inciso 11.1. ¿Qué son las plantillas (templates)? Programación genérica.
· Inciso 11.2. std::vector: array dinámico seguro con push_back(), pop_back(), size(), clear(). Recorrido con for (const auto& elem : vec).
· Inciso 11.3. std::map y std::unordered_map. Pares clave-valor. std::set.
· Inciso 11.4. std::string. Más seguro y fácil que char[]. Operaciones: find(), substr(), replace(), concatenación con +.
· Inciso 11.5. Algoritmos de la STL: std::sort(), std::find(), std::count_if(), std::for_each(), std::accumulate().
· Inciso 11.6. Iteradores: begin(), end().
· Inciso 11.7. Ejercicio práctico: crea un programa que lea palabras de un archivo, las cuente con un std::map y las muestre ordenadas por frecuencia.
—
PARTE IV: PROYECTO INTEGRADOR CON SFML
(9 horas)
—
Capítulo 12. Introducción a SFML (Simple and Fast Multimedia Library)
(3 horas)
· Inciso 12.1. ¿Qué es SFML? Alternativa en C++ a Pygame. Módulos: Gráficos, Ventana, Sistema, Audio y Red.
· Inciso 12.2. Instalar y configurar SFML en el proyecto.
· Inciso 12.3. Crear una ventana y dibujar formas básicas (sf::CircleShape, sf::RectangleShape).
· Inciso 12.4. Ejercicio práctico: crea una ventana que muestre un círculo rojo moviéndose.
—
Capítulo 13. Sprites, Texturas y Eventos
(3 horas)
· Inciso 13.1. Cargar texturas desde archivos y crear sprites.
· Inciso 13.2. El bucle principal del juego (Game Loop): while (ventana.isOpen()) { … }.
· Inciso 13.3. Capturar eventos de teclado y ratón.
· Inciso 13.4. Movimiento controlado por el jugador, colisiones básicas (bounding box).
—
Capítulo 14. Proyecto Final «Mi Motor 2D»
(2 horas)
· Inciso 14.1. Elige un proyecto: Pong, Snake, Space Invaders simplificado, o un Laberinto.
· Inciso 14.2. Implementa el juego usando clases, vectores de la STL y SFML.
· Inciso 14.3. «DeepSeek, te paso fragmentos de mi código. Ayúdame a depurar las colisiones y la gestión de memoria.»
—
Capítulo 15. Cierre y Diploma
(1 hora)
· Inciso 15.1. Presenta tu videojuego o aplicación a la clase.
· Inciso 15.2. Reflexiona: «Ahora entiendo cómo se gestiona la memoria realmente».
· Inciso 15.3. Diploma de aprovechamiento y cierre.
—
RESUMEN EJECUTIVO DEL CURSO
Dimensión Resumen
Rol de la IA Tutora de C++, guía de compilación, depuradora de memoria y entrenadora de POO avanzada
Rol del estudiante Ingeniero de software en formación: gestiona la memoria, construye clases robustas y programa videojuegos 2D con C++ moderno
Meta última Dominar la sintaxis y filosofía de C++ para crear aplicaciones de alto rendimiento, comprender la gestión manual de memoria y aplicar patrones de diseño orientados a objetos
Horas 45
Estructura 4 Partes, 15 Capítulos
—
¿Deseas que continuemos con el desarrollo de otro curso de la lista de programación, o prefieres explorar un ámbito diferente del ecosistema?