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í.
| Fuente | Recurso | Notas |
|---|---|---|
| IOI | 2017 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!
| Fuente | Recurso | Notas |
|---|---|---|
| Microsoft | Visual Studio Code | Véase PAPS 2.1 y la documentación para instrucciones de configuración de C++. |
| Jetbrains | CLion | Gratis para uso no comercial. |
| Geany | Geany | Liviano, se usa con frecuencia en la IOI. |
| Code::Blocks | Code::Blocks | Windows y Linux. Al parecer fue inestable en la IOI. |
| Apple | XCode | Solo Mac. |
Puede ser útil usar un IDE de Java para aprovechar las potentes funcionalidades de depuración de Java.
| Fuente | Recurso | Notas |
|---|---|---|
| JetBrains | IntelliJ IDEA Community | gratis |
| Eclipse Foundation | Eclipse | gratis |
| King's College London | BlueJ | 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.
| Fuente | Recurso | Notas |
|---|---|---|
| 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
- Desde la paleta de comandos (Cmd-Shift-P), seguir
sublsymlink- Usar
/usr/local/bin/sublen lugar de~/bin/sublme funcionó en OS X Mojave.
- Usar
- 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 ).
-
-
Para personalizar flags de compilación, abrir
Preferences: SublimeLinter Settingsdesde 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": [], }, }, }
-
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.
| Fuente | Recurso | Notas |
|---|---|---|
| CPH | 1.1 - C++ Code Template | |
| SO | How 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.
| Fuente | Recurso | Notas |
|---|---|---|
| SO | Why should I not #include <bits/stdc++.h>? | ¡la gente se enoja mucho con esto! |
| SO | #include <bits/stdc++.h> with Visual Studio does not compile |
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++.
| Fuente | Recurso | Notas |
|---|---|---|
| SO | How 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.
| Fuente | Recurso | Notas |
|---|---|---|
| CF | Speed up g++ Compile Time |
-
Averiguar dónde está
bits/stdc++.hen la máquina. Para eso, compilar el archivo C++file.cppque incluyebits/stdc++.hcon el siguiente comando.g++ -H file.cppEsto genera una lista de bibliotecas incluidas. Debería verse una ruta de la forma
/path_to/bits/stdc++.hcerca del tope de la lista. -
Precompilar la cabecera:
g++ -add-flags-here /path_to/bits/stdc++.hdonde
-add-flags-hereincluye los flags de compilación que se usan normalmente (p. ej.-std=c++17 -O2) -
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.cppEl
-Winvalid-pchavisará si la cabecera precompilada no se usa. Por ejemplo, si se precompilóstdc++.hcon-std=c++17pero 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 foundHay 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 foundHay 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.javaSi corre con éxito, aparecerá un archivo llamado Main.class en el mismo
directorio, que se puede ejecutar con el siguiente comando:
java MainSi 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