Capítulo 1: Introducción a C++
1.1 Nivel Introductorio
¿Qué es C++?
C++ es un lenguaje de programación de propósito general que soporta programación de procedimientos, programación orientada a objetos y programación genérica. Es una extensión del lenguaje C y fue desarrollado por Bjarne Stroustrup a principios de los años 80.
Historia y evolución del lenguaje
- C (1972): Creado por Dennis Ritchie, es el precursor de C++.
- C++ (1985): Bjarne Stroustrup introduce clases y objetos.
- Estándares ISO:
- C++98: Primer estándar oficial.
- C++11: Introduce características modernas como lambdas y punteros inteligentes.
- C++14, C++17, C++20: Mejoras y nuevas funcionalidades.
Instalación y configuración del entorno de desarrollo
Para programar en C++, necesitas:
Compilador: Traduce el código a lenguaje máquina.
- GCC/G++: Disponible en sistemas Unix y Windows (con MinGW).
- Clang: Alternativa moderna a GCC.
- MSVC: Compilador de Microsoft para Windows.
Entorno de Desarrollo Integrado (IDE) (opcional):
- Visual Studio Code: Multiplataforma y extensible.
- Code::Blocks: Enfocado en C/C++.
- Visual Studio: Completo pero solo para Windows.
Ejemplo: Instalación de G++ en Ubuntu.
bash
sudo apt update
sudo apt install build-essentialEstructura básica de un programa en C++
Un programa en C++ mínimo tiene la siguiente estructura:
cpp
#include <iostream>
int main() {
// Código aquí
return 0;
}#include <iostream>: Directiva para incluir la biblioteca de entrada/salida.int main(): Punto de entrada del programa.return 0;: Indica que el programa terminó correctamente.
Primer programa: "Hola Mundo"
El clásico programa "Hola Mundo" muestra cómo imprimir texto en pantalla.
cpp
#include <iostream>
int main() {
std::cout << "¡Hola, Mundo!" << std::endl;
return 0;
}Explicación:
std::cout: Objeto para salida estándar.<<: Operador de inserción.std::endl: Inserta un salto de línea.
Compilación y ejecución:
bash
g++ hola_mundo.cpp -o hola_mundo
./hola_mundo1.2 Nivel Intermedio
Sintaxis básica y tipos de datos
Tipos de datos primitivos
- Enteros:
int,short,long,long long - Punto flotante:
float,double - Caracteres:
char - Booleanos:
bool
Declaración y asignación
cpp
int edad = 25;
float altura = 1.75f;
char inicial = 'A';
bool esEstudiante = true;Operadores y expresiones
Operadores aritméticos
- Suma:
+ - Resta:
- - Multiplicación:
* - División:
/ - Módulo:
%(solo enteros)
Ejemplo:
cpp
int a = 10;
int b = 3;
int suma = a + b; // 13
int modulo = a % b; // 1Operadores de comparación
- Igual a:
== - No igual a:
!= - Mayor que:
> - Menor que:
< - Mayor o igual a:
>= - Menor o igual a:
<=
Operadores lógicos
- AND lógico:
&& - OR lógico:
|| - NOT lógico:
!
Entrada y salida de datos
Salida estándar
cpp
std::cout << "Mensaje a mostrar" << std::endl;Entrada estándar
cpp
int edad;
std::cout << "Ingresa tu edad: ";
std::cin >> edad;Nota: std::cin puede causar problemas al leer cadenas con espacios. Para ello, se utiliza std::getline.
Comentarios y buenas prácticas
Comentarios de una línea
cpp
// Esto es un comentario de una líneaComentarios de múltiples líneas
cpp
/*
Esto es un comentario
de múltiples líneas
*/Buenas prácticas
- Nombres de variables descriptivos.
- Indentación consistente.
- Comentarios para explicar código complejo.
1.3 Nivel Avanzado
Compilación y ejecución en diferentes plataformas
- Makefiles: Automatizan el proceso de compilación.
- CMake: Herramienta multiplataforma para generar scripts de compilación.
Ejemplo de Makefile simple:
makefile
all: programa
programa: main.o funciones.o
g++ main.o funciones.o -o programa
main.o: main.cpp
g++ -c main.cpp
funciones.o: funciones.cpp
g++ -c funciones.cpp
clean:
rm *.o programaConfiguración avanzada del entorno de desarrollo
- Definir macros y constantes de compilación:
- Usando
-Den la línea de comandos:g++ -DDEBUG main.cpp
- Usando
- Optimización del código:
- Niveles de optimización:
-O1,-O2,-O3 - Para depuración:
-g
- Niveles de optimización:
Optimización de código en C++
Inline Functions
- Sugerir al compilador que inserte el código de la función en lugar de llamarla.
cpp
inline int suma(int a, int b) {
return a + b;
}Evitar copias innecesarias
- Usar referencias y punteros.
- Pasar objetos grandes por referencia constante.
cpp
void procesar(const std::vector<int>& datos);Uso eficiente de memoria
- Liberar recursos cuando no se necesiten.
- Utilizar estructuras de datos adecuadas.
