C++ es un lenguaje compilado de propósito general, estáticamente tipado, que soporta programación procedimental, orientada a objetos y genérica. Dominar su sintaxis fundamental es esencial para escribir código eficiente y libre de errores. Este artículo cubre los elementos sintácticos esenciales, desde la estructura básica de un programa hasta los conceptos fundamantales de la programación orientada a objetos.
Estructura Fundamental de un Programa
Toda aplicación C++ comienza su ejecución en la función main. Un ejemplo elemental que calcula el cuadrado de un número podría verse así:
#include <iostream>
int main() {
int numero = 5;
int cuadrado = numero * numero;
std::cout << "El cuadrado de " << numero << " es: " << cuadrado << std::endl;
return 0;
}
La directiva #include <iostream> incorpora la biblioteca estándar de entrada/salida. La función main debe devolver un entero; cero generalmente indica una ejecución exitosa.
Comentarios y Nombres de Identificadores
Los comentarios ayudan a documentar el código. Se pueden usar de dos formas: comentarios de una sola línea con // y comentarios de múltiples líneas encerrados entre /* y */.
Los identificadores (nombres para variables, funciones, clases, etc.) deben comenzar con una letra o un guion bajo (_). Pueden contener letras, dígitos y guiones bajos, y son sensibles a mayúsculas y minúsculas. No pueden coincidir con palabras reservadas del lenguaje.
Palabras Reservadas
C++ reserva un conjunto de palabras clave (for, while, class, return, if, else, etc.) que tienen un significado especial para el compilador y no pueden ser utilizadas como identificadores. Existe un conjunto extenso que incluye especificadores de tipo, modificadores de acceso y operadores.
Tipos de Datos y Declaración de Variables
El lenguaje proporciona tipos de datos fundamentales como:
int: números enteros.doubleofloat: números en punto flotante.char: un solo carácter.bool: valores de verdad (trueofalse).
Las variables se declaran especificando el tipo seguido del nombre. Ejemplo: double temperatura; o char inicial;.
Operadores
Los operadores permiten realizar cálculos y comparaciones. Incluyen operadores aritméticos (+, -, *, /, %), relacionales (==, !=, <, >), lógicos (&&, ||, !) y de asignación compuesta (+=, -=, etc.).
Estructuras de Control del Flujo
Para dirigir la ejecución del programa, se utliizan estructuras condicionales y bucles.
// Ejemplo de bucle for con lógica diferente
for (int contador = 10; contador >= 1; contador -= 2) {
std::cout << contador << " ";
}
Las estructuras if-else evalúan condiciones. Los bucles while y do-while repiten código mientras se cumpla una condición. Las sentencias break (sale del bucle) y continue (salta a la siguiente iteración) alteran el flujo normal.
Funciones
Las funciones encapsulan bloques de código reutilizable. Se definen con un tipo de retorno, un nombre y opcionalmente parámetros.
// Función que calcula el producto de dos números
double calcularProducto(double a, double b) {
return a * b;
}
// Ejemplo de uso
int main() {
double precio = 19.99;
int cantidad = 3;
double total = calcularProducto(precio, cantidad);
std::cout << "Total: " << total << std::endl;
return 0;
}
Entrada y Salida de Datos
Para la interacción con el usuario, C++ utiliza flujos de entrada/salida de la biblioteca <iostream>.
std::string nombre;
std::cout << "Ingrese su nombre: ";
std::cin >> nombre;
std::cout << "Hola, " << nombre << "!" << std::endl;
Alternativamente, se pueden usar las funciones de C scanf y printf de <cstdio>, que suelen ofrecer mayor control de formato y, en algunos contextos, mejor rendimiento.
Clases y Objetos: Introducción a la POO
C++ soporta la programación orientada a objetos. Una clase es un plano que define propiedades (datos miembro) y comportamientos (funciones miembro).
#include <iostream>
#include <string>
class CuentaBancaria {
private:
std::string titular;
double saldo;
public:
// Constructor
CuentaBancaria(std::string t, double s) : titular(t), saldo(s) {}
void depositar(double cantidad) {
if (cantidad > 0) saldo += cantidad;
}
void mostrarSaldo() const {
std::cout << "Saldo de " << titular << ": $" << saldo << std::endl;
}
};
int main() {
CuentaBancaria miCuenta("Ana López", 1000.50);
miCuenta.depositar(250.75);
miCuenta.mostrarSaldo();
return 0;
}
Se crea un objeto (miCuenta) a partir de la clase CuentaBancaria. Se puede interactuar con sus métodos públicos (depositar, mostrarSaldo), mientras que los datos privados están protegidos.
Otros Elementos Sintácticos Relevantes
- Preprocesador: Además de
#include, la directiva#definepermite definir macros para sustitución textual. - Espacios de Nombres: Ayudan a organizar el código y evitar colisiones de nombres. Se accede a los elementos con el operador
::(ej.std::cout). - Punteros y Referencias: Mecanismos para el manejo directo de memoria y el paso por referencia de parámetros.