
¿Que es C++?
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hÃbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.

Tipos de Datos
-
Caracteres: char (también es un entero), wchar_t
-
Enteros: short, int, long, long long
-
Números en coma flotante: float, double, long double
-
Booleanos: bool
-
VacÃo
Principios
La función principal del código fuente main debe tener uno de los siguientes prototipos:
int main()
int main(int argc, char** argv)
Aunque no es estándar algunas implementaciones permiten
int main(int argc, char** argv, char** env)
Evolucion de C++
De forma resumida podemos ver la evolución de los lenguajes de programación según el siguiente esquema:
- Los primeros programas se crearon mediante conmutadores. El lenguaje utilizado era el lenguaje máquina. Sólo era aplicable a pequeños programas.
- El lenguaje ensamblador apareció para evitar programas usando cadenas de ceros y unos.
- En los años 50 aparece el primer lenguaje de alto nivel denominado FORTRAN. Permite la construcción de programas largos, no obstante, se corrÃa el peligro de crear programas difÃcilmente legibles.
Para evitar este problema, en los años 60 y 70 aparecen los lenguajes estructurados (C, Pascal, Algol).
condicionales
La programación de Condición o programación Condicional consiste en afirmar una expresión, si ésta es verdadera se procede a realizar una instrucción, sino se realiza otra instrucción, se le conoce también como instrucción IF. Por ejemplo:
switch-DO-WHILE
La programación de Caso o instrucción SWITCH es también de condición con un grado más complejo. Se requiere de casos para validar una expresión. Por ejemplo:
Existe una tercera y es la instrucción DO WHILE, consiste en hacer determinadas instrucciones mientras la condición que le asignamos sea valida. Por ejemplo:
Estos 3 casos se pueden mezclar para un mejor desempeño del programa estructurado. A continuación 3 problemas para un mejor entendimiento.

Sintaxis
switch ( expression ) case constant-expression : statement [default : statement]
El cuerpo de la instrucción switch consta de una serie de etiquetas case y una etiqueta opcional default.Ninguna de la dos expresiones constantes en las instrucciones case se puede evaluar en el mismo valor.La etiqueta default solo puede aparecer una vez.Las instrucciones con etiquetas no son requisitos sintácticos, pero la instrucción switch no tiene sentido sin ellas. La instrucción predeterminada no necesita estar al final; puede aparecer en cualquier parte del cuerpo de la instrucción switch.Una etiqueta case o default solo puede aparecer en una instrucción switch.

Las Librerias
-
fstream:
Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el programar, tanto leer como escribir en ellos.
-
iosfwd:
Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estándar. Por ejemplo ostream.
-
iostream:
Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e importante (aunque no indispensable).
-
La biblioteca list:
Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas
-
math:
Contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de funciones matemáticas.
-
memory:
Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes (auto_ptr).
"auto_ptr" es una clase que conforma la librerÃa memory y permite un fácil manejo de punteros y su destrucción automaticamente.
-
Biblioteca new:
Manejo de memoria dinámica
-
numeric:
Parte de la librerÃa numérica de la STL relativa a operaciones numéricas.
-
iostream:
Algoritmos estándar para los flujos de salida.
-
queue:
Parte de la STL relativa a contenedores tipo queue (colas de objetos).
-
LibrerÃa stdio:
Contiene los prototipos de las funciones, macros, y tipos para manipular datos de entrada y salida.
-
LibrerÃa stdlib:
Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general.
-
string:
Parte de la STL relativa a contenedores tipo string; una generalización de las cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil uso de las cadenas de caracteres, pues elimina muchas d elas dificultades que generan los char
-
typeinfo:
Mecanismo de identificación de tipos en tiempo de ejecución
-
vector:
Parte de la STL relativa a los contenedores tipo vector; una generalización de las matrices unidimensionales C/C++
-
forward_list
Esta librerÃa es útil para implementar con gran facilidad listas enlazadas simples.
-
list
Permite implementar listas doblemente enlzadas (listas enlazadas dobles) facilmente.
-
iterator
Proporciona un conjunto de clases para iterar elementos.
-
regex
Proporciona fácil acceso al uso de expresiones regulares para la comparación de patrones.
-
thread
Útil para trabajar programación multihilos y crear múltiples hilos en nuestra aplicación.
