Bootcamp CP-UPV - VSCode y Lenguajes de Programación
Instalación de VSCode y C++/Java/Python en Linux/Windows/MacOS
!OJO¡
Esta guía está desactualizada, antes usábamos VSCode pero hemos visto que CP-Editor es una mejor alternativa para simplificar la instalación de todo. Esta guía se queda para aquellos con más experiencia que quieran usar un editor más complejo, instalando los lenguajes de programación a parte.A continuación se muestra cómo configurar el software necesario en los 3 sistemas operativos más comunes para programar en los 4 lenguajes del bootcamp, listo para empezar a programar. No hay que instalarse todos los lenguajes, solo los que quieras utilizar.
También es bastante importante familiarizarse un poco con la línea de comandos ('cmd' en Windows, 'Terminal' en macOS) para compilar nuestros programas antes de enviarlos al juez.
Contenidos
- Instalación de VSCode
- Setup en Windows
- Setup en MacOs
- Setup en Linux
- Compilando y ejecutando un programa básico
- Comprobar soluciones rápidamente
- Terminal en Linux
- Compiladores en Linux
Instalación de VSCode
VSCode (al igual que VSCodium, la alternativa Open Source) es un editor de código multiplataforma que ofrece soporte y extensiones para todos los lenguajes de programación más comunes, además de tener todas las utilidades necesarias para programar en cualquier entorno. La instalación de VSCode es bastante trivial, solo hay que descargar el instalador para nuestra plataforma en:
VSCode: https://code.visualstudio.com/
VSCodium: https://github.com/VSCodium/vscodium/releases
La mayoría querrá descargar los instaladores 'Stable' de macOS y Windows y seguir las instrucciones de instalación. La instalación en Linux depende de la distribución, por ejemplo los usuarios de distribuciones de Debian, como Ubuntu deberían descargar el archivo .deb y ejecutar este comando en la carpeta donde se ubique el archivo descargado:
sudo dpkg -i code_XXXXXX.deb
Para otras versiones en Linux hay paquetes más específicos, portables y también se ofrece la posibilidad de compilar el código fuente: https://code.visualstudio.com/#alt-downloads, aunque ya sería más recomendable descargar la versión portable de VSCodium.
Una vez instalado, se pueden descargar las extensiones correspondientes al lenguaje que se va a utilizar, ayudará con el autocompletado y detección de errores en nuestros programas. Estas son las más recomendadas:
Windows
C/C++
Seguir las instrucciones de la página web de VSCode: https://code.visualstudio.com/docs/cpp/config-mingw
Comprobar que los compiladores están correctamente instalados en la línea de comandos:
# Es necesario reabrir la terminal y/o VSCode para que puedan encontrar los comandos
gcc --version
g++ --version
¡Ojo! Si el compilador o VSCode dan un error porque no se puede encontrar<bits/stdc++.h>hay que hacer lo siguiente:
- Descarga una copia del archivo stdc++.h
- Guarda el archivo en
C:\msys64\ucrt64\include\c++\<version>\bits\stdc++.h(ruta por defecto, si msys64 está instalado en otro sitio, guardar en el lugar correspondiente)- Acuérdate de cerrar y volver a abrir VSCode para aplicar cambios
Python
Instalar el instalador en https://www.python.org/downloads/ y seguir las instrucciones, debería ser un archivo con el formato python-3.XX.X-amd64.exe. No es necesario customizar la instalación, se puede seleccionar 'Instalar ahora'. ES MUY IMPORTANTE MARCAR LA CASILLA 'Add Python 3.XX to PATH', como se muestra en la foto, de lo contrario no funcionará el comando python3.
Se puede comprobar ejecuntando el siguiente comando el la línea de comandos 'cmd'
python3 --version
Java
Descargar el instalador de la versión 17 del JDK desde este link: https://www.oracle.com/java/technologies/downloads/#jdk17-windows y seguir los pasos del instalador, cualquiera de 'x64 Installer' o 'x64 MSI Installer'.
Para comprobar que java esté instalado, ejecutar estos comandos en la línea de comandos:
javac -version
java -version
MacOS
C/C++
La manera más fácil es instalar XCode desde https://developer.apple.com/xcode/. Una vez descargado comprobar que los compiladores están correctamente instalados en la línea de comandos:
gcc --version
g++ --version
Python
Instalar el instalador en https://www.python.org/downloads/ y seguir las instrucciones, se debería descargar un archivo con el formato python-3.XX.X-macosXX.pkg. Comprobar ejecutando el siguiente comando el la Terminal:
python3 --version
Java
Descargar el instalador de la versión 17 del JDK desde este link: https://www.oracle.com/java/technologies/downloads/#jdk17-mac y seguir los pasos del instalador, uno de 'ARM64 DMG Installer' o 'x64 DMG Installer' dependiendo de la arquitectura del procesador.
Para comprobar que java esté instalado, ejecutar estos comandos en la línea de comandos:
javac -version
java -version
Linux
Todos los compiladores se pueden instalar usando los 'package managers' del sistema, como apt, pacman... Aquí solo se muestra la instalación en Debian/Ubuntu.
C/C++
Dependerá de la distribución de Linux, seguramente venga preinstalada.
# Instalar compiladores de C y C++
sudo apt install build-essential
# Comprobar que se han instalado correctamente, debería aparecer un mensaje con la version de los compiladores y su licencia
gcc --version
g++ --version
Python
Dependerá de la distribución de Linux, seguramente venga preinstalada
# Instalar python 3.8, la versión puede cambiar el futuro
sudo apt install python3.8
# Comprobar la instalación, debería mostrar la versión de python
python3 --version
Java
Dependerá de la distribución de Linux, seguramente venga preinstalada
# Instalar el JRE y el JDK
sudo apt install default-jre default-jdk
# Comprobar la instalación, debería mostrar la versión de javac y java
javac -version
java -version
Compilando y ejecutando un programa básico
Ahora que tenemos VSCode instalado, con el compilador y la extensión correspondiente, deberíamos tener autocompletado y detección de errores al escribir código. También deberíamos poder ejecutar nuestro programa usando la combinación de teclas Ctrl + Shift + P y escribir Terminal: Crear Nueva Terminal, ahora podremos compilar y ejecutar nuestro programa, que dependiendo del lenguaje se hará de una forma u otra. No hay que entender al completo lo que hace cada línea de estos segmentos de código que imprimen Hello World, solo hay que saber que tienen que estar presentes. Intenta compilar alguno de ellos:
C
helloworld.c:
// Importar librería para leer/imprimir a la consola
#include "stdio.h"
// Esta funcion será la entrada al programa
int main() {
# Imprimir Hello World! a la consola
printf("Hello World!");
}
# Compilar el programa
gcc helloworld.c
# El ejecutable creado por defecto tendrá el nombre a.out, se ejecuta así
./a.out #Hello World!
C++
helloworld.cpp:
// Esta librería es la única que hay que importar en C++, incluye todo lo que hace falta para la programación competitiva
#include <bits/stdc++.h>
// Los namespaces en C++ sirven para encapsular clases y funciones. Es importante incluir esta línea para evitar especificar 'std::' delante de las clases y funciones de la librería estándar
using namespace std;
// Esta funcion será la entrada al programa
int main() {
cout << "Hello World!"; // Imprimir "Hello World!""
}
# Compilar el programa
g++ helloworld.cpp
# El ejecutable creado por defecto tendrá el nombre a.out, se ejecuta así
./a.out #Hello World!
Java
HelloWorld.java:
// En Java todo debe pertenecer a una clase, esta se llama HelloWorld porque se encuentra en el archivo HelloWorld.java
public class HelloWorld {
// Esta función es la entrada del programa
public static void main(String[] args) {
// Imprimir "Hello World!"
System.out.println("Hello World!");
}
# Compilar el programa, asegúrate que si el archivo se llama HelloWorld.java, existe una clase en el archivo con el nombre HelloWorld que contenga la función main()
javac HelloWorld.java
# Ejecutar el programa con el mismo nombre que el paso anterior, sin .java
java HelloWorld #Hello World!
Python
hello_world.py:
print("Hello World!") # Imprimir "Hello World!"
# Python es un lenguaje interpretado, solo hay que escribir un comando
python3 hello_world.py #Hello World!
Es importante poder compilar las soluciones antes de subirlas y probarlas con los casos de prueba que aparecerán en el problema, ya que un envío incorrecto supone una penalización en concursos reales.
Comprobar soluciones rápidamente
Esta técnica ahorra mucho tiempo a la hora de comprobar si una solución funciona para los casos de prueba de ejemplo o nuestros propios casos. Crearemos un archivo cualquiera, por ejemplo in y copiaremos y pegaremos un caso de prueba en él. Ahora podemos leer el input de la siguiente manera:
# Compilar
g++ solution.cpp
# Ejecutar la solución, pero en vez de introducir los datos manualmente cada vez, se introducen desde el archivo 'in'
./a.out < in
# Esto nos permite también medir el tiempo de ejecución del programa, ya que si introducimos los datos manualmente cuenta como tiempo de ejecución
time ./a.out < in # Funciona en Linux y Mac
# Para windows, leer esto https://superuser.com/questions/228056/windows-equivalent-to-unix-time-command
# Opcionalmente también podríamos guardar el output
./a.out < in > out
# Combinando todos los comandos, podemos compilar y ejecutar la solución en una sola línea, instantaneamente se mostrará la respuesta
g++ solution.cpp && ./a.out < in # Funciona en Linux y Mac
# Y si además guardamos la respuesta esperada en un archivo 'out' podemos saber si se corresponden a la perfección porque el siguiente comando no produce ningun output
g++ solution.cpp && ./a.out < in > temp && diff temp out # Funciona en Linux y Mac
# - Se compila el programa a a.out
# - Se ejecuta a.out, con la entrada del archivo 'in' y se guarda el output en una archivo 'temp'
# - Se compara el archivo 'temp' con la respuesta esperada 'out' y si no nos dice nada, ese caso está bien hecho
Si modificamos solution.cpp y usamos las teclas arriba (o abajo) y enter en la línea de comandos podemos ejecutar el comando de nuevo y así rapidamente comprobar si el pequeño cambio que acabamos de hacer a solution.cpp ya nos funciona.
Ejemplo de in
3 + 2
Ejemplo de out
5
Terminal en Linux
Ayudará desde el primer momento escribir comandos en una terminal. Para esto, se puede usar cualquier aplicación que lo permita, el Windows basta con buscar "cmd" en la barra de busqueda de aplicaciones. En Linux o Mac se puede buscar "term" en la lista de programas instalados para que aparezcan uno o múltiples emuladores de terminal. También se puede usar la terminal integrada de VSCode, basta con apretar a la vez Ctrl + Shift + P, y escribir "Terminal: Create New Terminal". Esta es la mejor opción para todos porque no habrá que moverse de directorio.
# BASICS en Linux
# Nos aparecerá una línea parecida a esta, fijate:
[pepe@ordenador23 ~]$
# Esta línea quiere decir:
# - Ejecutas comandos uario 'pepe'
# - 'ordenador23' es simplemente el nombre del ordenador
# - '~' quiere decir que los comandos se ejecutan en la
# carpeta principal del usuario, que será /home/pepe
# Con el comando 'ls', podemos ver lo que hay en la carpeta
# actual ('~' = /home/pepe):
[pepe@ordenador23 ~]$ ls
Downloads Desktop Documents
# Estas carpetas se encuentran en /home/pepe
# Ahora movamonos de carpeta con el comando 'cd'
[pepe@ordenador23 ~]$ cd Downloads
[pepe@ordenador23 Downloads]$
# Podemos ver como ahora la carpeta en la que estamos ha
# cambiado de '~' a Downloads
# Para movernos una carpeta hacia atrás, usaremos el
# comando 'cd' con el argumento '..', que quiere decir la
# carpeta padre
[pepe@ordenador23 Downloads]$ cd ..
[pepe@ordenador23 ~]$
# Y poco más, usa el comando 'pwd' para saber en que
# directorio te encuentras
[pepe@ordenador23 ~]$ pwd
/home/pepe
Asumiendo que sabemos introducir comandos en la terminal, podemos movernos al siguiente paso
Compiladores en Linux
Ahora, podemos comprobar que los compiladores que necesitaremos están instalados. Si cualquiera de estos comandos genera un error, no está instalado.
# C
gcc --version
# C++
g++ --version
# Python
python3 --version
# Java
javac -version
java -version