Saltar al contenido
Portada » C/C++ » 1. Introducción a C y C++

1. Introducción a C y C++

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ísticaCC++
Año de creación19721983
Paradigma principalEstructuradoMultiparadigma (estructurado, POO, etc.)
Orientación a objetos❌ No✅ Sí
Tipos de datos personalizadosstructsstructs, classes, templates
Manejo de erroresCódigos de errorExcepciones (try/catch)
Entrada/salidaprintf, scanfcin, cout (con <iostream>)
BibliotecasMuy limitadaAmplia 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:

CompiladorSistemas compatiblesDescripció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/LLVMmacOS, Linux, WindowsAlternativa moderna a GCC, muy usado en macOS y herramientas como Xcode.
MSVC (Microsoft Visual C++)WindowsParte de Visual Studio. Compilador optimizado para entornos Windows.
TDM-GCC / MinGW-w64WindowsVersió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)

  1. Descarga MinGW-w64
  2. 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.
  3. 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 carpeta bin dentro de MinGW, por ejemplo:
      C:\mingw-w64\...\bin.
  4. 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

  1. Descarga Visual Studio Community Edition desde https://visualstudio.microsoft.com.
  2. Durante la instalación, selecciona el «Desarrollo de escritorio con C++».
  3. Incluye herramientas como MSVC, el depurador y el entorno de desarrollo Visual Studio IDE.
  4. 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:

  1. Abre la terminal.
  2. 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 o CMake.

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:

NivelRecomendación
Principiante absolutoCode::Blocks o Dev-C++
Intermedio / ModernoVisual Studio Code con extensiones
Profesional / AvanzadoCLion
Bajo recursos / LinuxGeany
Usuarios expertos / minimalistasSublime 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 usar printf.
  • int main() { ... }: Todo programa en C comienza desde la función main(). 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 a printf en C.
  • <<: Es el operador de inserción, que envía datos a cout.
  • 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 usar cout 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):

  1. Abre la terminal de MinGW (o Git Bash, CMD, PowerShell).
  2. Usa los mismos comandos que arriba.
  3. 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:

  1. Abre Code::Blocks.
  2. Ve a File > New > Project > Console Application.
  3. Elige el lenguaje (C o C++).
  4. Ponle un nombre al proyecto.
  5. Pega el código en el archivo fuente principal.
  6. Pulsa F9 para compilar y ejecutar.

En Visual Studio Code:

  1. Crea un archivo llamado hola.c o hola.cpp.
  2. Instala las extensiones necesarias si no lo has hecho:
    • C/C++ de Microsoft
    • Code Runner (opcional)
  3. Abre una terminal integrada (Ctrl + ñ o Ctrl + `` ).
  4. 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.

Logo C++

Bibliografía del tutorial de C/C++.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *