Saltar al contenido
Logotipo de Trainontech Trainontech

Lenguajes y Fundamentos de Programación · LNG-151

C++ moderno en notebook

C++17 y C++20 practicado con xeus-cling: referencias, RAII, contenedores y semántica de movimiento sin recompilar.

Bajo demanda Intermedio 8 módulos · 39 clases

Formato asíncrono Desarrollo, Ingeniería / Industria C++, JupyterLab

Lo que aprenderás

  • Distinguir referencias, punteros y copias, y elegir la forma de paso adecuada en cada firma.
  • Aplicar RAII para que la liberación de recursos dependa del ámbito y no del programador.
  • Usar los contenedores de la biblioteca estándar con iteradores y bucles for basados en rango.
  • Implementar constructores de movimiento y comprender cuándo el compilador evita la copia.
  • Escribir clases con la regla de cero y delegar la gestión de memoria en tipos ya probados.
  • Emplear std::optional, std::variant y structured bindings para expresar el resultado con precisión.

Contenido del curso

8 módulos · 39 clases en vídeo · práctica guiada en cada módulo

Módulo 1 · Presentación y entorno 4 clases
  • Qué es C++ moderno y qué queda obsoleto
  • JupyterLab con xeus-cling: primera celda
  • Del cuaderno al proyecto con CMake
  • Estándares del lenguaje: de C++11 a C++20
Módulo 2 · Tipos, referencias y auto 5 clases
  • auto y deducción de tipos
  • Referencias frente a punteros
  • const y constexpr
  • Paso por valor, por referencia y por referencia constante
  • Inicialización uniforme con llaves
Módulo 3 · Clases y ciclo de vida 5 clases
  • Constructores, destructor y ámbito
  • RAII: el recurso vive lo que vive el objeto
  • Regla de cero, de tres y de cinco
  • Constructores de copia y de movimiento
  • std::move y referencias rvalue
Módulo 4 · Biblioteca estándar de contenedores 5 clases
  • vector: crecimiento, reserva y coste
  • string y string_view
  • map, unordered_map y set
  • array y span
  • Iteradores y bucles for basados en rango
Módulo 5 · Memoria sin new ni delete 5 clases
  • unique_ptr y propiedad exclusiva
  • shared_ptr, weak_ptr y ciclos
  • make_unique y make_shared
  • Cuándo sigue haciendo falta memoria cruda
  • Ejercicio: eliminar todos los delete de un programa
Módulo 6 · Expresividad de C++17 y C++20 5 clases
  • std::optional para valores que pueden faltar
  • std::variant y visitación
  • Structured bindings
  • if con inicializador y constexpr if
  • Introducción a los rangos
Módulo 7 · Funciones, lambdas y errores 5 clases
  • Lambdas y listas de captura
  • std::function y punteros a función
  • Excepciones y garantías de seguridad
  • noexcept y su efecto
  • Códigos de error frente a excepciones
Módulo 8 · Caso práctico: procesado de una serie de medidas 5 clases
  • Modelo de datos y contenedores elegidos
  • Lectura del fichero y validación
  • Cálculos con algoritmos de la biblioteca
  • Compilación con CMake y opciones de aviso
  • Entrega: proyecto compilable multiplataforma

Requisitos

  • Haber programado en C o en otro lenguaje con tipos: variables, funciones, arrays y punteros.
  • Basta con un navegador para la mayor parte del curso: se practica en JupyterLab con xeus-cling.
  • Para el bloque final conviene tener g++ o clang y CMake instalados en el equipo.

Descripción

C++ arrastra la fama de lenguaje enorme y hostil, en buena medida porque se sigue enseñando el de hace veinte años: new y delete por todas partes, cadenas de caracteres a mano y un ciclo de compilación que corta cualquier experimento. El C++ actual se parece bastante poco a eso y resuelve con tipos de la biblioteca lo que antes exigía disciplina manual.

Aquí se practica en cuaderno con xeus-cling, de modo que cada celda ejecuta C++ al momento y se puede probar una idea sin montar un proyecto. Sobre esa base se trabajan referencias, semántica de movimiento, contenedores estándar, punteros inteligentes y las novedades de C++17 y C++20 que más cambian el día a día. El bloque final lleva todo a un proyecto compilado con CMake.

Al terminar se escribe C++ moderno idiomático y se entiende qué hace el compilador con cada objeto que se pasa, se copia o se mueve. Es el paso natural hacia el curso de C++ avanzado, centrado en plantillas y rendimiento, y hacia la programación de sistemas de tiempo real, visión artificial o simulación donde C++ sigue siendo la herramienta habitual.

¿Para quién es este curso?

  • Desarrolladores que vienen de C y necesitan actualizarse al C++ que se escribe hoy.
  • Ingeniería de control o de instrumentación que mantiene código C++ de adquisición y procesado de señal.
  • Programadores de otros lenguajes que entran en un proyecto C++ ya existente.
Bajo demanda

Curso diseñado con la ficha cerrada. Se produce al confirmarse un grupo o un contrato.

Código
LNG-151
Nivel
Intermedio
Público
Desarrollo, Ingeniería / Industria
Entorno
C++, JupyterLab

Este curso incluye

  • 39 clases en vídeo bajo demanda
  • Práctica íntegramente en JupyterLab, solo con un navegador
  • Tutorización en el campus
  • Acceso desde móvil, tableta y ordenador
  • Actualizaciones cuando cambia la versión de la herramienta
  • Certificado de finalización

Sigue aprendiendo

Cursos relacionados

PY-104Lenguajes y Fundamentos de Programación

Ficheros, excepciones y módulos

Lectura y escritura robusta, gestión de errores e importaciones para código que otros mantendrán.

Python

Intermedio 32 clases