- Instalacion
 - WSL
 - Instalar Compiladores
 - Compilar, Ejecutar, y Debuggear
 - Comandos basicos de la terminal
 
Vamos a estar utilizando sistemas operativos *nix para llevar a cabo el curso. Esto es unix/linux/macOs
Los que utilicen Windows 10 deberan instalar WSL y una distribucion de linux (recomiendo Ubuntu)
En ambos casos vamos a tener que instalar los compiladores para los lenguajes que tengamos ganas
- Abrir powershell COMO ADMINISTRADOR y escribir
 
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart- De aca podemos salta al paso 6 ), pero es recomendable hacer los pasos en el medio ya que va a andar mejor
 
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart- Reiniciar la compu
 - 
- Descargar actualizacion, es chiquita, deberia ser muy rapido
 - Instalar la actualizacion
 
 - En una terminal de powershell
 
wsl --set-default-version 2- Descargar distribucion de linux.
- Vamos a la Microsoft Store
 - Buscamos la distribucion que tengamos ganas
 - En principio utilicen Ubuntu que es de las mas comunes
- De todas formas la unica diferencia es que capaz alguna viene con mas programas instalados, y utilizan un package manager distinto (en vez de 
apt) 
 - De todas formas la unica diferencia es que capaz alguna viene con mas programas instalados, y utilizan un package manager distinto (en vez de 
 
 
- C++ - Podemos elegir el compilador 
clang++og++- Ubuntu: primero tenemos que cargar la base de datos del package manager, 
sudo apt update, luego instalamos el compilador que queremossudo apt install -y clangosudo apt install -y g++- Lo que significa cada comando
sudonos da permisos de administrador ("Super User DO")apt installapt es el package manager (como un app store) install es el comando para instalar un paquete-yesto es opcional, le estamos diciendo que aceptamos todo, sino antes de instalar nos va a pregutnar si aceptamos y tenemos que poneryesclangog++el paquete que queremos instalar
 
 - Lo que significa cada comando
 - MacOS:
- Abren una terminal y escriben 
clang++og++y dan enter - Esto va a hacer que salte un prompt preguntando si quieren instalar las "command line tools", le dan que si y queda instalado
 
 - Abren una terminal y escriben 
 
 - Ubuntu: primero tenemos que cargar la base de datos del package manager, 
 - Java
- Ubuntu: 
sudo apt install -y openjdk-16-jdk - MacOS: seguir instrucciones para instalar zulu-xx-jdk
 
 - Ubuntu: 
 
En ambos casos vamos a trabajar todo el codigo en unico archivo para simplificar. Esto va a significar codigo repetido, ya que vamos a tener que tener el TAD en el mismo archivo que nuestra solucion, pero a la hora de compilar les va a ser mas facil
Ambos compiladores funcionan igual, los ejemplos los vamos a escribir con clang++, pero basta sustituirlo por g++ para utilizar el otro compilador
En la terminal estando parados sobre la misma carpeta que el archivo que queremos compilar
clang++ ./archivo.cpp -o ejecutable
Para ejecutar el programa, parados sorbe la misma carpeta que el archivo que queremos ejecutar
- Si queremos hacer el input a mano 
./ejecutable - Si queremos que el input lo tome de un .txt 
./ejecutable < ./input.txt - Si queremos que el output lo escriba en un archivo 
./ejecutable > ./output.txt - Si queremos que el input lo tome de un archivo y el output lo escriba en un archivo 
./ejecutable < ./input.txt > ./output.txt 
Para debuggear debemos instalar un debugger, si estan en mac ya deberian tener instalado lldb, sino si lo escriben en una terminal y dan enter deberia instalarselo
Si estan en linux
- Si usan clang 
sudo apt install -y lldb - Si usan g++ 
sudo apt install -y gdb 
Luego si hacemos F5 en vscode, deberia saltar un cartel que nos dice que no tenemos una configuracion y nos ofrece una automaticamente
Siempre tenemos el viejo y querido
cout << "mi variable" << variable << endl;En la terminal estando parados sobre la misma carpeta que el archivo que queremos compilar
javac ./ejemplo.java
Esto nos va a generar un archivo ejemplo.class
Para ejecutar el programa, parados sorbe la misma carpeta que el archivo que queremos ejecutar
- Si queremos hacer el input a mano 
java ./ejemplo - Si queremos que el input lo tome de un .txt 
java ./ejemplo < ./input.txt - Si queremos que el output lo escriba en un archivo 
java ./ejemplo > ./output.txt - Si queremos que el input lo tome de un archivo y el output lo escriba en un archivo 
ejemplo ./ejemplo < ./input.txt > ./output.txt 
Abrimos el archivo en visual studio code, presionamos F5
Tenemos tambien el viejo y querido System.out.println("mi variable: " + variable);
| Comando | Descripcion | 
|---|---|
cd <directory> | 
Change Directory: nos movemos a <directory> | 
cd .. | 
Nos movemos una carpeta para arriba | 
ls | 
List: lista los elementos de la carpeta que estamos parados | 
cat <file1> <file2> ... <filen> | 
Concatenate: imprime los archivos que le pasamos en la terminal | 
echo "cualquier mensaje" | 
Imprime el mensaje en la terminal | 
<comando1> | <comando2> | 
Toma el output del comando1 y lo ingresa como input al comando2 | 
<comando> < <archivo> | 
Ejecuta comando y le pasa el archivo como input (linea por linea, es decir, entre cada linea es como que presionemos enter) | 
<comando> > <archivo> | 
Ejecuta el comando y guarda el output en el archivo |