El objetivo del curso es proveer conocimientos básicos de programación en general y del lenguaje C++ en particular. Dichos conocimientos son requisitos para otros cursos del doctorado tales como Cálculo Paralelo, Computación de Alto Rendimiento en Mecánica Computacional, Elementos Finitos, Métodos Numéricos en Fenómenos de Transporte, Métodos Iterativos para Grandes Sistemas de Ecuaciones.
Programa Analítico
Elementos básicos: La clase iostream. Namespaces. "Hello world!". Corriendo el compilador. Strings. Leer y escribir de archivos. La clase vector.
El C en C++: Creando funciones. La librería C. Creando librerías. Control de ejecución (if, do, while, break, switch). Recursión. Operadores. Precedencia. Auto incremento y decremento. Tipos de datos. Scoping.
Variables locales y globales. Creación de tipos de datos compuestos: struct, enum, union, arreglos. Punteros a funciones.
Abstracción de datos: Ejemplo simple de librería en C. Objetos. Archivos de cabecera. Problema de la declaración múltiple. Directivas de preprocesamiento. Estructuras anidadas.
Encapsulando la implementación: Acceso a las estructuras (public/private). Friends.
Inicialización y limpieza: Garantizando la inicialización con el constructor. Garantizando la limpieza con el destructor. Constructores por defecto.
Sobrecarga de funciones y argumentos por defecto Constantes: const versus macros. Punteros. Asignación y chequeo de tipo. Argumentos de funciones y valores de retorno. Const en clases.
Funciones inline: Errores comunes en el uso del preprocesador. Control de nombres: Elementos estáticos en C. Namespaces. Miembros estáticos en C++.
Referencias y el constructor por copia: Punteros en C++. Referencias en C++. El constructor por copia. Punteros a miembros de una clase.
Sobrecarga de operadores: Sintaxis. Operadores que se pueden sobrecargar.
Creación dinámica de objetos: Creación de objetos, los operadores, new, delete, new[], delete[]. Agotamiento de la memoria. Sobrecargando new y delete.
Composición y herencia: Sintaxis. Lista de inicialización. Combinando composición y herencia. Orden de llamadas a constructores y destructores. Herencia múltiple.
Polimorfismo y funciones virtuales
Introducción a templates: Contenedores
La librería estándar de C++: strings, templates, algoritmos genéricos, contenedores genéricos.
Docentes
Docente responsable:Dr. Lisandro Dalcín Investigador Asistente CONICET. Áreas de Especialización: Mecánica Computacional; Mecánica de Fluidos; Cálculo Paralelo
Dr. Mario Storti Investigador Principal CONICET, Profesor Asociado UNL. Áreas de Especialización: Mecánica Computacional; Mecánica de Fluidos; Cálculo Paralelo
Dr. Rodrigo Paz Investigador Adjunto en CONICET, Profesor Adjunto. Áreas de Especialización: Mecánica Computacional; Mecánica de Fluidos; Cálculo Paralelo
Horarios
Comienza: Jueves 1/9
Horario: Jueves 0900-1300hs
Lugar: Aula 40, edificio INTEC 1, en el Parque Tecnológico (Cómo llegar?)