PRIMERA PARTE
Conceptos Básicos de Programación
0. Preparando Motores !
- ¿Qué presupone programar?
- ¿Qué es programar?
- La programación imperativa
- ¿Qué es un algoritmo? Lo básico para comenzar
- La programación declarativa
- La programación orientada a objetos
- La programación funcional
- La programación genérica
- La programación como investigación
- ¿Cuál es el horizonte hoy?
1. Hola Mundo !
- ¿Por qué C++ y no otro lenguaje?
- Nuevo Standard ISO C++11
- Compiladores e IDE's
- Clásico Primer Programa: Hola Mundo !
- Compilación y vinculación Visual Studio 2010
- Compilación y vinculación MinGW
- El preprocesador: lo básico para comenzar
- Librerías Standard C/C++
- La función main() y argumentos de un programa
- Comentarios y documentación
- La cuestión del estilo
- C++ un lenguaje, varios modelos de computación
2. Tipos, variables y operadores
- Output básico en la consola
- Input básico en la consola
- Tipos de Datos primitivos
- Literales
- Tipos de Datos definidos por usuario C++: lo Básico
- Variables, declaración y definición
- Palabra clave auto C++11
- lvalues y rvalues
- Nombres de tipos: operador typeid
- Alias de tipos: operador typedef
- Operadores y operaciones
- Límites de tipos de datos
- Conversión de tipos
- Bits y Bytes
- Alignment
- Tamaño de tipos: operador sizeof()
3. Computación: lo que en realidad queremos hacer
- ¿Qué es una expresión?
- Conectores Lógicos
- Instrucciones if/else if/else
- Instrucciones: switch/Case/Default
- Operador Ternario ? :
- Instrucciones: While
- Instrucciones: Do/While
- Instrucciones: for clásicas
- Instrucciones: for range-based c++11
- Instrucciones de salto: break, continue
- Instrucciones de salto: goto, return
- Funciones: lo básico para comenzar
- Contenedores: estructura de datos vector
- Errores y Excepciones
- Try, Catch, Finally
4. Escribiendo un primer y simple programa
- Definiendo el problema
- Un primer diseño del programa
- Primera versión del programa
- Probar y depurar el programa
- Segunda versión del programa
- Conclusión: Programar es una tarea que nunca acaba
5. Algunos asuntos técnicos
- Declaración y definición de funciones
- Archivos de cabecera y organización del código fuente
- Scope y operador de ámbito ::
- Funciones: argumentos y valor de retorno
- Funciones: argumentos por valor y por referencia
- Funciones: argumentos por defecto
- Funciones: argumentos de número variable
- Funciones: sobrecarga de métodos
- Expresiones Lambda C++11
- Namespaces
- Recursión
- Concurrencia
- Multi Thread
- Atomicidad
6. Punteros
- Concepto de Puntero
- Declaración y definición de punteros
- Inicialización de punterios: operador nullptr
- Memoria dinámica: Stack y Heap
- Memoria dinámica: operadores new y delete
- Memoria dinámica: operadores new[] y delete[]
- Punteros a funciones
- Funciones que retornan punteros
- Punteros a tipos de datos definidos por usuario
- Conversión de datos con punteros
- Punteros y palabra clave const
- Aritmética de punteros
- Punteros smart C++11 shared_ptr
- Punteros smart C++11 unique_ptr
- Punteros y referencias
7. Estructuras de datos: Arrays
- Concepto de array
- Arrays C-Style
- Arrays C++11
- Arrays de dos dimensiones: matrices
- Arrays C-Style y punteros
- Arrays como argumentos de funciones
8. Estructuras, enumeraciones y uniones
- Concepto de Estructura
- Miembros y constructores de Estructuras
- Funciones Delete y Default
- Arrays de Estructuras
- Estructuras como argumentos de funciones
- Enumeraciones
- Enumeraciones fuertemente tipiadas C++11
- Uniones C++11
9. Cadenas : Strings
- Cadenas de caracteres
- Unicode y ASCII
- Cadenas C-Style: arrays de caractéres
- Cadenas C-Style: puntero a caractéres
- Cadenas C-Style. matrices de cadenas
- String literals
- Caractéres Wide
- El contenedor C++ String
- Funciones de la clase String
- Operaciones con la clase String
- Conversiones numéricas a String C++11
- Raw String Literals C++11
- Localización de String literals
- Facetas C++11
10. Clases - Programación orientada a objetos (POO)
- ¿Qué es Programación Orientada a Objetos (POO)?
- El concepto de clase y el concepto de objeto
- La generalización y la formalización: procesos claves en la POO
- Clases y miembros de clase
- Interface e implementación
- Encapsulación: especificadores de acceso
- Método Constructor y sobrecarga del método constructor
- Método Destructor
- Miembros static, clases static
- El puntero *this
- Arrays de Objetos
- Punteros a Objetos
- Valor y referencia de objetos
- Herencia: clase base y clase derivada
- decltype C++11
- Polimorfismo y funciones virtuales
- Clases Abstractas
- Herencia múltiple
- Nueva inicialización standard C++11
- Enumeraciones, Estructuras y uniones dentro de clases
- Reuso y mantenimiento: el sentido de la POO
- Clases y miembros friend
- Clases anidadas
- Sobrecarga de operadores
11. I/O y Archivos
- ¿Qué es un archivo?
- El concepto de stream
- Creando archivos de texto
- Abriendo y cerrando archivos de texto
- Leyendo y escribiendo archivos de texto
- Archivos binarios
- Leyendo y escribiendo archivos binarios
- Archivos de acceso aleatorio
12. Templates
SEGUNDA PARTE
Aplicación de los Conceptos Básicos
- ¿Qué es la programación genérica?
- Tipos como parámetros de templates
- Templates para funciones
- Templates para clases
- Templates y contenedores
- Templates y algoritmos
- Templates anidados C++11
- Templates variadicos C++11
- Vectores
- Tuplas
- Listas
- Pilas
- Colas
- Mapas
- Árboles
- Grafos
- Conjuntos
- Iteradores
- Búsquedas
- Ordenación
- Conclusión: no reinventar la rueda
- El concepto de expresiones regulares
- Buscando con expresiones regulares
- Match con expresiones regulares
- Sintáxis de expresiones regulares
- El concepto de hilo
- Operaciones atómicas
- Mutex
- Future
- Condition variables
- Clases RAII
- Duración
- Reloj
- Punto de tiempo
- Motores de números aleatorios
- Adaptadores de motores de números aleatorios
- Generación de números aleatorios
SEGUNDA PARTE
Aplicación de los Conceptos Básicos
No hay comentarios:
Publicar un comentario