- Descripción
- Currículum
- Reseñas
Este curso es un curso de Programación desde cero, y resaltamos la palabra programación porque no es solo un curso de C++, sino que es un entrenamiento diseñado para forjar a un programador profesional desde la nada absoluta hasta la maestría.
Pasarás de forma progresiva por los distintos paradigmas de programación, aprendiendo:
-
Programación estructurada
-
Programación modular
-
Memoria dinámica
-
Programación Orientada a Objetos
-
Programación de Interfaces Gráficas de Usuario
-
Bases de Datos SQL
A través de este curso el estudiante desarrollará varios proyectos, diseñará sus propios programas, resolverá problemas complejos con pocas herramientas, aprenderá a pensar y a dividir grandes retos en pequeñas partes. Aprenderá también la teoría profunda que todo programador necesita hoy día y la pondrá en práctica inmediatamente a través de los ejercicios y proyectos planteados.
El curso se divide en varios módulos extremadamente poderosos, cada uno de los cuales extiende y amplifica al módulo anterior. En concreto:
Módulo 1: Programación estructurada
Un curso de programación en sí mismo, ya que en él el estudiante conocerá todas las herramientas esenciales para crear programas en cualquier lenguaje. Los conceptos son dados de tal forma que el estudiante podrá aplicarlos en cualquier lenguaje moderno a su elección. Los temas que se darán son:
-
Salida estándar de datos
-
Entrada estándar
-
Definición de variables
-
Tipos primitivos de datos
-
Tipos estructurados de datos
-
Diagramas de flujo
-
Secuencia y selección (IF)
-
Repetición iterativa (FOR)
-
Repetición condicional (WHLE y REPEAT – DO…WHILE)
-
Subrangos
-
Arreglos lineales estáticos
-
Arreglos lineales dinámicos
-
Arreglos bidimensionales
-
Depurador y ejecución paso a paso
-
Enumerados y registros
-
Procedimientos y funciones
-
Alcance de identificadores (locales y globales)
-
Pasaje de parámetros por valor (copia) y por referencia (alias)
-
Archivos de texto y archivos tipados
-
Proyectos finales
Módulo 2: Memoria dinámica y Tipos Abstractos de datos
Aquí el curso comienza a profundizar en conceptos que muchos programadores desconocen o no dominan (como quienes aprenden Java como primer lenguaje): los punteros. A través de esta herramienta el programador podrá comenzar a crear programas que gestionen la memoria RAM, enfrentándose a los problemas y complejidades que ésto conlleva.
Los Tipos Abstractos de Datos (TADs) introducen todo un concepto nuevo de programación: dividir el programa en módulos individuales y trabajar por separado con cada uno. De este modo el estudiante aprenderá a abstraer datos y a modularizar sus programas, todo lo cual es la base fundamental de la Programación Orientada a Objetos que posteriormente será tratada en profundidad.
-
El tipo puntero
-
Solicitud de memoria
-
Liberación de memoria
-
Alias
-
Reprogramación de proyectos a memoria dinámica
-
Modularización de programas
-
Creación de unidades
-
Definición de tipos abstractos
-
Implementación de operaciones
-
Uso de TADs en diferentes sistemas
-
Linkedición
-
Listas encadenadas simples
-
Listas doblemente encadenadas
-
Listas circulares
-
Colas
-
Pilas
-
TADs personalizados
-
Reprogramación de proyectos usando TADs
Módulo 3: Recursividad y el TAD Árbol binario
Una herramienta muy poderosa y a la vez delicada. El estudiante aprenderá a utilizarla, conocerá sus ventajas y desventajas, entenderá su diferencia con la repetición iterativa, y comprenderá cómo resolver problemas complejos con ella.
El estudiante además conocerá cómo crear una estructura arborescente a través del uso de punteros, y cómo esta estructura resulta útil para ciertos casos. Es una herramienta muy poderosa que no todo programador domina. Siendo una estructura recursiva, se une perfectamente con la recursividad.
-
Qué es la recursividad
-
Diferencia entre recursividad e iteración
-
Recursividad en listas lineales
-
Recursividad en matrices
-
Reprogramación de proyectos usando recursividad
-
Árbol binario de búsqueda
-
Árbol general
-
Estructuras arborescentes
-
Caso de estudio
-
Proyecto
Módulo 4: Programación Orientada a Objetos
El estudiante aplicará ahora todos sus conocimientos para aprender este nuevo paradigma y comenzar a ver las estructuras de los programas como objetos. De este modo logrará modularizar aún más su código y comenzar a diseñar programas de forma más rápida y eficiente.
-
Teoría de objetos
-
Clases
-
Creación y destrucción de objetos
-
Herencia
-
Polimorfismo
-
Casteo
-
Clases abstractas e interfaces
-
Bloques try y lanzamiento de excepciones
-
Beans
-
Diseño básico de software
-
Bases de UML
-
Proyectos finales
Módulo 5: Interfaces gráficas de usuario
Todo lo aprendido en el curso le permitirá al estudiante comprender cómo crear interfaces gráficas de usuario y utilizarlas de forma inteligente, ya que éstas, en cualquier lenguaje moderno, están diseñadas con Objetos (POO). De esta manera el estudiante aprenderá a utilizar la librería CLI de C++, que le permitirá aprender las bases de la creación de interfaces gráficas, manejo de eventos y control de errores.
-
Creación manual de interfaces y componentes
-
Creación gráfica mediante el entorno de desarrollo
-
Ejemplos y aplicaciones
-
Reprogramación de proyectos para crear interfaces gráficas
-
Proyecto final
Módulo 6: Bases de datos MySQL y SQLite
Pasaremos a un punto bien distinto de la programación, ya que el estudiante ahora aprenderá a usar dos herramientas concretas de bases de datos, que es algo que va más allá de la programación en sí pero que a la vez es super necesario.
-
1Introducción al curso de C++
Veamos en detalle todo lo que aprenderás en este curso y cómo será la metodología de trabajo.
-
2Descarga, instalación y uso de VisualStudio
VisualStudio será el IDE que usaremos durante todo el curso. Asimismo, quienes no utiilcen Windows verán cómo instalar CodeBlocks como alternativa. Crearemos aquí el primer programa en C++.
-
3Entornos de C++ para Linux y MacOS
Quienes no usan Windows no podrán trabajar con VisualStudio, por lo que tendremos que usar CodeBlocks en Linux y XCode en MacOS.
-
4Certificaciones múltiples en C++
Este curso brinda entrenamiento en varias cuestiones importantes, por lo que recibirás más de un certificado al finalizarlo.
-
5Salida estándar con C++
Comencemos aprendiendo a mostrar información por consola.
-
6Entrada estándar con C++
Aprendamos a leer información ingresada por el usuario.
-
7Calculando áreas y perímetros con C++
Hagamos cálculos simples para empezar a entender el uso de variables.
-
8Números de punto flotante con C++
Los números enteros quedarán limitados rápidamente, tenemos que aprender a utilizar números reales.
-
9Acumulación y concatenación con C++
Las variables son útiles cuando podemos modificar sus valores usando los que ya tienen.
-
10Valores constantes con C++
Todos los lenguajes tienen un modo de definir valores invariables.
-
11División entera y uso de comentarios con C++
Veamos cómo funciona la división entera y el resto, así como también aprenderemos a documentar nuestro código fuente.
-
12Caracteres y secuencias de escape con C++
Hay caracteres que nos permiten formatear un poco a los strings.
-
13Inferencia de tipos con C++
Podemos usar variables sin definir explícitamente su tipo de datos, sino permitiendo que C++ lo haga en base al valor de las mismas.
-
14Tipos primitivos de datos de C++
Todo lenguaje fuertemente tipado, como C++, Pascal, Java y muchos otros, tienen tipos de datos primitivos para definir variables.
-
15Proyecto Introductorio: salida con C++
Sin práctica no hay aprendizaje. Comencemos con un proyecto mínimo para afianzar este primer choque con la programación.
-
16Diagrama de flujo con C++
Diagramar lo que se pretende hacer es importante de cara a la planificación.
-
17Sentencia IF con C++
Nuestros programas deberán poder comenzar a tomar distintos caminos de ejecución en fución de ciertas condiciones.
-
18Diagrama de concatenación de IF con C++
Un solo IF o IF-ELSE no es suficiente. Debemos poder tener más alternativas de ejecución.
-
19Uso de switch con C++
La sentencia SWITCH nos permite estructurar distintos caminos de ejecución fácilmente.
-
20El uso de booleanos con C++
El tipo bool solo puede contener dos valores, true o false (verdadero o falso), o lo que es igual, 1 o 0. Aunque no parezca, es extremadamente útil e importante.
-
21Operadores lógicos con C++
Hora de ir ampliando el alcance de los booleanos.
-
22Operador ternario con C++
Existe un modo de simplificar los IF si se requieren acciones rápidas y no muy cargadas.
-
23Proyecto de selección: entrenando el trabajo condicional
Es importante poner en práctica lo aprendido hasta el momento, de lo contrario lo que está por venir resultará inaccesible.
-
24Bucle FOR con C++
El Teorema del Programa Estructurado propone que para crear cualquier software es condición necesaria y suficiente contar con tres capacidades:
- Secuencia: poder escribir instrucciones una seguida de otra.
- Selección: poder decidir qué camino tomar.
- Repetición: poder repetir la ejecución de código.
Las 2 primeras capacidades ya están cubiertas, ahora empezamos con la tercera. Veamos primero el bucle FOR.
-
25Generar números aleatorios con C++
Veamos cómo generar números al azar.
-
26Anidación de FOR con C++
Podemos poner un bucle FOR dentro de otro, lo cual se conoce como anidación.
-
27Proyecto preparatorio: secuencia FOR
Aprende a fondo cómo usar FOR antes de pasar a lo que sigue.
-
28Bucle WHILE con C++
Ahora podrás iterar en base a condiciones dadas.
-
29Bucle DO-WHILE con C++
Una variante de WHILE con cuestiones particulares a tener en cuenta.
-
30Proyecto 1: Adivinador inverso con C++
Aplica lo visto hasta el momento creando una versión más avanzada del juego del Adivinador.
-
31Arreglos con C++
Comencemos a trabajar con tipos de datos estructurados.
-
32Recorrido y manipulación de arreglos con C++
Aprende a recorrer arreglos, buscar elementos y mostrar información.
-
33Arreglos y bucles: uso de CONTINUE con C++
Añadiremos números aleatorios en un arreglo sin que se repita ninguno. A su vez aprenderás a utilizar la sentencia continue.
-
34Uso básico del depurador de VisualStudio
El depurador es el mejor amigo de todo programador. Aprende a utilizarlo para buscar errores en tus programas.
-
35Proyecto 2: Truco de las 21 cartas con C++
Este proyecto te propone programar el truco de 21 cartas de modo que el programa sea capaz de adivinar un valor elegido por el usuario. Es un proyecto retador que te hará repasar todo lo visto y comprender a fondo cada herramienta aprendida.
-
36Proyecto 3: MasterMind 1.0 con C++
Ahora programarás el juego de lógica MasterMind. Este proyecto es, al igual que el anterior, un duro entrenamiento en el que abordarás TODO lo visto hasta ahora en el curso.
-
37Proyecto 4: MasterMind 2.0
Habiendo completado el proyecto anterior, seguirás entrenándote en la programación algorítmica mejorando la dificultad del juego.
-
38Arreglos multidimensionales con C++
Los arreglos no solo pueden ser lineales (1 dimensión), sino que pueden ser matrices (2 dimensiones), prismas (3 dimensiones) y más. Veamos un poco al respecto de esto.
-
39FOR-EACH con C++
Existe una variante de FOR específicamente diseñada para recorrer arreglos automáticamente facilitando la sintaxis. Veámosla.
-
40Proyecto 5: TIC-TAC-TOE con C++
Programarás una versión muy básica del juego TIC-TAC-TOE (TA-TE-Ti, la vieja, el gato, etc.) para entrenarte en el uso de arreglos bidimensionales, que es algo muy habitual en cualquier software.
-
41Procedimientos y pasaje de parámetros con C++
Comencemos conociendo los procedimientos y cómo asignarles parámetros simples.
-
42Funciones con C++
Las funciones son como los procedimientos solo que retornar un valor. De hecho, en C++ todo son funciones, tal como ocurre en Java, JavaScript y otros lenguajes.
-
43Los arreglos como parámetros de subprogramas en C++
La forma en que C++ aborda los arreglos es un tanto... complicada. Hay cosas que en otros lenguajes se realizan muy fácil y que en C++ no podemos hacer. Entender estos detalles marca la diferencia.
-
44Alcance y sombreado de identificadores con C++
Veamos cómo funcionan los identificadores ahora que tenemos subprogramas.
-
45Espacios de nombres de C++
Las cosas se van complejizando. Los espacios de nombre permiten organizar el código y evitar colisiones. Entendámoslos poco a poco.
-
46Declaración adelantada en C++
Similar a lo que ocurre en Pascal, en C++ necesitamos a veces usar un elemento antes de poder definirlo completamente. Veamos cómo se soluciona este problema.
-
47La función main de C++
Ahora estamos en condiciones de comprender bien qué es main (una función), cómo funcionan sus argumentos y qué opciones nos brinda.
-
48Documentación estilo JavaDoc en C++
Java tiene un estilo de comentarios muy poderoso a la hora de documentar el código, el cual se conoce como JavaDoc. En JavaScript también tenemos algo similar, pero no así en C++. Sin embargo, veamos cómo emularlo.
-
49Práctica: el Truco de las 21 cartas con subprogramas en C++
Trabajaremos de forma práctica reimplementando el Truco de las 21 cartas utilizando ahora subprogramas.
-
50Proyecto 6: TA-TE-TI con subprogramas en C++
Mejorarás la implementación del juego TIC-TAC-TOE ahora usando subprogramas.
-
51Pasaje de parámetros por referencia en C++
Los subprogramas aún tienen muchas sorpesas por ofrecernos. He aquí los amados (sarcasmo) parámetros por referencia.
-
52Los arreglos como parámetros en C++: ¿Qué hay por detrás?
Ya analizamos un poquito este tema, pero aún quedan cosas por develar.
-
53Práctica: completando el Truco de las 21 cartas con subprogramas en C++
Sigamos trabajando con este proyecto a fondo.
-
54Proyecto 7: TA-TE-TI con parámetros por referencia en C++
Hora de entender a fondo el pasaje por referencia.
-
55Proyecto 8: MasterMind 2.5 en C++
Mejoremos la implementación de MasterMind ahora usando subprogramas.
-
56Enumeraciones en C++
Veamos cómo crear tipos de datos enumerados.
-
57Estructuras o registros de C++
A partir de aquí las cosas se van poniendo interesantes, y la orientación a objetos se va asomando. Veamos cómo crear tipos estructurados más complejos.
-
58Caso de estudio: Adivinador avanzado en C++
Usaremos estructuras ahora en el juego del Adivinador.
-
59Proyecto 9: TA-TE-TI con estructuras en C++
Mejoraremos el TIC-TAC-TOE ahora usando struct.
-
60Arreglos con tope en C++
Un modo ingenioso de tener arreglos "variables" en su tamaño.
-
61Búsqueda y ordenación en C++
Veamos algunos algoritmos de búsqueda y ordenamiento de datos.
-
62Proyecto 10: MasterMind 3.0 en C++
Ahora programarás el modo Pensador, o sea que tu programa tendrá que adivinar un código que tú has pensado, usando para ello las pistas que tú le darás con las notas.
-
63Encabezados e implementación en C++
Es momento de comenzar a escribir código separándolo en distintos archivos según a lo que corresponda. Un solo archivo de código fuente se vuelve inviable en la medida en que el proyecto crece.
-
64Modularizando el Truco de las 21 cartas en C++
Mejoremos la implementación de este programa utilizando ahora archivos de encabezado y de implementación.
-
65Proyecto 11: modularizando TIC-TAC-TOE en C++
Hora de separar el código del juego.
-
66Proyecto 12: MasterMind 4.0 - integración modular en C++
Ahora unificarás la versión Adivinador y Pensador de MasterMind en un solo programa, modulairzando correctamente el código.
-
67Módulos de C++ 20
Además de los archivos de encabezado e implementación C++ provee, a partir de su versión 20, los módulos propiamente dichos. Veamos cómo usarlos.
-
68Proyecto 13: Buscaminas Vtxt en C++
Programarás ahora el juego del Buscaminas en versión de texto, ya que de momento no sabemos implementar interfaces gráficas de usuario. Este proyecto te permitirá entrenar todo lo visto hasta ahora en el curso y más.
-
69Archivos de texto en C++
Veamos cómo crear, abrir y manipular archivos de texto.
-
70Archivos binarios de C++
Los archivos de texto resultan insuficientes para almacenar información compleja. Veamos cómo crear nuestro propio tipo de archivos.
-
71Caso práctico: creando una base de datos manual en C++
Trabajremos en un ejemplo práctico muy útil para aprender a utilizar archivos al máximo.
-
72Expresiones regulares con C++
Veamos cómo usar esta poderosa herramienta en C++.
-
73Proyecto 14: Bases de datos con comandos en C++
Trabajarás creando un sistema básico de gestión de bases de datos por comandos.
-
74Proyecto opcional: mejorando el sistema de bases de datos en C++
Te proponemos que, opcionalmente, mejores tu sistema para agregarle nuevas funcionalidades.
-
75La RAM y los punteros en C++
Las cosas avanzan. Es momento de gestionar la memoria de nuestros programas a nuestro antojo.
-
76Punteros a estructuras en C++
Los objetos van haciéndose más palpables. Veamos aquí las bases que hay detrás.
-
77Lista simple encadenada en C++
Una estructura lineal dinámica e interesante.
-
78Inserción y eliminación de nodos en listas encadenadas en C++
Veamos cómo manipular las listas enlazadas.
-
79Añadir capa de miembros a una lista en C++
Profundicemos en los miembros de un tipo de datos, en este caso, las listas, pero lo que verás se aplica luego a todo.
-
80Testeando la memoria al máximo: stress testing en C++
Analizar la pérdida de memoria por errores al programar es crucial.
-
81Tipos abstractos de datos con C++
Ya casi estamos por utilizar objetos. Estas bases te darán un entendimiento super profundo.
-
82Tipos opacos en C++
Un modo interesante de encapsulamiento. C++ permite el uso de tipos opacos de datos.
-
83Proyecto 15: Sistema de gestión de cursos en C++
Crearás un sistema bastante avanzado para gestionar cursos de una institución educativa.
-
84Recursividad en C++
Los subprogramas tienen la capacidad de invocarse a sí mismos. Esto es muy útil, sin embargo, requiere ciertas revisiones.
-
85Buscaminas recursivo en C++
La operación de despejar o descubrir celdas en el Buscaminas es de carácter recursivo. Veamos cómo implementarla con dicha herramienta.
-
86Funciones puras y funciones lambda en C++
Veamos algunos detallitos de funciones en C++.
-
87La librería de arreglos de C++
Veamos algunas herramientas extra de arreglos.
-
88Automatizando iteración de arreglos en C++
Fácil en la mayoría de lenguajes, complejo en C++. Veamos cómo automatizar la iteración en arreglos.
-
89Elipsis o argumentos variables en C++
Podemos crear subprogramas que reciban un número indeterminado de parámetros. Veamos cómo C++ aplica esto, ya que a diferencia de otros lenguajes, donde es fácil lograrlo, aquí hay cuestiones a tener en cuenta.
-
90TAD LinkedList en C++
Las listas encadenadas siguen apareciendo, solo que ahora las formalizamos como TAD.
-
91Recurrencia en listas encadenadas con C++
Usemos la recursividad para manipular listas.
-
92Variaciones de listas encadenadas en C++
Veamos qué tipos de listas enlazadas tenemos disponibles.
-
93Pilas y colas en C++
Las pilas y colas son estructuras lineales, básicamente listas enlazadas, muy útiles. Debes conocerlas.
-
94Árbol binario de búsqueda en C++
Aprende ahora a crear una estructura arborescente.
-
95Recorrido de un ABB en C++
Recorrer una estructura no lineal no es tema sencillo. La recursividad viene al rescate.
-
96Eliminar nodos de un ABB en C++
Eliminar nodos de un árbol binario de búsqueda no es tan simple.
-
97Calculando los niveles de un árbol binario en C++
Una tarea más que interesante de realizar.
-
98Modelo primer-hijo siguiente-hermano en C++
Es posible usar un árbol binario para representar un ábol general o n-ario, es decir, un árbol con cualquier cantidad de hijos en sus nodos. Veamos cómo lograr esto con el modelo primer-hijo siguiente-hermano.
-
99Proyecto de investigación: cómo implementar un AVL en C++
Investiga qué es y cómo implementar un AVL.
-
100Proyecto 16: Gestión de cursos AVL en C++
Reimplementa tu proyecto de gestión de cursos para que sea más eficiente utilizando ahora AVLs.
-
101Los structs como objetos en C++
Hora de ver los structs como clases de objetos.
-
102Modificadores de acceso en C++
Comencemos a encapsular nuestros tipos de datos.
-
103Destrucción de objetos en C++
Entendamos cómo liberar la memoria RAM de los objetos que hemos creado.
-
104Anidación de struct en C++
Veamos cómo incluir objetos internos a otros objetos.
-
105Modelo de iteración en listas en C++
Veamos cómo mejorar la iteración en listas usando un TAD más avanzado.
-
106Iterador automatizado en C++
Veamos cómo construir un iterador automatizado.
-
107Miembros estáticos de un struct en C++
Veamos cómo definir miembros de clase.
-
108Patrón SINGLETON en C++
Define un tipo de objetos de modo tal que solo pueda existir uno solo en memoria.
-
109Proyecto 17: Gestión de Cursos V1.5 en C++
Modifiquemos el proyecto anterior para utilizar objetos.
-
110Proyecto opcional: Batalla naval en C++
Se te propone, como reto opcional, programar el juego de la batalla naval.
-
111Herencia no polimórfica en C++
Comencemos a entender la herencia en C++.
-
112Casteo de tipos en C++
Veamos el down-casting y el up-casting.
-
113Constructores y destructores con herencia en C++
Entendamos la creación y destrucción de objetos al aplicar herencia.
-
114La herencia múltiple y el diamante de la muerte en C++
El diamante de la muerte es un problema común en la herencia múltiple. Veámoslo.
-
115Clases abstractas, interfaces y polimorfismo en C++
Veamos algunas variantes de clases.
-
116Herencia y colecciones generales en C++
Veamos cómo generalizar colecciones.
-
117Programación genérica con plantillas en C++
Las plantillas son una herramienta particular de C++.
-
118Excepciones en C++
La captura, lanzamiento y creacón de excepciones es algo importante que debes dominar.
-
119Clases de C++
C++ utiliza dos tipos de clases de objetos, las clases propiamente dichas (class) y los structs. Veamos las diferencias.
-
120Proyecto de investigación: conceptos varios de C++
Herramientas curiosas existen en este ámbito, como por ejemplo, los conceptos.
-
121Certificación POO y C++
Accede a las dos certificaciones.