1.1 ¿Qué es C y qué es C++?
Aunque C y C++ están estrechamente relacionados, representan dos filosofías de programación distintas:
C
C es un lenguaje de programación de propósito general, creado en 1972 por Dennis Ritchie en los laboratorios Bell. Su principal objetivo era proporcionar un lenguaje más estructurado y flexible para reescribir el sistema operativo UNIX que hasta entonces se escribía en ensamblador.
Desde entonces, C ha ganado una enorme popularidad, convirtiéndose en uno de los lenguajes más utilizados en el desarrollo de software de sistemas (como sistemas operativos, drivers y firmware), sistemas embebidos, y también como una base educativa para aprender programación a nivel de bajo nivel.
Características destacadas de C:
- Lenguaje compilado: El código fuente de C se traduce a lenguaje máquina usando un compilador, lo que produce programas muy eficientes en términos de rendimiento.
- Lenguaje estructurado: Aunque no es orientado a objetos, C promueve una organización modular del código a través del uso de funciones, que facilitan la legibilidad y el mantenimiento.
- Cercano al hardware: C permite un control muy preciso sobre la memoria y el sistema, gracias al uso de punteros y manipulación directa de direcciones de memoria.
- Portabilidad: Un programa escrito en C puede compilarse y ejecutarse en distintos sistemas operativos con muy pocos cambios, gracias a su diseño multiplataforma.
- Biblioteca estándar: A diferencia de otros lenguajes modernos, C incluye una biblioteca estándar muy limitada, lo cual hace que el programador deba implementar muchas funcionalidades manualmente.
- Poca abstracción: El lenguaje se mantiene cerca del hardware, lo que permite optimizar código.
Podemos encontrar programas C en multitud de entornos actuales. Podemos destacar entre ellos:
- Desarrollo de sistemas operativos (Linux, UNIX, Windows Kernel, etc.)
- Controladores de hardware (drivers)
- Sistemas embebidos (automoción, domótica, dispositivos médicos)
- Microcontroladores (Arduino, ESP32, STM32, etc.)
- Aplicaciones donde el rendimiento es crítico
Ventajas:
- Alta eficiencia y velocidad de ejecución
- Portabilidad multiplataforma
- Control total sobre la gestión de memoria
Desventajas:
- Curva de aprendizaje inicial pronunciada (especialmente por los punteros)
- No tiene soporte nativo para objetos ni excepciones
- Mayor posibilidad de errores críticos (desbordamientos, fugas de memoria)
C++
C++ nace en la década de 1980 como una evolución del lenguaje C. Fue desarrollado por Bjarne Stroustrup, quien buscaba combinar la eficiencia del lenguaje C con la posibilidad de aplicar paradigmas de programación más modernos, especialmente la Programación Orientada a Objetos (POO).
C++ es por tanto, un lenguaje de propósito general, compilado y multiparadigma. Esto significa que permite programar utilizando distintos enfoques: desde la programación estructurada tradicional hasta la orientación a objetos, la programación genérica (templates) y la programación funcional.
Características destacadas de C++:
- Compatibilidad con C: Prácticamente todo código válido en C es válido también en C++. Esto facilita la migración progresiva de proyectos antiguos.
- Soporte para POO: Introduce las características de la Programación Orientada a Objetos (clases, objetos, herencia, polimorfismo, encapsulamiento, abstracción, constructores, destructores, etc.)
- Librería estándar amplia: Incluye librerías potentes como la STL (Standard Template Library) que proporcionan estructuras de datos, algoritmos, manejo de cadenas, etc.
- Plantillas (templates): Permiten escribir funciones y clases genéricas, aplicables a múltiples tipos de datos.
- Manejo de excepciones: Proporciona mecanismos para el control de errores en tiempo de ejecución usando try, catch y throw.
- Mayor abstracción sin perder eficiencia: Aunque permite escribir código de alto nivel, sigue siendo un lenguaje muy eficiente, adecuado para aplicaciones críticas.
Al igual que en C, podemos encontrar programas C++ en multitud de entornos actuales de los que podemos destacar:
- Desarrollo de videojuegos (Unreal Engine, motores gráficos, físicas)
- Aplicaciones de escritorio de alto rendimiento (Photoshop, AutoCAD, etc.)
- Desarrollo de sistemas embebidos con mayor complejidad
- Aplicaciones científicas y simulaciones numéricas
Ventajas:
- Potente y flexible: multiparadigma
- Rápido como C, pero más expresivo y estructurado
- Gran comunidad y ecosistema
- Herramientas y bibliotecas de alto nivel
Desventajas:
- Complejidad creciente a medida que se dominan más características
- Posibilidad de errores de bajo nivel si se usa de forma descuidada
- Tiempos de compilación más largos que en C
1.2 Diferencias clave entre C y C++
Característica | C | C++ |
---|---|---|
Año de creación | 1972 | 1983 |
Paradigma principal | Estructurado | Multiparadigma (estructurado, POO, etc.) |
Orientación a objetos | ❌ No | ✅ Sí |
Tipos de datos personalizados | structs | structs, classes, templates |
Manejo de errores | Códigos de error | Excepciones (try/catch ) |
Entrada/salida | printf , scanf | cin , cout (con <iostream> ) |
Bibliotecas | Muy limitada | Amplia STL y más |
Compatibilidad con C | — | ✅ Compatible con C |
¿Por qué aprender ambos?
Aprender C primero te da un conocimiento profundo sobre cómo funciona un ordenador por dentro: la memoria, el stack, el heap, los punteros, etc. Es ideal para forjar una base sólida como programador de sistemas.
Aprender C++ después te permite aplicar ese conocimiento en contextos de mayor abstracción, diseño orientado a objetos y aplicaciones más modernas y reutilizables. También te capacita para trabajar en áreas como desarrollo de videojuegos, simulaciones, procesamiento de imágenes, y mucho más.
1.2 Instalación de compiladores
¿Qué es un compilador?
Antes de instalar un compilador, es fundamental entender qué es y por qué lo necesitamos. Un compilador es una herramienta que traduce el código fuente escrito por el programador (en lenguajes como C o C++) a código máquina, que puede ser entendido y ejecutado por el procesador de un ordenador.
A diferencia de los lenguajes interpretados (como Python), donde el código se ejecuta línea por línea, los lenguajes como C y C++ necesitan ser compilados completamente antes de poder ejecutarse. Este proceso genera un archivo ejecutable.
Compiladores populares para C y C++
Existen varios compiladores disponibles para trabajar con C y C++. A continuación, presentamos los más comunes:
Compilador | Sistemas compatibles | Descripción breve |
---|---|---|
GCC (GNU Compiler Collection) | Linux, macOS, Windows (via MinGW o WSL) | El compilador más utilizado para C y C++, libre y de código abierto. |
Clang/LLVM | macOS, Linux, Windows | Alternativa moderna a GCC, muy usado en macOS y herramientas como Xcode. |
MSVC (Microsoft Visual C++) | Windows | Parte de Visual Studio. Compilador optimizado para entornos Windows. |
TDM-GCC / MinGW-w64 | Windows | Versión de GCC para Windows. Ligero y fácil de instalar. |
1.3 Instalación de compiladores por sistema operativo
En Windows
Windows no viene con un compilador de C/C++ preinstalado, por lo que deberás instalar uno manualmente. Tienes varias opciones:
Opción 1: Instalar MinGW-w64 (recomendado para comenzar)
- Descarga MinGW-w64
- Ir a la página oficial del proyecto: https://www.mingw-w64.org
- Puedes también descargar desde un instalador confiable como https://www.mingw-w64.org/downloads/ o el repositorio de SourceForge.
- Ejecuta el instalador
- Selecciona la arquitectura (x86_64 para sistemas de 64 bits).
- Selecciona «posix» y «seh» como opciones por defecto.
- Instálalo en una ruta sencilla como
C:\mingw-w64
.
- Configura la variable de entorno PATH
- Ve a Configuración > Sistema > Acerca de > Configuración avanzada del sistema > Variables de entorno.
- En la variable
PATH
, añade la ruta a la carpetabin
dentro de MinGW, por ejemplo:C:\mingw-w64\...\bin
.
- Verifica la instalación
- Abre una consola CMD y escribe:
gcc --version g++ --version
Si ves información sobre la versión, ¡el compilador está listo!
Opción 2: Usar Visual Studio
- Descarga Visual Studio Community Edition desde https://visualstudio.microsoft.com.
- Durante la instalación, selecciona el «Desarrollo de escritorio con C++».
- Incluye herramientas como MSVC, el depurador y el entorno de desarrollo Visual Studio IDE.
- Verifica que puedes crear proyectos C++ y compilar desde la interfaz gráfica o con
cl.exe
desde la terminal de Visual Studio.
En Linux (Ubuntu/Debian)
La mayoría de distribuciones Linux ya incluyen o facilitan la instalación de compiladores como GCC o Clang mediante el gestor de paquetes.
Instalación de GCC:
sudo apt update
sudo apt install build-essential
Esto instalará:
gcc
(compilador C)g++
(compilador C++)make
(herramienta de automatización de compilación)- otras herramientas básicas
Verificación:
gcc --version
g++ --version
En macOS
En macOS, puedes usar el compilador Clang, que forma parte de las herramientas de desarrollo de Apple.
Instalación:
- Abre la terminal.
- Ejecuta:
xcode-select --install
Esto instalará las herramientas de línea de comandos, incluyendo clang
, clang++
, make
, entre otras.
Verificación:
clang --version
clang++ --version
También puedes instalar GCC usando Homebrew:
brew install gcc
Una vez que tengas un compilador instalado, prueba con un ejemplo sencillo para comprobar que todo funciona correctamente. Para el curso utilizaremos un entorno ubuntu, por lo que los ejemplos los verás con el compilador gcc, pero si estás en otros entornos puedes utilizar clang o el que tengas.
Código en C: hola.c
En el editor de código que utilices escribe el siguiente programa
#include <stdio.h>
int main() {
printf("¡Hola, mundo desde C!\n");
return 0;
}
Compilar:
gcc holaMundo.c -o holaMundo
Ejecutar:
Para ejecutar el programa, una vez compilado y obtenido el archivo ejecutable es posible que tengas que darle permisos de ejecución con el comando chmod.
./holaMundo
Código en C++: holaMundo.cpp
Vamos a ver ahora el mismo ejemplo pero en este caso utilizando C++ en lugar de C.
#include <iostream>
int main() {
std::cout << "¡Hola, mundo desde C++!" << std::endl;
return 0;
}
Compilar:
g++ holaMundo.cpp -o holaMundo
Ejecutar:
./holaMundo
1.4 Entornos de Desarrollo (IDE y editores)
Cuando empiezas a programar en C o C++, una de las decisiones más importantes es elegir dónde escribir y ejecutar tu código. Aunque es posible trabajar con simples editores de texto como el Bloc de Notas o Vim, usar un entorno de desarrollo moderno facilita mucho el aprendizaje, la escritura y la depuración de tus programas.
Existen dos grandes categorías de herramientas que puedes usar:
- Editores de código: Ligeros, personalizables y centrados en la escritura de código.
- Entornos de Desarrollo Integrado (IDE): Aplicaciones más completas que integran edición, compilación, ejecución, plugins y depuración.
¿Por qué usar un IDE o editor especializado?
Un buen entorno de desarrollo te proporciona:
- Coloreado de sintaxis para identificar estructuras y errores.
- Autocompletado que ahorra tiempo y reduce errores tipográficos.
- Depuración paso a paso para detectar fallos en tiempo de ejecución.
- Gestión de proyectos con múltiples archivos.
- Integración con compiladores y sistemas de construcción como
make
oCMake
.
Herramientas recomendadas para programar en C y C++
1. Visual Studio Code (VS Code)
- Tipo: Editor de código extensible
- Plataformas: Windows, macOS, Linux
- Licencia: Gratuita
Descripción:
Visual Studio Code, desarrollado por Microsoft, es uno de los editores de código más populares del mundo. Aunque no es un IDE completo por defecto, puede convertirse en uno muy potente mediante extensiones.
Ventajas:
- Muy ligero y rápido.
- Personalizable mediante miles de extensiones.
- Excelente soporte para C y C++ mediante la extensión oficial de Microsoft:
C/C++ for Visual Studio Code
. - Terminal integrada.
- Compatibilidad con depuración,
CMake
, integración con Git, etc.
Instalación de extensiones recomendadas:
C/C++
(Microsoft)Code Runner
(para ejecutar código rápidamente)CMake Tools
(si trabajas con CMake)
Ideal para: Programadores que quieran un entorno flexible, moderno y multiplataforma.
2. Code::Blocks
- Tipo: IDE
- Plataformas: Windows, Linux, macOS
- Licencia: Gratuita y de código abierto
Descripción:
Code::Blocks es un IDE diseñado específicamente para C y C++, muy adecuado para principiantes. Es liviano, fácil de instalar y suele venir con compilador incluido si eliges el instalador completo (en Windows).
Ventajas:
- Interfaz simple, intuitiva.
- Viene preconfigurado con compilador en muchos casos.
- Soporte para depuración, gestión de proyectos y compilación con un solo clic.
- No requiere configuraciones complejas.
Ideal para: Estudiantes que desean una instalación rápida y un entorno simple para comenzar a escribir y ejecutar código sin preocuparse por configuraciones.
3. Dev-C++
- Tipo: IDE
- Plataformas: Windows
- Licencia: Gratuita
Descripción:
Dev-C++ es un entorno clásico para programación en C/C++ en Windows. Aunque ya no es tan moderno como otras opciones, sigue siendo muy usado por principiantes debido a su facilidad de uso.
Ventajas:
- Instalación sencilla.
- Incluye MinGW (versión de GCC para Windows).
- Interfaz directa, ideal para tareas educativas.
Desventajas:
- Proyecto poco activo, algunas versiones están desactualizadas.
- Poca flexibilidad y escasa integración con herramientas modernas.
Ideal para: Usuarios que desean algo funcional y muy simple en Windows, especialmente en entornos educativos.
4. CLion (JetBrains)
- Tipo: IDE profesional
- Plataformas: Windows, macOS, Linux
- Licencia: De pago (gratis para estudiantes)
Descripción:
CLion es un entorno de desarrollo profesional para C y C++ desarrollado por JetBrains, los creadores de otros IDEs populares como PyCharm o IntelliJ IDEA. Está especialmente pensado para desarrolladores serios que trabajan en proyectos medianos o grandes.
Ventajas:
- Asistencia inteligente al código (sugerencias, refactorización).
- Depuración avanzada.
- Soporte integrado para CMake, Makefile, Git, Docker, WSL, etc.
- Integración con Google Test, Valgrind, y otras herramientas de análisis.
Desventajas:
- Requiere máquina potente.
- Licencia de pago (aunque gratuita para estudiantes).
Ideal para: Desarrolladores avanzados, profesionales y estudiantes universitarios que buscan un entorno robusto.
5. Geany
- Tipo: Editor de código ligero / IDE básico
- Plataformas: Linux, Windows, macOS
- Licencia: Gratuita y de código abierto
Descripción:
Geany es un editor ligero con funcionalidades de IDE. Es rápido, sencillo, y puede configurarse para compilar y ejecutar código C/C++ con facilidad.
Ventajas:
- Muy bajo consumo de recursos.
- Ideal para computadoras con pocos recursos.
- Personalizable con herramientas de compilación.
Ideal para: Usuarios de Linux o equipos modestos que desean un editor ágil pero funcional.
6. Sublime Text
- Tipo: Editor de texto avanzado
- Plataformas: Windows, macOS, Linux
- Licencia: Gratuita con limitaciones / De pago
Descripción:
Sublime Text es un editor muy rápido y altamente personalizable. No es un IDE, pero mediante plugins puede adaptarse a muchos lenguajes, incluido C/C++.
Ventajas:
- Rendimiento excelente.
- Soporte de múltiples cursores, búsqueda rápida, temas, etc.
- Puede configurarse para compilar y ejecutar programas.
Ideal para: Programadores experimentados que prefieren un entorno minimalista y rápido.
Resumiendo:
Nivel | Recomendación |
---|---|
Principiante absoluto | Code::Blocks o Dev-C++ |
Intermedio / Moderno | Visual Studio Code con extensiones |
Profesional / Avanzado | CLion |
Bajo recursos / Linux | Geany |
Usuarios expertos / minimalistas | Sublime Text o Vim/Emacs |
Consejo: Lo más importante no es la herramienta, sino aprender bien el lenguaje. Comienza con una que te resulte cómoda y cambia a otras más avanzadas cuando lo necesites.
1.5. Primer programa en C: «Hola Mundo»
Aunque ya lo hemos visto anteiromente, vamos a retomar el programa de «Hola Mundo» para verlo con mayor detalle. En C se ve así:
🔍 Explicación línea por línea:
// holaMundo.c
#include <stdio.h>
int main() {
printf("¡Hola, mundo!\n");
return 0;
}
#include <stdio.h>
: Esta línea importa la biblioteca estándar de entrada y salida, necesaria para usarprintf
.int main() { ... }
: Todo programa en C comienza desde la funciónmain()
. Es el punto de entrada de cualquier programa en C.printf(...)
: Imprime el texto en la pantalla.\n
: Es un carácter especial que indica un salto de línea.return 0;
: Indica que el programa finalizó correctamente.
Primer programa en C++: «Hola Mundo»
El mismo programa escrito en C++, usando las bibliotecas y sintaxis propias de C++:
// holaMundo.cpp
#include <iostream>
int main() {
std::cout << "¡Hola, mundo!" << std::endl;
return 0;
}
Explicación línea por línea:
#include <iostream>
: Incluye la biblioteca de entrada y salida de C++.std::cout
: Es el flujo de salida estándar en C++, análogo aprintf
en C.<<
: Es el operador de inserción, que envía datos acout
.std::endl
: Agrega un salto de línea y vacía el búfer de salida.
Nota: C++ también permite usar
printf
porque es compatible con C, pero usarcout
es más propio del estilo C++.
1.6 Compilación y ejecución de programas
Para poder ejecutar un programa en C/C++, necesitamos compilarlo para que el Sistema Operativo pueda interpretarlo y ejecutarlo. Al compilar un programa en C se crea un archivo en formato binario que ya se puede ejecutar. Dependiendo del entorno en el que estemos trabajando tenemos distintas opciones, veamos algunas de ellas.
Opción 1: Desde la terminal (usando compiladores GCC o G++)
En Linux o macOS:
Guardar el archivo:
Para C: holaMundo.c
Para C++: holaMundo.cpp
Abrir una terminal y navegar al directorio donde guardaste el archivo.
Compilar el código:
gcc holaMundo.c -o holaMundo // para C
g++ holaMundo.cpp -o holaMundo // para C++
Ejecutar el programa:
Estando en el mismo directorio donde se compliño el programa ejecutamos:
./holaMundo
En Windows (con MinGW instalado):
- Abre la terminal de MinGW (o Git Bash, CMD, PowerShell).
- Usa los mismos comandos que arriba.
- Ejecuta así:
HolaMundo.exe
¿Qué pasa si tengo errores?
- Si escribiste algo mal, el compilador mostrará mensajes de error.
- Léelos con atención: te dicen el archivo, la línea, y el tipo de error.
- Corrige y vuelve a compilar.
Usar un entorno gráfico (IDE) para compilar y ejecutar
En Code::Blocks:
- Abre Code::Blocks.
- Ve a File > New > Project > Console Application.
- Elige el lenguaje (C o C++).
- Ponle un nombre al proyecto.
- Pega el código en el archivo fuente principal.
- Pulsa F9 para compilar y ejecutar.
En Visual Studio Code:
- Crea un archivo llamado
hola.c
ohola.cpp
. - Instala las extensiones necesarias si no lo has hecho:
C/C++
de MicrosoftCode Runner
(opcional)
- Abre una terminal integrada (
Ctrl + ñ
oCtrl + ``
). - Usa los comandos de compilación como si fuera la terminal normal.
Puedes configurar tareas personalizadas en VS Code para compilar automáticamente si lo deseas.
Resultado esperado
En ambos casos, al ejecutar tu programa verás en pantalla:
Hola, mundo!
Conclusión:
En este capítulo hemos hecho una breve introducción a los lenguajes C y C++, viendo sus diferencias y similitudes. Tambien hemos visto los entornos de desarrollo más populares y finalmente hemos instalado el compilador y hemos ejecutado el primer programa HolaMundo!!!. En los próximos capítulos iremos introduciéndonos en conceptos más avanzados del lenguaje.
Bibliografía del tutorial de C/C++.
- C/C++. Curso de programación. Autor: Miguel Angel Acera (Editorial: Anaya Multimedia)
- C/C++. Curso de programación. Autor: Francisco José Ceballos (Editorial: RA-MA)
- Un recorrido por C++. Autor Bjarne Stroustrup (Editorial: Anaya Multimedia)
- 115 Ejercicios resueltos de programación C++. Autor Jorge Fernando Betancourt e Inma Yolanda Polanco (Editorial: RA-MA)