Origen de Dev C++
Su origen data del año 1979 y se le atribuye a Bjarne Stroustrup. El lenguaje que inspiró a Stroustrup fue el lenguaje Simula (lenguaje usado para simulaciones), que es considerado el primer lenguaje en permitir programación orientada a objetos. Stroustrup considero que esta funcionalidad del lenguaje Simula era muy útil en el desarrollo de software, pero Simula era muy lento para un uso práctico.
Stroustrup comenzó a trabajar en su lenguaje llamado “C with classes” (C con clases) , su meta era agregar programación orientada a objetos al lenguaje C. El primer compilador de este lenguaje fue Cfront (un compilador escrito en C with classes) derivado del compilador de lenguaje C llamado CPre, aunque en 1993 se dejaría de usar por la dificultad para agregar nuevas funciones.
En 1983 el nombre del lenguaje fue cambiado de “C with classes” a “C++”. Podemos entender con esto la imagen que tenía Stroustrup de su lenguaje como una mejora del lenguaje “C” (al ser ++ un incrementador de variable).
Para 1985 Stroustrup publicó su referencia al lenguaje “The C++ Programming Language” (“El lenguaje de programación C++), el cual fue muy importante debido a la falta de estandarización del lenguaje recién creado. En 1990 se publicó “The Annotated C++ Reference Manual” (Manual de referencia anotada de C++) y ese mismo año salió al mercado el compilador “Turbo C++” (desarrollado por Borland Software Corporation) que agregaba una gran cantidad de nuevas librerías al lenguaje, ayudando a su desarrollo. El proyecto de librerías “Boost” agrego nuevas funcionalidades al lenguaje tales como aleatorización comprehensiva y una nueva librería de tiempo.
“Hay dos formas de construir un diseño de software. Una forma es hacerlo tan simple que es obvio que no hay deficiencias. Y la otra es hacerlo tan complicado que no hay deficiencias obvias.” - C.A.R. Hoare
Bjarne Stroustrup

Bjarne Stroustrup. Científico informático y Catedrático de Informática del Colegio de Ingeniería de la Universidad de Texas A&M. Ha destacado por desarrollar el lenguaje de programación C++. Síntesis biográfica Nació el 30 de diciembre de 1950 en Aarhus, Dinamarca. Trayectoria laboral Stroustrup escribió el considerado por muchos como el texto introductorio de referencia para el lenguaje, su título original es The C++ Programming Language, el cuál alcanza actualmente su tercera edición. Existe una versión especial editada en 2000, aunque no figuran en ella cambios significativos respecto al original. Este último texto ha sido revisado tanto para reflejar la evolución del lenguaje, como el trabajo del comité de estándares de C++. Stroustrup es un cand. scient. (el equivalente danés a un máster) en Matemáticas y Ciencias de la computación (1979) por la Universidad de Aarhus, Dinamarca, y Doctor en ciencias de la computación (1979 por la Universidad de Cambridge, Inglaterra. Anteriormente trabajó a la cabeza del departamento de Investigación en Programación de los Laboratorio Bells de AT&T, desde su creación hasta finales de 2002.
Premios
1990 - Fue nombrado uno de los "doce mejores científicos jóvenes de América" por la revista Fortune.
1993 - Premio Grace Murray Hopper de la ACM (Association for Computing Machinery) por sus primeros trabajos en C++.
1995 - La revista Byte nombró a Stroustrup una de las veinte personas que más ha influido en la industria informática.
1996 - Stroustrup fue nombrado socio en AT&T: "Por sus fundamentales contribuciones al desarrollo de lenguajes informáticos y programación orientada a objetos, culminando en el lenguaje de programación C++."
1998 - Stroustrup fue nombrado socio en ACM: "Por sus primeros trabajos construyendo los cimientos del lenguaje de programación C++. Basándose en los pilares y el continuado esfuerzo del Dr. Stroustrup, C++ se ha convertido en el lenguaje de programación más influyente de la historia de la informática".
2004 - Academian Nacional (Estados Unidos) de Ingeniería,
2004 - Premio 200 al Empresario en Informática de la IEEE Computer Society.
2005 - William Procter Prize for Scientific Achievement
2008 - Dr. Dobb's Excellence in Programming award.

Funciones de Dev C++
Una función es un bloque de código que realiza alguna operación. Una función puede definir opcionalmente parámetros de entrada que permiten a los llamadores pasar argumentos a la función. Una función también puede devolver un valor como salida. Las funciones son útiles para encapsular las operaciones comunes en un solo bloque reutilizable, idealmente con un nombre que describa claramente lo que hace la función. La función siguiente acepta dos enteros de un llamador y devuelve su suma; a y b son parámetros de tipo int .
Se puede invocar la función o llamarladesde cualquier número de lugares del programa. Los valores que se pasan a la función son los argumentos, cuyos tipos deben ser compatibles con los tipos de parámetro de la definición de función.
No hay ningún límite práctico para la longitud de la función, pero un buen diseño tiene como objetivo funciones que realizan una sola tarea bien definida. Los algoritmos complejos deben dividirse en funciones más sencillas y fáciles de comprender siempre que sea posible.
Las funciones definidas en el ámbito de clase se denominan funciones miembro. En C++, a diferencia de otros lenguajes, una función también pueden definirse en el ámbito de espacio de nombres (incluido el espacio de nombres global implícito). Estas funciones se denominan funciones libres o funciones no miembro; se usan en gran medida en la biblioteca estándar.
Las funciones se pueden sobrecargar, lo que significa que las distintas versiones de una función pueden compartir el mismo nombre si difieren en el número o el tipo de parámetros formales. Para obtener más información, vea sobrecarga de funciones.
Variables locales de función
Una variable que se declara dentro de un cuerpo de función se denomina variable local o simplemente local. Las variables locales no estáticas solo son visibles dentro del cuerpo de función y, si se declaran en la pila, se salen del ámbito cuando finaliza la función. Cuando se crea una variable local y se devuelve por valor, el compilador normalmente puede realizar la optimización del valor devuelto con nombre para evitar operaciones de copia innecesarias. Si una variable local se devuelve por referencia, el compilador emitirá una advertencia, ya que cualquier intento por parte del llamador de usar esa referencia se producirá después de la destrucción de la variable local.
En C++, una variable local se puede declarar como estática. La variable solo es visible dentro del cuerpo de la función, pero existe una copia única de la variable para todas las instancias de la función. Los objetos estáticos locales se destruyen durante la finalización especificada por atexit. Si no se crea un objeto estático porque el flujo de control de programa omitió su declaración, no se realiza ningún intento de destruir ese objeto.
"La mayoría de los buenos programadores programan, no porque esperan que se les pague o por adulación por parte del público, sino porque es divertido programar."
- Linus Torvalds
Tipos de datos en C++
Los tipos de datos primitivos son los que están definidos dentro del lenguaje.Los tipos de datos en C++ se clasifican en primitivos y derivados. Los tipos de datos derivados se forman a partir de los tipos primitivos. En este tema veremos los tipos primitivos y en temas siguientes estudiaremos los tipos derivados. Los tipos de datos primitivos en C++ son: numéricos enteros, numéricos reales, tipo lógico y tipo carácter ampliado.
Tipos de datos C++ numéricos enteros
El tipo de dato numérico entero es un subconjunto finito de los números enteros del mundo real. Pueden ser positivos o negativos.
En C++ los tipos de datos numéricos enteros son los siguientes:
Tipo de Dato | Descripción | Número de bytes típico | Rango |
short | Entero corto | 2 | -32768 a 32767 |
int | Entero | 4 | -2147483648 a +2147483647 |
long | Entero largo | 4 | -2147483648 a +2147483647 |
char | Carácter | 1 | -128 a 127 |
Con los tipos enteros pueden utilizarse los calificadores signed y unsigned. Estos calificadores indican si el número tiene signo o no. Si se usan solos, sin indicar el tipo de dato se asume int.
Por ejemplo, las siguientes declaraciones son equivalentes:
unsigned int x; equivale a: unsigned x;
Usando estos calificadores podemos tener los siguientes tipos enteros:
Tipo de Dato | Descripción | Número de bytes típico | Rango |
signed short | Entero corto | 2 | -32768 a 32767 |
unsigned short | Entero corto sin signo | 2 | 0 a 65535 |
signed int | Entero | 4 | -2147483648 a +2147483647 |
unsigned int | Entero sin signo | 4 | 0 a 4294967295 |
signed long | Entero largo | 4 | -2147483648 a +2147483647 |
unsigned long | Entero largo sin signo | 4 | 0 a 4294967295 |
signed char | Carácter | 1 | -128 a 127 |
unsigned char | Carácter sin signo | 1 | 0 a 255 |
Podemos ver que los datos enteros de tipo signed son equivalentes a los enteros sin utilizar el calificador:
signed int a; es equivalente a escribir int a;
Tipos de datos numéricos reales
El tipo de dato numérico real es un subconjunto finito de los números reales. Pueden ser positivos o negativos.
En C++ los tipos de datos numéricos reales son los siguientes:
Tipo de Dato | Descripción | Número de bytes típico | Rango |
float | Real (Número en coma flotante) | 4 | Positivos: 3.4E-38 a 3.4E38 Negativos: -3.4E-38 a -3.4E38 |
double | Real doble(Número en coma flotante de doble precisión) | 8 | Positivos: 1.7E-308 a 1.7E308 Negativos: -1.7E-308 a -1.7E308 |
long double | Real doble largo | 10 | Positivos: 3.4E-4932 a 1.1E4932 Negativos: -3.4E-4932 a -1.1E4932
|
Tipo lógico
Los datos de este tipo sólo pueden contener dos valores: true ó false (verdadero ó falso).
Si se muestran como enteros, el valor true toma el valor 1 y false el valor 0.
Tipo de Dato | Descripción | Número de bytes típico | Rango |
bool | Dato de tipo lógico | 1 | 0, 1 |
Tipo carácter extendido
Este tipo se utiliza para representar caracteres UNICODE. Utiliza 2 bytes a diferencia del tipo char que solo utiliza 1.
Tipo de Dato | Descripción | Número de bytes típico | Rango |
wchar_t | Carácter Unicode | 2 | 0 a 65535 |
· Existen compiladores de C++ para diferentes sistemas operativos, lo cual representa una ventaja en cuestión de portabilidad. Es posible compilar nuestro código en diferentes plataformas, si se separa el código operativo del código de interfaz gráfica. Así, si se desea compilar para los sistemas de Apple o Linux, simplemente se tendrá que modificar el código relacionado con la interfase gráfica. Esto reduce el tiempo de programación para pasar el código de un sistema a otro. En lenguajes de programación como Visual Basic esto resulta imposible ya que no existen compiladores para código de Visual Basic en otros sistemas diferentes de Windows.
· Lenguaje muy didáctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros.
· C y C++ son lenguajes tan robustos y versátiles, que actualmente son muy utilizados en la creación de software, como sistemas operativos (windows, GNU/Linux, Mac OSX, android), utilidades (Bibliotecas, servicios, herramientas de mantenimiento), y en software de desarrollo como compiladores, depuradores e IDE (entornos de desarrollo integrados)
· Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).
· C++ es apreciado por la eficiencia de su código y es de los lenguajes de programación más populares para crear software de sistemas y para crear aplicaciones.
· Es un lenguaje muy empleado, existen muchos tutoriales en línea, libros, códigos fuentes abiertos... hay material de sobra y basta para aprender lo necesario y mucho más con este lenguaje.
e ciertas,C y C++ son lenguajes tan robustos y versátiles, que actualmente son muy utilizados en la creación de software de sistema, como sistemas operativos (Windows, GNU/Linux, Mac OS X, Android) y utilidades (Bibliotecas, Servicios, Herramientas de Mantenimiento), y en software de desarrollo como Compiladores, Depuradores de código o Entornos de Desarrollo Integrado.
l C y C++ son lenguajes tan robustos y versátiles, que actualmente son muy utilizados en la creación de software de sistema, como sistemas operativos (Windows, GNU/Linux, Mac OS X, Android) y utilidades (Bibliotecas, Servicios, Herramientas de Mantenimiento), y en software de desarrollo como Compiladores, Depuradores de código o Entornos de Desarrollo Integrado.
![;;[🍼] donde yoongi se enferma y recibe mimos de su novio al regresa… #fanfic # Fanfic # amreading # books # wattpad](https://i.pinimg.com/originals/cb/03/3a/cb033a9043b4e57fb8fbcf3f692922f3.gif)
· Uso de DLLs (librerías dinámicas) muy complejo. Java y .Net han evolucionado estos conceptos manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador debe encargarse de cargar y liberar de memoria estas librerías, y correr los riesgos por el manejo de esta memoria.
· Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto, pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente.
· Manejo de punteros y memoria respecto a ello. Claro, esta también es una gran ventaja porque permite un mejor control de la memoria y una buena administración de recursos de computadora, pero la inexperiencia de los desarrolladores o la pérdida de costumbre con este tipo de variables (sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre.
· No es recomendable para desarrollo de páginas Web.
· Uno de los motivos que más quebraderos de cabeza ha traído a los programadores en lenguaje C es la correcta liberación de la memoria. Si se te olvida liberar algo de memoria, cuando el programa termina esa memoria se queda ocupada (aunque el programa ya no siga ejecutándose), son los famosos “Memory Leaks”.
· Es difícil (o por lo menos no es tan sencillo como en otros lenguajes) programar bases de datos

