====== Curso de C++ ====== En este curso, se aprende todo lo fundamental de C++. Con los conocimientos adquiridos ya se está en condiciones de encarar diversos problemas de la Olimpíada Informática Argentina. Si no tiene ninguna experiencia previa con programación, puede también empezar con el lenguaje didáctico [[:pilasbloques|PilasBloques]], antes de pasar a C++. * [[curso-cpp:introduccion|Introducción]] * Introducción de los conceptos informáticos básicos como para entrar en clima y tener un panorama general antes de empezar a programar en sí. Es posible que muchos alumnos ya estén familiarizados con algunos de los conceptos aquí explicados, y esta introducción no es un requisito realmente necesario para completar el resto del curso, aunque su lectura se recomienda. * Preparación del ambiente: * [[curso-cpp:ambiente:oiax|Máquina virtual OIAX (Alternativa posible en cualquier sistema operativo)]] * [[curso-cpp:ambiente:ubuntu|En Ubuntu - Linux]] * [[curso-cpp:ambiente:windows|En Windows]] * [[curso-cpp:ambiente:macOSX|En Mac OS X]] * [[curso-cpp:hola-mundo|Hola Mundo]] * Ejemplo minimalista de un programa c++, con algunos comentarios, para ir tomando gustito a lo que vendrá. * [[curso-cpp:jugando-con-hola-mundo|Jugando con el Hola Mundo]] * En esta sección, estudiaremos algunas posibilidades de modificación al holamundo ya visto. En el proceso, tendremos los rudimentos necesarios para hacer cálculos básicos a partir de datos ingresados por el usuario, y mostrarlos por la pantalla. En la sección siguiente entenderemos mejor algunos de los conceptos que aquí estaremos usando más experimentalmente. * [[curso-cpp:variables-valores-tipos|Variables, valores, expresiones y tipos]] * Ahora que ya tenemos vistos algunos ejemplos básicos, vamos a focalizar mejor en algunos conceptos fundamentales, que nos ayudarán cuando queramos crear programas más avanzados. * [[curso-cpp:estructuras-selectivas|Estructuras de control selectivas]] * Ahora que tenemos incorporados los conceptos más fundamentales de la programación imperativa, ampliaremos nuestro arsenal con estructuras lógicas que permiten tomar **decisiones** a la computadora, de acuerdo la situación encontrada. * [[curso-cpp:estructuras-repetitivas|Estructuras de control repetitivas]] * Para tener suficiente poder de crear programas capaces de calcular cualquier cosa, únicamente nos falta la capacidad de indicarle a la computadora que realice una acción de manera **repetitiva**. Veremos por ejemplo cómo lograr que la computadora sume los números desde el 1 hasta el 1000 automáticamente, sin tener que escribir manualmente la lista de todos esos números en el código fuente. * [[curso-cpp:contenedor-vector|Vectores]] * Ampliaremos nuestro conjunto de tipos disponible con el tipo ''vector'', un tipo extremadamente útil y disponible en C++. Aprenderemos también que al incorporar ''vector'', pasamos de conocer 3 tipos de datos, a conocer **infinitos**. * [[curso-cpp:modularizacion-funciones|Funciones]] * ¿Cómo ordenamos un programa grande en fragmentos prolijos más pequeños e independientes? ¿Cómo evitamos programar dos veces tareas casi idénticas? Estudiaremos en esta sección el concepto de función, un concepto absolutamente central en la programación estructurada. * [[curso-cpp:struct|Los struct]] * En C++, los ''struct'' permiten definir nuestros propios tipos **compuestos**, aumentando así el poder expresivo del lenguaje sin tener que trabajar todo el tiempo con muchos componentes atómicos por separado. * [[curso-cpp:mas-tipos|Más tipos de datos]] * Veremos más posibilidades de tipos de datos básicos existentes en C++. * [[curso-cpp:archivos|Archivos]] * Hasta ahora, siempre leímos y escribimos por ''cin'' y ''cout'' (que normalmente, son el teclado y la pantalla). Veremos ahora como trabajar con archivos. * [[curso-cpp:programacion-grafica|Programación Gráfica]] * Hasta ahora, todos los programas que hicimos trabajaron directamente con texto, sea a través de la pantalla y el teclado o a través de archivos. Veremos ahora cómo utilizar el Kit Gráfico OIA para realizar programas que pueden hacer dibujos geométricos en pantalla, lo cual es útil para visualizar el funcionamiento de algoritmos de competencia, realizar juegos, etc. * Descarga y preparación del Kit Gráfico OIA * [[curso-cpp:kit-sdl:ubuntu|En Ubuntu - Linux]] * [[curso-cpp:kit-sdl:windowsXP|En WindowsXP]] * [[curso-cpp:kit-sdl:windows7|En Windows 7]] * [[curso-cpp:kit-sdl:windows8|En Windows 8]] * [[curso-cpp:kit-sdl:windows9|En Windows 9]] * [[curso-cpp:kit-sdl:windows10|En Windows 10]] * [[curso-cpp:kit-sdl:macOSX|En Mac OS X]] * [[curso-cpp:kit-sdl:oiax|Máquina virtual?]] * Objetivos para ir completando en el taller * Objetivo 1 * PilasBloques: Ejercicios ... * Pasar esos ejercicios a C++ * Objetivo 2 * PB: Ejercicios ... * Pasar a C++ * Objetivo 3 (Resumen) * Comprender if, for, poder escribirlo en C++ * Ejercicios del juez * Objetivo 4 * PB: Ejercicios while * Escribir while en C++ * Objetivo 5 (Resumen) * Comprender if, for, while, poder escribirlo en C++ * Ejercicios del juez * Objetivo 6 * Comprender el tipo de variable string * Conocer las operaciones básicas de string: [], + * Ejercicios juez * Objetivo 7 * Comprender el tipo de dato "vector" * Practicar operaciones básicas de vector en C++ * Objetivo 8 * Problemas juez con vector