Top_12_Uses_of_C

Curso

Programación avanzada en C++

C++11 / 14 / 17

Estructura del Curso

C++11, C++14, y más recientemente, C++17 han supuesto una revolución para muchos desarrolladores de software. Las nuevas revisiones del estándar permiten escribir código más fácil de mantener, al mismo tiempo que contienen sensibles modificaciones que afectan al rendimiento de las aplicaciones.

La mayoría de los compiladores han incorporado ya totalmente C++11 y C++14, así como una buena parte de C++17. Estas novedades de C++, incluidas en el curso, afectan la definición del lenguaje de programación, la nueva biblioteca estándar y el modelo de concurrencia del lenguaje.

  • El curso abarca las principales novedades que ofrece C++11, C++14 y C++17, y cómo pueden usarse para mejorar el desarrollo de software.

  • Se estudiará el impacto de estas novedades sobre el rendimiento y la facilidad de mantenimiento del software; los cambios más útiles para desarrolladores de aplicaciones y de bibliotecas; las oportunidades y limitaciones que ofrece C++11 para el desarrollo de aplicaciones concurrentes de forma portable.

  • Además se obtendrá una visión inicial de los próximos cambios previstos en las revisiones del estándar de C++ (C++20 y especificaciones técnicas).

Bloque 1: Lenguaje

Módulo 1.1. Generalidades y Sistema de tipos

  • Preprocesador
  • Aserciones en tiempo de compilación
  • Nuevos tipos primitivos
  • Puntero nulo
  • Caracteres Unicode
  • Inferencia de tipos
  • Bucles basados en rango
  • Nuevos enumerados
  • Nuevas conversiones contextuales
  • Separadores de dígitos en literales
  • Literales binarios

Módulo 1.2. Iniciación

Sintaxis uniforme de iniciación:

  • Iniciación no uniforme
  • Iniciación uniforme
  • Semántica de iniciación uniforme
  • Variaciones sintácticas
  • Iniciación y estrechamiento

Listas de iniciación

  • Extensión de iniciación uniforme
  • Constructores de lista de iniciación
  • Listas de iniciación como parámetro
  • Listas de iniciación y sobrecarga
  • Listas de iniciación y auto

Módulo 1.3. Desarrollo de clases

  • Semántica de movimiento
  • Especificación noexcept
  • Constantes en tiempo de compilación: constexpr
  • Requisitos relajados para constexpr
  • Funciones miembro por defecto y eliminadas
  • Iniciación de miembros no estáticos
  • Iniciación de miembros agregados
  • Constructores delegados y constructores heredados
  • Operadores explícitos de conversión
  • Control de herencia: override y final
  • Atributo [[deprecated]]

Módulo 1.4. Novedades globales

  • Espacios de nombre en línea
  • Sintaxis sufija de funciones
  • decltype y declval
  • Deducción de tipo de retorno y decltype (auto)
  • Literales definidos por el usuario
  • Uniones generalizadas
  • Asignación de memoria optimizada
  • Liberación de memoria con tamaño

Módulo 1.5. Soporte a programación genérica

  • Expresiones lambda
  • Capturas con iniciación
  • Expresiones lambda genéricas
  • Plantillas externas
  • Alias de plantilla  y alias de tipos
  • Plantillas de variable
  • Clases locales y argumentos de plantilla
  • Plantillas con número variable de argumentos

Bloque 2: Biblioteca estándar

Módulo 2.1. Soporte para metaprogramación

  • Funciones sobre tipos
  • Type traits y soporte para metaprogramación
  • Transformation traits
  • Evaluación de constantes integrales
  • Secuencias enteras en tiempo de compilación

Módulo 2.2. Utilidades

  • Smart pointers
  • Acceso a tuplas por tipo
  • Alias para metafunciones
  • Envoltorios de funciones
  • bind() 

Módulo 2.3. Mejoras a STL

  • Contenedores
  • Iteradores
  • Algoritmos
  • Algoritmos no modificantes robustos
  • Objetos función mejorados
  • Búsqueda heterogénea en contenedores asociativos

Módulo 2.4. Tratamiento de cadenas

  • Expresiones regulares
  • Conversiones de cadenas numéricas
  • Entrada & salida delimitada

Bloque 3: Concurrencia

Módulo 3.1. Introducción a la concurrencia

  • Concurrencia en C++
  • Hilos
  • Acceso a datos compartidos
  • Mecanismos de espera
  • Futuros y promesas
  • Tareas asíncronas

Módulo 3.2. Modelo de memoria y tipos atómicos

  • Modelo de memoria
  • Tipos atómicos
  • Relaciones de ordenación
  • Modelos de consistencia
  • Barreras

Módulo 3.3. Hilos

  • La clase thread
  • Construcción e identidad
  • Terminación de hilos
  • Espacio de nombres this_thread
  • Almacenamiento local al hilo

Módulo 3.4. Exclusión mutua

  • Objetos mutex
  • Utilidades para mutex
  • Adquisición múltiple
  • Variables condición
  • Cerrojos compartidos

Módulo 3.5. Futuros y promesas

  • Promesas
  • Tareas empaquetadas
  • Futuros y futuros compartidos
  • Ejecución asíncrona de tareas

Bloque 4: Introducción a C++17

Módulo 4.1. Cambios menores

  • Trigrafos
  • Palabra reservada register
  • Incremento de booleanos
  • Especificaciones dinámicas de excepciones
  • Clase auto_ptr
  • Reglas para iniciación
  • static_assert

Módulo 4.2. Aclaraciones

  • Orden de evaluación
  • Elusión de copia
  • Excepciones y punteros a función
  • Memoria dinámica sobre-alineada

Módulo 4.3. Programación genérica

  • Deducción de argumentos de plantilla de clase
  • Deducción de valores en plantillas
  • Plegamiento de expresiones
  • If en tiempo de compilación
  • Otros cambios en programación genérica
  • Atributos en C++11/14
  • Nuevos atributos
  • Otras modificaciones sobre atributos
  • Vinculación estructurada
  • Iniciación en if y switch
  • Variables inline

Módulo 4.4. Algoritmos paralelos

  • Políticas de ejecución
  • Visión general
  • Algoritmos no numéricos
  • Algoritmos numéricos

Módulo 4.5. Acceso al sistema de ficheros

Módulo 4.6.Nuevos tipos de la biblioteca

  • Valores generalizados
  • Valores opcionales
  • Registros con variantes
  • Vistas sobre cadenas

Profesorado del curso de Programación avanzada en C++

José Daniel García

Es Catedrático de Ciencia de la Computación en la Universidad Carlos III de Madrid. Ha sido investigador visitante en la Universidad de Modena (Italia) y Profesor Visitante en la Universidad de Texas A&M (USA), donde estuvo trabajando con el Prof. Bjarne Stroustrup, creador del lenguaje C++. Así mismo, durante años ha trabajado con la industria desarrollando proyectos que hacían uso del lenguaje C++ en sectores como la ingeniería civil, tecnología médica, aeroespacial o finanaciero. Ha liderado la participación de la UC3M en proyectos financiados por la Comisión Europea para la la transformación de aplicaciones C++ para su ejecución en arquitecturas paralelas heterogéneas (REPARA) y la mejora los métodos de desarrollo de software para sistemas multi-core (RePhrase). Así mismo, ha desarrollado proyectos de colaboración entre la UC3M y empresas nacionales para la mejora de software desarrollado en C++ en sectores como las finanzas o la energía. Es el presidente del comité español de normalización del lenguaje C++ (AEN CTN71/SC22/GT21). Así mismo, desde 2008 representa a España en el comité internacional de normalización de C++ (ISO/IEC JTC1/SC22/WG21), donde ha participado en la elaboración de los estándares C++11, C++14, C++17 y C++20 habiendo realizado contribuciones a los mismos.

Javier Fernández Muñoz

Javier Fernández Muñoz

Es Profesor Titular en la Universidad Carlos III de Madrid. Licenciado en Informática por la Universidad Politécnica de Madrid (1999) y doctor en ingeniería informática `por la Universidad Carlos III de Madrid (2004) Cuenta con una amplia experiencia docente en español e inglés, con excelentes resultados en las encuestas de evaluación de estudiantes. Su línea de investigación está dentro del área de Arquitectura y Tecnología de Computadores, en concreto se centra en la computación de altas prestaciones, los modelos de programación paralela para la optimización de aplicaciones y el Desarrollo, simulación y mantenimiento de sistemas industriales y de tiempo real. La mayor parte de esta labor se ha realizado programando en los lenguajes C y C++, de los cuales también tiene amplia experiencia como docente. Ha participado en diversos proyectos de investigación: 21 proyectos competitivos financiados por entidades públicas y 14 proyectos financiadas por empresas tecnológicas con una importante componente de transferencia tecnológica. Además, es coautor de 22 artículos en revistas con índice de impacto, 43 artículos en congresos internacionales.

¿Tienes alguna duda?
Nuestros equipo de expertos te la resuelven al instante

Objetivos del curso

  • Conocer las principales novedades que ofrece los estándares C++11, C++14 y
    C++17, y cómo pueden usarse para mejorar el desarrollo de software.
  • Comprender el impacto de las novedades sobre el rendimiento y la facilidad de
    mantenimiento del software.
  • Comprender qué novedades son útiles para desarrolladores de aplicaciones y
    cuáles para desarrolladores de bibliotecas.
  • Comprender las oportunidades que ofrece C++11 para el desarrollo de aplicaciones
    concurrentes de forma portable, así como sus limitaciones.
  • Obtener una visión inicial de los próximos cambios previstos en las revisiones del
    estándar de C++ (C++20 y especificaciones técnicas).

Requisitos

  • Dirigido a desarrolladores con experiencia en el desarrollo en C++98/03 interesados en el paso a C++11/14/17.
  • Los asistentes deberían tener experiencia en el uso de las principales características de C++98/03,
  • Especial énfasis en programación genérica
  • Nociones en el uso de la biblioteca estándar.

Curso de Programación Avanzada en C++

Fechas:
Próximamente

Formato:
Presencial

Titulación:
Certificado acreditativo

Horario:
8 h. al día, 9 h. a 18.30 h.

Duración:
24 horas

Precio:
550 € 
* Bonificable por FUNDAE

Al solicitar la admisión será necesario adjuntar el CV

Resolvemos tus dudas

Contacto

Ponte en contacto con nosotros para resolver cualquier duda que te pueda surgir respecto a nuestra formación

¡Estamos a tu disposición!

formacion@fund.uc3m.es

¿Necesitas ayuda?




    He leído y acepto la Política de Privacidad.

    *Política de devolución / cancelación: No se admitirán devoluciones de matrícula a no ser que el/la alumno/a no pueda asistir al curso por causas de fuerza mayor.
    La Fundación Universidad Carlos III se reserva el derecho de cancelar un curso en caso de que no existan suficientes inscripciones en el mismo.

    Responsable del tratamiento:  Fundación Universidad Carlos III de Madrid 916244066;  dspo@fund.uc3m.es | Finalidad principal:  Gestionar la solicitud de información.  | Legitimación: Consentimiento del interesado, ejecución de un contrato o interés legítimo. | Destinatarios: No se cederán datos a terceros, salvo autorización expresa u obligación legal.  | Derechos: Acceder, rectificar y suprimir los datos, portabilidad de los datos, limitación u oposición a su tratamiento, transparencia y derecho a no ser objeto de decisiones automatizadas.  | Información adicional: puede consultar la información adicional y detallada sobre la política de privacidad de la Fundación Universidad Carlos III en  https://www.fundacion.uc3m.es/politica-de-privacidad  | Data Protection Officer (DPO)   GRUPO ADAPTALIA LEGAL – FORMATIVO S.L- 915533408 –  legal@grupoadaptalia.es

      Déjanos tus datos de contacto para poder facilitarte el Programa de Actualización de Derecho Laboral

        Déjanos tus datos de contacto para poder facilitarte el programa de estudios del Postgrado en Compliance

          Déjanos tus datos de contacto para poder facilitarte el programa de estudios del Curso Inteligencia Artificial & Ciencia de Datos

            Déjanos tus datos de contacto para poder facilitarte el programa de estudios del bootcamp en Analítica de Datos en Cloud

              Déjanos tus datos de contacto para poder facilitarte el programa de estudios del bootcamp Devops&IaC

                Déjanos tus datos de contacto para poder facilitarte el programa de estudios del bootcamp Data Science

                Resolvemos tus dudas

                Contacto

                Ponte en contacto con nosotros para resolver cualquier duda que te pueda surgir respecto a nuestra formación

                91 624 40 66 ó
                91 624 40 69

                ¡Llámanos!

                ¿Necesitas ayuda?

                  Resolvemos tus dudas

                  Contacto

                  Ponte en contacto con nosotros para resolver cualquier duda que te pueda surgir respecto a nuestra formación

                  91 624 40 66 ó
                  91 624 40 69

                  ¡Llámanos!

                  ¿Necesitas ayuda?

                    Resolvemos tus dudas

                    Contacto

                    Ponte en contacto con nosotros para resolver cualquier duda que te pueda surgir respecto a nuestra formación

                    91 624 40 66 ó
                    91 624 40 69

                    ¡Llámanos!

                    ¿Necesitas ayuda?




                      He leído y acepto la Política de Privacidad.

                      Resolvemos tus dudas

                      Contacto

                      Ponte en contacto con nosotros para resolver cualquier duda que te pueda surgir respecto a nuestra formación

                      91 624 40 66 ó
                      91 624 40 69

                      ¡Llámanos!

                      ¿Necesitas ayuda?




                        He leído y acepto la Política de Privacidad.