Laboratorio: entorno de trabajo

Todo el curso se trabaja en un mismo entorno, con g++, gdb, valgrind, make y Git. También trae Python 3.14, que solo sirve para correr las pruebas automáticas. Hay dos formas de abrirlo.

Cada semana hay dos sesiones de laboratorio de 2 horas, salvo en las semanas con práctica, cuando una de ellas es para la práctica. Cada guía dice qué se hace en cada sesión. Lo que no terminen en una sesión lo terminan antes de la siguiente.

Opción 1: GitHub Codespaces

Solo requiere un navegador, una cuenta de GitHub y una conexión estable a internet, así que funciona en las computadoras de la universidad. Sin internet, usen la opción 2, Docker en una laptop, que funciona sin conexión una vez construida la imagen.

  1. Crear una cuenta en GitHub, con el correo de la universidad si es posible.
  2. Abrir el repositorio del curso en GitHub, con el enlace que da el docente.
  3. Elegir Code → Codespaces → Create codespace. La primera vez tarda unos minutos.
  4. En la terminal de abajo, correr env/check.sh. Todas las líneas deben decir ok.

Al terminar, cierren la pestaña y detengan el codespace desde https://github.com/codespaces. Revisen la cuota gratuita de su cuenta en esa misma página, porque con 4 horas de laboratorio a la semana se consume rápido.

Opción 2: Docker en una laptop

  1. Instalar Docker.
  2. En la carpeta del curso, correr env/run.sh. La primera vez construye la imagen.
  3. Dentro del contenedor, correr env/check.sh. Todas las líneas deben decir ok.

Se edita con cualquier editor en la laptop, porque la carpeta es la misma dentro y fuera del contenedor.

Compilar

g++ -Wall -Wextra -std=c++20 -g -fsanitize=address,undefined programa.cpp -o programa
./programa

Cada laboratorio trae un Makefile, así que normalmente basta con make y make test.

Valgrind y gdb se usan sin sanitizers: compilen con -g -O0, sin -fsanitize.

Para medir tiempos, compilen con -O2 y sin sanitizers. Los tiempos de un codespace varían más que los de una laptop, así que repitan cada medición.

g++ -Wall -Wextra -std=c++20 -g -O0 programa.cpp -o programa
valgrind --leak-check=full ./programa

Problemas frecuentes

Síntoma Causa Qué hacer
El codespace no abre o se desconecta Conexión o cuota agotada Revisar la conexión y el uso en https://github.com/codespaces; avisar al docente
permission denied al ejecutar El archivo no es ejecutable o se llamó sin ./ chmod +x archivo o usar ./programa
command not found Están fuera del entorno Comprobar que la terminal es la del codespace o del contenedor
undefined reference to una función propia Falta enlazar un .cpp Agregar el archivo al comando o al Makefile
undefined reference to sqrt Falta la biblioteca matemática Agregar -lm al final del comando
valgrind da errores raros o se niega a correr El programa se compiló con sanitizers Compilar sin -fsanitize
dubious ownership de Git Carpeta de otro usuario Abrir la carpeta desde env/run.sh
El programa parece colgado Espera datos de la entrada, o hay un ciclo infinito Escribir los datos, o Ctrl+D para terminar la entrada y Ctrl+C para cortarlo