Skip to Content

Ejecutar código en local

Si se está empezando, es más fácil comenzar ejecutando código en línea y dejar lo local para después. Hay más información sobre ejecutar código en línea aquí.

Recursos
FuenteRecursoNotas
IOI2017 Contest Environment

como referencia, software que se puede usar en la IOI

Editores de código vs IDEs

Primero hay que decidir si usar un editor de código como Sublime Text  o un entorno de desarrollo integrado (IDE)  como Visual Studio . Un IDE ofrece muchas funcionalidades más allá de un editor de código, aunque como la mayoría no se necesitan para programación competitiva, un editor solo puede alcanzar. Más información 

Usar un IDE/editor

Si hasta ahora solo se ejecutó código en línea, lo más fácil es empezar instalando Visual Studio Code. ¡Avisen si hay problemas con este proceso!

Recursos
FuenteRecursoNotas
MicrosoftVisual Studio Code

Véase PAPS 2.1 y la documentación  para instrucciones de configuración de C++.

JetbrainsCLion

Gratis para uso no comercial.

GeanyGeany

Liviano, se usa con frecuencia en la IOI.

Code::BlocksCode::Blocks

Windows y Linux. Al parecer  fue inestable en la IOI.

AppleXCode

Solo Mac.

Puede ser útil usar un IDE de Java para aprovechar las potentes funcionalidades de depuración de Java.

Recursos
FuenteRecursoNotas
JetBrainsIntelliJ IDEA Community

gratis

Eclipse FoundationEclipse

gratis

King's College LondonBlueJ

gratis

Windows

Python viene con un programa, conocido como IDLE (Integrated Development and Learning Environment), que permite escribir y ejecutar código Python. Soporta muchas funcionalidades, como resaltado de sintaxis e indentación automática, que uno esperaría de un editor de código.

Como alternativa, se puede instalar software de edición como PyCharm o VSCode.

Linux

Se pueden usar editores de terminal integrados, como vim y nano. También se puede instalar software de edición como VSCode. Si no se sabe cómo salir, ver este  enlace.

Usar la línea de comandos

Como alternativa, se puede editar el código con un editor a elección y ejecutar los programas de C++ por la línea de comandos (p. ej. Terminal en Mac). Véase este módulo para información sobre instalar, compilar y ejecutar C++ desde la línea de comandos.

Recursos
FuenteRecursoNotas
Sublime Text 4

Rápido, liviano, fácil de usar. Período de evaluación gratuito ilimitado, aunque pide repetidamente comprar una licencia.

Vim

Editor de texto clásico, suele venir preinstalado en Linux. Véase también Neovim, MacVim. Probablemente la forma más fácil de imprimir código con resaltado de sintaxis en Mac; véase este post .

Notas de Sublime Text (Ben)

Prefiero Sublime Text porque abre al instante, es simple de usar y es agradable a la vista.

Notas:

  • Compilo y ejecuto usando Terminal en lugar de construir desde dentro de Sublime Text.
  • Prefiero el esquema de color Mariana en lugar del predeterminado.
    • Desde la paleta de comandos (Cmd-Shift-P), seguir UI: Select Color Scheme -> Mariana
  • subl symlink
    • Usar /usr/local/bin/subl en lugar de ~/bin/subl me funcionó en OS X Mojave.
  • No es demasiado difícil escribir comandos propios  en Python.

Los linters resaltan errores y warnings de compilación. El último de los paquetes de abajo es más rápido y ofrece muchas funcionalidades además del linting, aunque solo soporta clang (discusión ).

  • Sublime Linter (GCC) 

    • Para personalizar flags de compilación, abrir Preferences: SublimeLinter Settings desde la paleta de comandos.

    • Ejemplo de configuración:

      // SublimeLinter Settings - User { "linters": { "g++": { // https://packagecontrol.io/packages/SublimeLinter-gcc "disable": false, "executable": ["g++-11"], "args": ["-DLOCAL", "-std=c++17", "-O2", "-Wall", "-Wextra", "-Wshadow", "-Wconversion", "-Wfloat-equal", "-Wduplicated-cond", "-Wlogical-op"], "I": [], "excludes": [], }, }, }

      sublime

  • LSP 

    • Seguir las instrucciones aquí .

    • Ejemplo de compile_flags.txt:

      -DLOCAL -std=c++17 -O2 -Wall -Wextra -Wshadow -Wconversion -Wfloat-equal -Wduplicated-cond -Wlogical-op -Wno-unused-const-variable -Wno-sign-conversion

      sublime

    • Se puede ver a Neal Wu usando este paquete aquí .

Incluir <bits/stdc++.h>

Si se instaló g++ como se describe aquí, se puede usar #include <bits/stdc++.h> en lugar de incluir bibliotecas por separado.

Recursos
FuenteRecursoNotas
CPH1.1 - C++ Code Template
SOHow does #include <bits/stdc++.h> work in C++?
GFG<bits/stdc++.h>

Uso

Esto funciona con GCC . Sin embargo, Mac OS X usa Clang  mientras que Windows usa Microsoft Visual C++ (MSVC)  por defecto. <bits/stdc++.h> no es un archivo de cabecera estándar, así que no funciona con los dos últimos. Esta es una de las razones por las que no se debería usar <bits/stdc++.h> fuera de la programación competitiva.

Usar <bits/stdc++.h> sin instalar g++

Si se instaló Clang en Mac, se puede descargar stdc++.h de aquí  y moverlo a una carpeta llamada bits que esté en el mismo directorio que el resto de los archivos de cabecera de C++.

Recursos
FuenteRecursoNotas
SOHow can I include <bits/stdc++.h> in XCode?

soluciones que pueden o no funcionar

Precompilar <bits/stdc++.h>

Incluir <bits/stdc++.h> puede ralentizar bastante la compilación. Este truco suele bajar el tiempo de compilación a menos de un segundo.

Recursos
FuenteRecursoNotas
CFSpeed up g++ Compile Time
  1. Averiguar dónde está bits/stdc++.h en la máquina. Para eso, compilar el archivo C++ file.cpp que incluye bits/stdc++.h con el siguiente comando.

    g++ -H file.cpp

    Esto genera una lista de bibliotecas incluidas. Debería verse una ruta de la forma /path_to/bits/stdc++.h cerca del tope de la lista.

  2. Precompilar la cabecera:

    g++ -add-flags-here /path_to/bits/stdc++.h

    donde -add-flags-here incluye los flags de compilación que se usan normalmente (p. ej. -std=c++17 -O2)

  3. Recompilar el archivo C++. Debería ser más rápido esta vez porque se usará la cabecera precompilada.

    g++ -add-flags-here -Winvalid-pch file.cpp

    El -Winvalid-pch avisará si la cabecera precompilada no se usa. Por ejemplo, si se precompiló stdc++.h con -std=c++17 pero se compiló el programa C++ con -std=c++11 -Winvalid-pch, se obtendría un warning como el siguiente:

    file.cpp:1:25: warning: bits/stdc++.h.gch: not used because `__cpp_nontype_template_parameter_auto' not defined [-Winvalid-pch] 1 | #include "bits/stdc++.h" | ^

Instalación

Linux

Primero se puede comprobar si Java ya está instalado ejecutando java --version en la terminal. Si devuelve algo como esto:

openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

Eso significa que Java ya está instalado. En cambio, si se obtiene algo como esto:

Command 'java' not found

Hay que descargar e instalar el JDK. En la mayoría de las distros de Linux, el JDK se puede descargar con el gestor de paquetes integrado.

Ubuntu/Debian

En Ubuntu, Debian y otras distros basadas en Ubuntu/Debian, el JDK se puede instalar con apt. Se puede instalar el JDK de Java desde los repositorios por defecto ejecutando: sudo apt install default-jdk.

Cuando termine la instalación, si se vuelve a ejecutar java --version, debería verse algo como lo de arriba.

Arch

En Arch y otras distros basadas en Arch (como Manjaro), el JDK se puede instalar con pacman. Se puede instalar el JDK de Java desde los repositorios por defecto ejecutando: sudo pacman -S jdk-openjdk.

Cuando termine la instalación, si se vuelve a ejecutar java --version, debería verse algo como lo de arriba.

Fedora

En Fedora y otras distros basadas en Red Hat, el JDK se puede instalar con dnf. Se puede instalar el JDK de Java desde los repositorios por defecto ejecutando: sudo dnf install java-openjdk-devel.x86_64.

Cuando termine la instalación, si se vuelve a ejecutar java --version, debería verse algo como lo de arriba.

Windows

Primero se puede comprobar si Java ya está instalado ejecutando java --version en cmd. Si devuelve algo como esto:

openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)

Eso significa que Java ya está instalado. En cambio, si se obtiene algo como esto:

'java' is not recognized as an internal or external command, operable program or batch file.

Hay que descargar e instalar el JDK de aquí .

Cuando termine la instalación, si se vuelve a ejecutar java --version, debería verse algo como lo de arriba. Nota: el instalador debería agregar Java automáticamente al PATH del sistema, pero si no lo hace, hay más información sobre cómo hacerlo aquí .

macOS

Primero se puede comprobar si Java ya está instalado ejecutando java --version en la terminal. Si devuelve algo como esto:

openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)

Eso significa que Java ya está instalado. En cambio, si se obtiene algo como esto:

-bash: java: command not found

Hay que descargar e instalar el JDK de aquí .

Cuando termine la instalación, si se vuelve a ejecutar java --version, debería verse algo como lo de arriba.

Compilar y ejecutar

Ejecutar un archivo Java desde la línea de comandos es relativamente simple una vez descargado el JDK.

Considérese este código de Main.java y supóngase que está en un archivo en la computadora:

public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } }

Usar el comando cd en la consola para ir al directorio que contiene Main.java. Luego ejecutar el siguiente comando para compilar el código:

javac Main.java

Si corre con éxito, aparecerá un archivo llamado Main.class en el mismo directorio, que se puede ejecutar con el siguiente comando:

java Main

Si todo sale bien, la consola debería imprimir Hello World!.

Si se usa E/S por archivos al estilo USACO, es decir, archivos en el “directorio local”, entonces los archivos deben estar en el mismo directorio que el código fuente (si se usa el método de arriba).

Instalación

Windows y Mac

Descargar Python desde el sitio oficial .

Linux

Si se tiene apt (el gestor de paquetes), se puede instalar Python 3 con

sudo apt install python3.8

También se puede compilar e instalar desde el código fuente .

Hay que asegurarse de usar la versión correcta de Python. Python 2 es bastante distinto de Python 3 (pero las partes del número de versión más allá de 2. o 3. no importan tanto). En general recomendamos Python 3 a quien empieza, pero si ya se programa en Python 2, también está bien.

La versión de Python puede importar al usar la línea de comandos para ejecutarlo; a veces hay que usar python3 en lugar de python para correr Python 3. Probar ambos comandos y prestar atención a la versión que imprime Python para determinar si es el caso en el sistema. Por ejemplo:

python --version # prints Python 2.7.13 python3 --version # prints Python 3.8.1