Entorno de Desarrollo
Para la programación competitiva en C++
Tabla de Contenidos:
- Conectar Git con GitHub
- Compiladores en línea (Online)
- IDEs en la nube (Cloud)
- VScode IDE
- Instalar el compilador en Windows
- Instalar el compilador en MacOS
- Entorno de desarrollo en móviles
- Entorno de desarrollo en Android
- Entorno de desarrollo en iOS/iPadOS
- Referencias
No tenemos guías específicas de Linux porque varía según la distribución, pero usualmente tendrás menos problemas en sistemas operativos basados en Linux. Ante cualquier duda, puedes contactar a Ariel Parra.
Conectar Git con GitHub
Recomendamos guardar todos tus proyectos y códigos en GitHub como portafolio de evidencias.
- Primero crearemos una cuenta de GitHub https://github.com/signup
- Después creamos un repositorio (proyecto) en https://github.com/new
- Luego descargamos git desde la página oficial https://git-scm.com/downloads o con el gestor de paquetes de cada sistema operativo
- En Windows en
Powershell con el comando:1
winget update ; winget install -e --id Git.Git
- En MacOs con el gestor de paquetes
homebrew:
1
brew update && brew install git
- En Android con la terminal termux y el comando:
1
pkg update && pkg install git
- En iOS/iPadOS con la terminal
ish y los comandos:1 2 3
apk update apk add git openssh ssh-keygen -A
- En Windows en
- Si se esta en Windows, revisa qué este actualizado, si no esta en la ultima versión, comprobamos que esta instalado el cliente de OpenSSH.
- En una terminal creamos nuestro usuario local de git (es opcional que los datos sean iguales a los de GitHub) con los comandos:
1
git config --global user.name "Usuario"
1
git config --global user.email "correo@ejemplo.com"
- comprobamos nuestros datos con el comando:
1
git config --list - En la misma terminal creamos una llave pública de ssh:
1
ssh-keygen -t ed25519 -C "correo@ejemplo.com"
- Copiamos los datos del archivo generado en Windows en la ruta:
C:\Users\%USERNAME%\.ssh\id_ed25519.pub(para Windows tiene el icono de Microsoft Publishery se puede abrir con el bloc de notas), para los demás sistemas operativos suele estar en
~/.ssh/id_ed25519.pub, y lo conectamos con nuestra cuenta de GitHub a través de https://github.com/settings/ssh/new, dándole un nombre (puede ser el modelo de tu dispositivo) y pegando los datos copiados (llave). - Por último descargamos nuestro repositorio, en una terminal navega hacia tu carpeta de destino, yo recomiendo la carpeta de Documentos (Documents) o Escritorio (Desktop).
Mucho ojo 👁️ en Windows, estas carpetas suelen estar bajo
C:\Users\%USERNAME%\One Drive\
1
git clone git@github.com:"Usuario de GitHub"/"Proyecto".git
Una vez ya tengamos conectada nuestra cuenta y hayamos descargado el proyecto, los tres comandos principales de git que usaremos en la terminal son:
1
2
3
git commit -m "mensaje del commit" # cambios locales a "pushear"
git push # pusheas los cambios junto con el commit hacia GitHub
git pull # descargas los cambios actuales desde GitHub
Compiladores en línea (Online)
La ventaja de usar un IDE en línea es la disponibilidad en cualquier dispositivo, la desventaja evidentemente es que al no tener conexión a internet no puedes utilizarlo aparte de que en algunos deberás guardar tus códigos manualmente en algún otro medio o plataforma.
- USACO IDE es un IDE de colaboración en tiempo real creado por el USA Computing Olympiad (USACO). Recomendado por el Club
- Omega Up es un IDE creado por el Omega Up.
- onlinegdb este es el compilador en línea recomendado por el club, debido a que permite guardar los códigos al iniciar sesión junto con la compatibilidad completa con nuestra plantilla de C++
- tio.run Compilador con soporte para múltiples versiones de librerías y estándares de C++ y debug y asi.
- Programiz es un compilador en línea para acompañar sus cursos de programación
- cpp.sh la ventaja de este editor es poder comparar las diferencias entre distintos estándares de C++ y distintos niveles de optimización del compilador, lo único malo es que no permite directivas
#pragmani la librería<bits/stdc++.h> - pythontutor este es un muy buen debuger en línea ya que contiene representaciones gráficas para visualizar nuestros códigos y también permite el uso de la librería
<bits/stdc++.h>, lo malo es que no tiene entrada de usuario (no permitestd::cin), junto con otras cosas incompatibles
IDEs en la nube (Cloud)
- Replit es una plataforma para colaborar en tiempo real con código, la desventaja es que el plan gratuito solo te permite tener 3 proyectos públicos
- Google Colab es un servicio totalmente gratuito por parte de Google para usar Jupyter Notebooks, para ejecutar C++ tendremos que usar el comando
%%writefilepara escribir hacia archivos, como lo sería el archivoin.txtdonde pondremos todas las entradas del programa (necesario para la funciónfreopen) y el archivo.cppel cual compilaremos con el comando!g++y ejecutaremos de esta manera!./a.out
- Github codespaces es VScode dentro de un servidor de Linux en la nube, compatible con todas las extensiones que desees.
- GitHub Free 15 GB de espacio al mes con 120 horas
- GitHub Pro 20 GB de espacio al mes con 180 horas
Recuerda que tienes acceso de forma gratuita a GitHub Pro por ser estudiante
- cs50.dev es GitHub codespaces gratuito y sin limite de tiempo, hosteado por la universidad de Harvard para el acompañamiento de sus cursos, este es el editor en la nube recomendado por el club.
cs50.dev también es de mucha utilidad para correr otros IDEs en la nube como lo es el caso de Rstudio para R
VScode IDE
No confundir con Visual Studio (el moradito). VScode (el azulito) es el editor recomendado por el Club (quizas solamente quitando lo de github copilot y cosas de IA), esto debido principalmente por su amplio catalogo de extensiones.
Nota: A VS Code le falta el compilador de C++ integrado, por lo que es necesario instalar el compilador por separado y vincularlo al editor de código. Consulta cómo instalar el compilador en Windows o instalar el compilador en macOS (Para los que usan linux no se preocupen usualmente ya viene con el compilador preinstalado en su sistema).
Para instalarlo podemos hacerlo desde su página web o usando el gestor de paquetes
- En Windows en
Powershell con el comando:1
winget update; winget install -e --id Microsoft.VisualStudioCode --override '/SILENT /mergetasks="!runcode,addcontextmenufiles,addcontextmenufolders"'
Recuerda que en Windows, las carpetas de Escritorio,Descargas y Documentos suelen estar bajo
C:\Users\%USERNAME%\One Drive\
- En MacOs con el gestor de paquetes
homebrew:
1
brew install --cask visual-studio-code
- En Android con la terminal termux hay dos opciones:
- Usar vscode-server (aplicación en línea similar a https://vscode.dev/, la cual tiene extensiones limitadas) que será accesible en cualquier navegador del dispositivo en las urls localhost:8080 o 127.0.0.1:8080, se instala con los comandos:
1 2
pkg update && pkg install tur-repo code-server code-server # este es el comando para ejecutar el servidor de vscode
- con los escritorios nativos con los comandos:
1
pkg update && pkg install tur-repo code-oss
- Usar vscode-server (aplicación en línea similar a https://vscode.dev/, la cual tiene extensiones limitadas) que será accesible en cualquier navegador del dispositivo en las urls localhost:8080 o 127.0.0.1:8080, se instala con los comandos:
- En iOS/iPadOS no se puede a menos que se use un escritorio emulado
Extensiones para VScode
C/C++ esta es la extensión necesaria para poder correr código de C++ dentro de VScode
Error lens esta extensión nos muestra los errores que va dando el IDE o el compilador.
Competitive Programming Helper esta es la extensión para poder probar los códigos antes de publicar y también podremos subir directamente los códigos a Codeforces de una manera muy rápida.
Tip: Recuerda configurar VS Code para ejecutar casos de prueba locales y enviar soluciones directamente a Codeforces siguiendo la sección Integrar Codeforces con VS Code.
Temas recomendados para VScode:
Integrar Codeforces con VScode
- Primero en VScode tenemos que tener la extensión Competitive Programming Helper (CPH), la nueva extensión del club de la universidad de Purdue Competitive Programmers Union (CPU), tambien el ICIE (with g++ in Linux), o tambien CPH NG
- Tambien recomendamos alguna de estas extensiones para facilitar el analisis de BigO LiveComplexity: Real-time Big-O Analysis o BigO-me - Code Complexity Analyzer
- Después cambiaremos el lenguaje por defecto a C++ y agregaremos la ruta (ubicación) de la plantilla del club a la configuración de la extensión Competitive Programming Helper (CPH) en VScode
Para firefox: Agrega las extensiones: competitive companion y CPH Submit
Para navegadores basados en chromium ( Google Chrome, Microsft Edge, Opera, Brave, etc.): Agrega las extensiones: competitive companion y CPH Submit
CPH Submit puede no funcionar del todo bien en navegadores basados en Chromium, por lo que pueden intentar descargar una versión más antigua o usar Firefox.
Para usarlas, ten tu sesión de Codeforces activa y también ten abierto VScode, cuando abras un problema en Codeforces haz clic en la extensión de competitive companion (el círculo verde con una cruz), después cámbiate a VScode donde verás unas opciones donde elegirás cpp, y listo podrás probar y publicar tu código desde VS Code.
Instalar el compilador en Windows
- Primero tenemos que descargar el gestor de paquetes
msys2desde su página oficial www.msys2.org/ o desde el gestor de paquetes integrado en Windowswingeta través de una terminal (Powershell
), con el comando:
1
winget update ; winget install -e --id MSYS2.MSYS2
- Ya instalado, abrimos la terminal de MSYS2 UCRT64
, copiamos (y pegamos con SHIFT + INSERT) y ejecutamos el siguiente comando (acepta presionandoEnter2 veces):
1
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
La descarga puede fallar en la redes institucionales (RIUAA en el caso de la UAA). Si ocurre un fallo, intenta de nuevo o prueba en otra red Wi-Fi.
- Ya terminada la instalación del compilador, procederemos a agregar el compilador al
path. Para ello, buscamos alguna de estas palabras clave: “variables”, “path”, “variables del sistema” en el buscador de Windows y abriremos la aplicación con icono de una computadora con una palomita
, allí abriremos las variables y editaremos el path agregando la dirección: C:\msys64\ucrt64\bin. (en la segunda ventana recuerda seleccionar la línea que dice “Path” antes de hacer clic en “Edit”)
C:\msys64\ucrt64\bin
Instalar el compilador en VScode de Windows (Opción 1)
- Instalar la extensión C/C++ en VScode.
- Después presionaremos
f1para abrir el “command palette” y escribe “walk”,
- Entonces al darle
entera la opción “Welcome: Open Walkthrough…“, nos aparecerán varias opciones de las cuales elegiremos la opción que mencione C/C++
- Al darle
entera esa opción nos aparecerá esta pantalla donde en la sección que dice “Setup your C++ Environment” deberemos darle clic al botón azul que dice “Select My Default Compiler”, esto desplegará un menú en el Command Palette donde de nuevo deberemos elegir la opción que dice “use g++.exe”
- Esto causará que se abra el explorador de archivos de Windows donde deberemos navegar hacia la ruta
C:/msys64/ucrt64/biny elegir el programag++.exe
- Y listo. Con esto ya podremos compilar y ejecutar el código dentro de VScode dándole clic al símbolo de reproducir en la parte superior derecha del editor, si hubiera algún problema intentar instalar el compilador con el segundo método aquí abajo.
Instalar el compilador en VScode de Windows (Opción 2)
- Ya instalada la extensión C/C++ en VScode iremos hacia las configuraciones de la extensión.
- Ahí buscamos la opción que diga “compiler path”, la cual nos manda al archivo
settings.json:
- Agregaremos estas líneas a los corchetes internos, teniendo cuidado de no borrar otras configuraciones si existieran (quitar los
{}si es que existen o se quedaran sueltas).1 2 3 4
{ "C_Cpp.default.compilerPath": "C:/msys64/ucrt64/bin", "C_Cpp.clang_format_path": "C:/msys64/ucrt64/bin" }
- Con esto ya podremos compilar y ejecutar el código dentro de VScode dándole click al símbolo de reproducir en la parte superior derecha del editor
Ultima opción para solucionar cualquier error: A veces al abrir una carpeta o proyecto, el compilador no detectará la librería de
<bits/stdc++.h>, para solucionar esto, presionaremosf1para abrir el “command palette” y dentro de “C/C++: Edit Configurations (UI)” pondremos de nuevo el “Compiler Path”, pero ahora incluyendo el compilador g++:C:/msys64/ucrt64/bin/g++.exe
Instalar el compilador en MacOS
Las Macs con chips M1, M2 o M3 usan la arquitectura ARM. Si ves el error
Bad CPU type in executable (os error 86), instala Rosetta con:
1softwareupdate --install-rosetta
Con GNU gcc/g++
Opción 1 - Para MacOS >= 13 (Ventura), con Homebrew
- Primero, si no lo tenemos ya instalado, procedemos a instalar el gestor de paquetes de la comunidad para MacOs
homebrew abriendo una terminal y ejecutando el comando, para después dar varios enters:
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- después actualizamos los repositorios e instalamos el compilador gcc (el cual incluye g++ y la libreria
<bits/stdc++.h>)1 2 3
brew analytics off # opcional, desactiva la telemetría brew update brew install gcc --force-bottle
si sale el mensaje
Error: --force-bottle passed but gcc has no bottlesigue la opción 2 con Macports - luego quitamos el compilador g++ ligado a clang, para poder agregar el g++ ligado a GNU
1 2
sudo rm /usr/local/bin/g++ sudo ln -s $(ls /usr/local/bin/g++-*) /usr/local/bin/g++
- Al final tenemos que recargar la terminal y/o Vscode, para ver reflejados los cambios
Opción 2 - Para MacOS < 13 (Monterey y anteriores), con MacPorts
- Primero, si no lo tenemos ya instalado, procedemos a instalar Herramientas para desarrolladores de Apple ejecutando el siguiente comando en una terminal:
1
xcode-select --install - ahora instalamos el gestor de paquetes
MacPorts descargando el
.dmgy siguiendo las indicaciones. - después actualizamos los repositorios e instalamos el compilador gcc (el cual incluye g++ y la libreria
<bits/stdc++.h>)1 2
sudo port selfupdate sudo port install gcc14
- luego quitamos el compilador g++ ligado a clang, para poder agregar el g++ ligado a GNU
1 2
sudo rm /usr/local/bin/g++ sudo ln -s $(ls /opt/local/bin/g++-*) /usr/local/bin/g++
- Al final tenemos que recargar la terminal y/o Vscode, para ver reflejados los cambios
con Clang (Xcode)
- Este es el compilador por defecto en
Xcode y para instalar Clang (LLVM) ejecutaremos este comando en la
terminal:1
xcode-select --install - Clang no incluye la librería
<bits/stdc++>, necesaria para usar la plantilla del club, por lo que tendremos que instalarla manualmente con los siguientes comandos:1 2 3 4
sudo mkdir -p /usr/local/include/bits sudo touch /usr/local/include/bits/stdc++.h echo '#define _GLIBCXX_HOSTED 1' | sudo tee /usr/local/include/bits/stdc++.h > /dev/null curl -sS https://raw.githubusercontent.com/gcc-mirror/gcc/master/libstdc%2B%2B-v3/include/precompiled/stdc%2B%2B.h | sudo tee -a /usr/local/include/bits/stdc++.h > /dev/null
Recuerda comentar o eliminar las líneas
#pragma GCC optimize("Ofast,unroll-loops")y#pragma GCC target("avx2")de la plantilla de C++, debido a qué estas no son compatibles con Clang y darán un error de compilación!
Entorno de desarrollo en móviles
En ambos casos recomendamos más el uso de IDEs en la nube en especial el de la página https://cs50.dev/ el cual a través de un navegador como Safari, Firefox o Chromium puedes agregar un acceso directo a tus aplicaciones.
Entorno de desarrollo en Android
Para un mejor desempeño al programar, recomiendo utilizar un teclado y/o mouse externo, ya sean por Bluetooth o por USB con un adaptador OTG o con un adaptador a USB C.
terminal nativa + editor de código
En Android 12 y posteriores, suele haber el error “Process completed (signal 9)” dentro de termux. Para solucionarlo, favor de ir a este blog por Andronix
Termux es la terminal nativa de Android, está disponible en la Play Store, pero suele estar desactualizada por lo que recomiendo descargarla directamente en GitHub o a través de la tienda open-source F-Droid
Dentro de la terminal para poder instalar el compilador ejecutamos los siguientes comandos:
1
2
pkg update && pkg upgrade
pkg install build-essential
Para compilar un archivo de C++, primero navegamos a la carpeta donde este el archivo, recomiendo guardarlos en la carpeta de descargas del dispositivo (downloads), después compilamos el archivo con la extensión .cpp y para ejecutar el archivo resultante lo hacemos con ./a.out:
1
2
3
cd ~/storage/downloads/
g++ archivo.cpp
./a.out
Para los editores de código el club recomienda cualquiera de estas tres opciones:
Squircle CE: disponible en la
PlayStore o en fdroid
Acode: disponible en la
PlayStore o en fdroid
TermuC: disponible en fdroid
También recomiendo usar el explorador de archivos por defecto en Android “files” ya que este te permite acceder fácilmente a los archivos dentro de termux, si no se tiene esta aplicación instalada se puede instalar esta versión similar: files por marcapps
escritorios nativos
Estos métodos son recomendados para dispositivos de gama alta o recientes y para usuarios más avanzados, donde para code-oss (VScode del tur-repo en termux) tendrás que instalar extensiones manualmente.
- farmerbb taskbar similar a samsung dex donde permite tener ventanas flotantes
- Smart Dock es un escritorio similar al que tiene chromeOS.

- DroidMaster usa escritorios de linux como xfce4, se ocupa instalar termux-x11 y seguir la guía de instalación desde su GitHub

Entorno de desarrollo en iOS/iPadOS
Para un mejor desempeño al programar, recomiendo utilizar un teclado y/o mouse externo, ya sean por Bluetooth o por USB con un adaptador/dongle Lightning o con un adaptador/dongle a USB C.
terminal emulada + editor de código
iOS no tiene una terminal nativa sin jailbreak, por lo qué la mejor opción es usar la terminal emulada:
ish con la que podremos compilar nuestros códigos de forma local.
Para descargar el compilador, dentro de ish ejecutaremos los siguientes comandos:
1
2
apk update && apk upgrade
apk add build-base
para compilar código es tan fácil como agregar los archivos .cpp a la carpeta root desde el explorador de archivos de iOS (Files) dentro de la carpeta de iSH y ejecutarlos con ./a.out
1
2
g++ archivo.cpp
./a.out
Para el editor de código el club recomienda:
escritorio emulado
- Esto se hace a través de
UTM SE y es recomendado especialmente para iPads, ya que la aplicación corre algo lento debido a que es emulado, pero para un mejor rendimiento recomiendo usar Debian 11 (LXDE) y para instalar VScode recomiendo seguir esta guía oficial
Se puede llegar a un mejor rendimiento usando un tipo de paravirtualización con SPICE y JIT con TCG, pero requiere un conocimiento más avanzado y seguir más pasos.
Referencias
- Coder. (s.f). Termux. Recuperado de https://coder.com/docs/code-server/termux
- GitHub. (s.f.). About billing for GitHub Codespaces. Recuperado de https://docs.github.com/en/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces
- Moin, S. (2019). How to include bits/stdc++.h header file on macOS. Recuperado de https://codeforces.com/blog/entry/70957
- Replit. (s.f). Build, deploy, and scale at any stage of growth. Recuperado de https://replit.com/pricing
- Visual Studio Code. (s.f.). Installing MinGW to build C++ Code on Windows. Recuperado de https://www.youtube.com/watch?v=oC69vlWofJQ













