Entorno de Desarrollo

Para la programación competitiva en C++

Por Ariel Parra

¿Qué se necesita para la programación competitiva?

graph TD; A[Editor de Textos] --> B[Compilador] B -->|Código compilado| C[Terminal] D[IDE] --> B C -->|Ejecución| E[Resultados] E -->|validación| F[Juez Virtual]
CPC Γα=Ω5

Codeforces

está es la plataforma que estaremos usando para el curso, por lo que ocupamos crear una cuenta a través de https://codeforces.com/register. La razón por la cual usamos está plataforma es que tiene múltiples problemas de distintas categorías y dificultades, donde al subir cada problema se evaluara con un juez virtual (virtual judge) que juzgara si nuestro código soluciona el problema o en que caso/s no lo cumple.

Para el acompañamiento del curso, se puede recurrir al Junior Training Sheet V7.0, donde hay múltiples problemas ordenados por dificultad con links directos a codeforces.

CPC Γα=Ω5

IDEs

Un IDE (Integrated Development Environment) es una aplicación que combina múltiples herramientas para el desarrollo de software en una sola interfaz. Generalmente, un IDE cuenta con las siguientes características:

  • Editor de código: editor de texto que ayuda a escribir el código de software con funciones como el resaltado de la sintaxis con indicaciones visuales, el relleno automático específico para el lenguaje y la comprobación de errores a medida que se escribe el código.

  • Automatización de compilaciones: herramientas que automatizan las tareas sencillas y repetitivas como parte de la creación de una compilación local del software para que use el desarrollador, como la compilación del código fuente de la computadora en código binario, el empaquetado de ese código y la ejecución de pruebas automatizadas.

  • Depurador (Debuger): programa que sirve para probar otros programas y mostrar la ubicación de un error en el código original de forma gráfica.

CPC Γα=Ω5

DEV-C++

Este es el IDE favorito de los profesores. El principal problema es que la versión original incluye una versión antigua de GCC (4.9.2) aparte solo estar disponible en Windows.

Si se quiere usar este IDE, mi recomendación es usar el DEV-C++ "Rojo" (embarcadero) ya que este incluye un compilador más moderno (TDM-GCC 9.2.0), pero aun así solo sigue estando disponible en Windows.

#c

#c

CPC Γα=Ω5

Code::Blocks

Este es uno de los IDEs más populares entre las competencias de programación, debido a que es de código abierto, no pesa mucho, incluye compilador para Windows y ser compatible con Linux y MacOS.

Si lo descargas para Windows, descarga la versión que diga 'mingw' para que incluya el compilador

#c

CPC Γα=Ω5

JetBrains CLion

Este es el IDE de C++ por excelencia en la industria, aunque sea propietario es usado por múltiples empresas como Google, Nasa, BMW, etc.

Este IDE es expansible a través de plugins, todas las herramientas necesarias para desarrollar en C++ y aparte es multiplataforma siendo compatible en Windows, MacOS y Linux.

Las desventajas serian su amplio uso de recursos y su elevado costo anual de más de $100 USD.

Pero este es gratis mientras seas un estudiante y al egresar tendrás un 40% de descuento!

#c

CPC Γα=Ω5

VScode

No confundir con Visual Studio . VScode es el editor por excelencia del Club, esto debido a ser de código abierto, multiplataforma al estar desarrollado con Electron (básicamente es una app web), tener editor en línea, su implementación con git, y principalmente por su amplio catalogo de extensiones con los cuales podemos desarrollar en cualquier lenguaje y de múltiples maneras. La única desventaja es que no incluye el compilador de C++, por lo que tendremos que instalarlo manualmente.
Para instalarlo podemos hacerlo desde su página web o usando el gestor de paquetes integrado en Windows winget a través de una terminal (Powershell ), con el comando:

winget install -e --id  Microsoft.VisualStudioCode --override '/SILENT /mergetasks="!runcode,addcontextmenufiles,addcontextmenufolders"'
CPC Γα=Ω5

Extensiones para VScode

  • C/C++ está es la extensión necesaria para poder correr código de C++ dentro de VScode
  • code runner está es una extensión opcional que acelera el proceso de compilación en VScode
  • Error lens está extensión nos muestra los errores que va dando el IDE o el compilador.
  • Prettier está extensión le da formato a nuestro código al presionar la combinación de teclas shift + alt + F
  • Competitive Programming Helper está 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

Temas recomendados:

Material Icon Theme, nord, catppuccin, GruvBox, Monokai Pro o dracula

CPC Γα=Ω5

Instalar el compilador de C++ en Windows

Para otros sistemas o dispositivos, visite el blog: https://cpc-gallos.github.io/blog/Entorno_Desarrollo/

  1. Descargar el gestor de paquetes msys2 desde su página oficial www.msys2.org/ o desde el gestor de paquetes integrado en Windows winget a través de una terminal (Powershell ), con el comando:
winget install -e --id MSYS2.MSYS2
  1. Ya instalado, abrimos la terminal de MSYS2 UCRT64 y ejecutamos este comando:
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
CPC Γα=Ω5

Acepta presionando Enter 2 veces.

#c

  1. 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.
CPC Γα=Ω5

CPC Γα=Ω5
  1. ya instalada la extensión del compilador C/C++ en VScode iremos hacia las configuraciones de la extensión.

#c

  1. Ahi buscamos la opción que diga "compiler path", la cual nos mandara nos manda al archivo settings.json

#c

CPC Γα=Ω5
  1. Agregaremos estas lineas a los corchetes internos, teniendo cuidado de no borrar otras configuraciones.

    "C_Cpp.default.compilerPath": "C:/msys64/ucrt64/bin",
    "C_Cpp.clang_format_path": "C:/msys64/ucrt64/bin",
    "code-runner.executorMap": {
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -g && $dir$fileNameWithoutExt"
    }

  1. 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 o con la extensión code runner presionando las teclas ctrl + alt + N.
CPC Γα=Ω5

Integrar Codeforces con VScode

  1. Primero en VScode tenemos que tener la extensión Competitive Programming Helper (CPH)

  2. 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

  3. Para firefox: Agrega las extensiones: competitive companion y CPH Submit

  4. Para navegadores basados en chromium ( Google Chrome, Microsft Edge, Opera, Brave, etc.): Agrega las extensiones: competitive companion y CPH Submit

Para usarlas, ten tu sesión de codeforces activa y también ten abierto VScode, cuando abras un problema en codeforces haz click en , después cámbiate a VScode donde veras unas opciones donde eligieras cpp, y listo podrás probar y publicar tu código desde vscode.

CPC Γα=Ω5

Git y Github

Git (git-scm) es una herramienta de código abierto para el control de versión distribuido mientras que GitHub es una plataforma y servicio basado en la nube, propiedad de Microsoft, para el desarrollo de software y el control de versiones utilizando Git, básicamente un servidor donde almacenas tus proyectos y los controlas con Git.

En el club recomendamos usar git para guardar tus códigos en GitHub, esto es útil no solo para las actividades del club, sino que podrás usar estas habilidades para tus próximos proyectos escolares o profesionales.

CPC Γα=Ω5

Para conectar Git con Github

  1. Primero crearemos una cuenta de GitHub en https://github.com/signup
  2. Después creamos un repositorio (proyecto) en https://github.com/new
  3. Luego descargamos git desde la página oficial https://git-scm.com/downloads o con el gestor de paquetes integrado en Windows winget a través de una terminal, con el comando:
winget install -e --id Git.Git
  1. Si Windows no está en la última versión, comprobamos que está instalado el cliente de OpenSSH.
  2. En una terminal (Powershell o git-bash ) creamos nuestro usuario local de git con los comandos:
git config --global user.name "Usuario"
git config --global user.email "correo@ejemplo.com" 
CPC Γα=Ω5
  1. comprobamos nuestros datos con el comando:
 git config --list
  1. En la misma terminal creamos una llave pública de ssh:
ssh-keygen -t ed25519 -C "correo@ejemplo.com"
  1. Copiamos los datos del archivo generado en C:\Users\%USERNAME%\.ssh\id_ed25519.pub (en Windows tiene icono de Microsoft publisher y se puede abrir con el bloc de notas) y lo conectamos con nuestra cuenta de github através de https://github.com/settings/ssh/new, dándole un nombre (puede ser el modelo de tu computadora) y pegando la los datos copiados (llave).
CPC Γα=Ω5
  1. 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\'

git clone git@github.com:"Usuario de GitHub"/"Proyecto".git
  1. Una vez ya tengamos conectado nuestra cuenta y hallamos descargado el proyecto, los tres comandos principales de git que usaremos (ya están integrados en VScode ) son:
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
CPC Γα=Ω5

Documentación del lenguaje C++

  • Tabla de valores ASCII al trabajar con char y string es útil ver está tabla
  • Microsoft Learn aunque está enfocado en su compilador MSVC tiene información muy valiosa sobre el lenguaje
  • cplusplus vienen clases por librería y ejemplos de cada una de las funciones
  • CPPRefernece muy similar a cplusplus
  • W3school tutoriales interactivos para aprender C++
  • GeeksForGeeks una de las mejores comunidades de programadores proporcionan estos blogs.
  • CPPbyExample ejemplos muy útiles de varios temas de C++
  • GNU libstdc++ está página es muy técnica, pero te muestra las implementaciones de la STL de C++
CPC Γα=Ω5

Referencias

CPC Γα=Ω5

SCM: Source code management