"Talk is cheap. Show me the code." - Linus Torvalds
1. Escoger una receta de cocina, la mita del grupo hace una receta salda y la otra mitad una receta de dulce.
✨La receta no debe ser muy complicada, ingredientes sencillos y faciles de conseguir.
2. Escriba el pseudocódigo del algoritmo, es decir los pasos detallados para preparar la receta.
✨Mientras más detallado sea el pseudocódigo, más fácil será la solución de la receta.
3. Preparé la receta siguiendo el pseudocódigo, grabe un video del proceso, no es necesario que
se vea el rostro, pero si los pasos de la receta y el resultado final.
✨El video debe durar máximo 2 minutos, y debe ser grabado en horizontal.
4. Publique el video en youtube como no listado, y comparta el enlace en el grupo de teams del curso.
5. Lleve el plato a la clase para compartir el resultado en un picnic con sus compañeros de clase.
6. Lleve el pseudocódigo en una hoja, y entregue al profesor el día de la entrega.
1. Completar los desafíos de línea de comandos en https://cmdchallenge.com/ hasta el nivel básico.
✨Tomar capturas de pantalla de cada ejercicio resuelto para evidenciar el cumplimiento.
2. Crear un nuevo repositorio en GitHub llamado "primer_programa".
3. Personalizar el README.md usando sintaxis Markdown incluyendo:
✨Utilizar elementos de Markdown como encabezados, listas, enlaces, imágenes y código.
4. Crear un programa "Hola Mundo" en Java (HolaMundo.java) que incluya:
5. Documentar el proceso de instalación de Java JDK y configuración del entorno de desarrollo.
6. Cada equipo debe escoger uno de los siguientes temas para exponer:
✨La exposición debe durar entre 5-7 minutos por equipo.
7. Todos los integrantes del equipo deben colaborar activamente en el mismo repositorio mediante:
✨Usar Git de manera colaborativa y organizada.
Organización y buenas prácticas en GitHub:
✨Esto fomenta el trabajo colaborativo efectivo dentro del mismo equipo.
8. Crear una carpeta "evidencias" en el repositorio con:
9. Realizar commits frecuentes con mensajes descriptivos que documenten el progreso del trabajo.
1. Crear un nuevo repositorio en GitHub para este taller que se llame taller 2.
2. Actualice el readme, con la información del nuevo equipo y los ajustes respectivos que se explicarán en clase.
3. Agregue el enlace de la presentación
4. Crear un programa que se llame Variables.java, donde incluya 20 declaraciones de variables de diferente tipo.
✨ Sugerencia: Consulte la documentación de java para ver la lista de tipos primitivos.
5. Inicializar las 20 variables con datos compatibles (Debe entender correctamente los valores de inicialización)
6. Reasignar los valores con al menos 5 valores almacenados en las otras variables y el resto se reasignan con datos nuevos hardcoded (quemados).
7. Mirar los siguientes videos:
✨Este video es importante para pedirle los datos al usuario, muy importante que lo repasen bien, en clase lo volveremos a estudiar.
8. Crear variables cuyos datos requieran el uso de f, L y comillas simples ('').
9. ¿Consultar y explicar como cambiarle el nombre y correo de los commits?. ¿Cómo renombrar commits anteriores?. Usar esa información para actualizar correctamente el repositorio.
10. Cada estudiante debe crear mínimo 10 commits diferentes.
Crear un programa que permita seleccionar entre 3 opciones:
✨Ecuación 1, recuerde copiarla correctamente a código.
✨Ecuación 2, recuerde copiarla correctamente a código.
Se debe pedir al usuario que seleccione el tipo de ecuación a resolver y luego que ingrese los valores x y z, para evaluar la expresión e imprimir el resultado.
✨Recomendación, primero resuelva la expresión manualmente con calculadora y luego en el programa, recuerde divide y vencerás.
Actualice la presentación, resalte las conclusiones, dudas, y aprendizajes que tuvo el equipo durante la realización del taller, y prepare una exposición de 5 minutos para compartirlo con sus compañeros de clase.
Cada estudiante debe responder una pregunta de teoria y un ejercicio en java durante la presentación.
En este taller se trabajarán los conceptos de ciclos en Java, recuerde ver los videos hasta el número 5, para responder preguntas y ejercicios en clase durante la presentación del taller.
⚠️ El programa debe seguir ejecutándose hasta que el usuario seleccione la opción de salir, y debe manejar entradas inválidas de manera adecuada.
Recuerde validar el ingreso correcto de los datos por parte del usuario, prevenir que se produzcan errores durante la ejecución del programa, y manejar las excepciones de manera adecuada para evitar que el programa se cierre inesperadamente.
✨Recomendación, resuelva cada opción del menú por separado, y luego integre todo en un solo programa, recuerde divide y vencerás.
Use ascii art para decorar el menú, tal como se explico en clase, en los recursos encontrará sitios especializados para crear ascii art de texto, y también puede crear sus propios diseños.
Valide además si hay restricciones con los ejercicios, por ejemplo, para la opción de promedio, el programa debe permitir ingresar números decimales, y para la opción de ecuación cuadrática, el programa debe manejar casos donde las raíces sean complejas.
1. Crear un nuevo repositorio en GitHub: "Mundial de Fútbol en Consola".
2. El trabajo se realizará en grupos de 2 o 3 estudiantes. A cada equipo se le asignarán 4 "Grupos del Mundial" (Ej: Grupo A, B, C y D).
✨ Actualicen el README.md con la información del equipo y el grupo asignado.
Implementar la visualización de las banderas de los 4 países del grupo utilizando matrices.
Diseñar un algoritmo que reciba un factor de escala para dibujar en 4 tamaños:
✨ Usar el código del profesor como inspiración.
Construir una matriz para representar la tabla de posiciones del mundial, su contenido debe ser editable y actualizable.
✨ El software debe imprimir esta matriz en forma de una tabla formateada en la consola para consulta, como son muchos equipos se debe paginar.
Usando arreglos y matrices, estructurar el calendario de los enfrentamientos y sus fechas de todo el mundial. El usuario, a través de opciones mostradas mediante teclado, podrá:
✨ Utilizar ConsoleInput.java para estandarizar las lecturas.
Cada equipo creará una parte de los datos del mundial. Para tener toda la información completa:
ASCII art para el menú de consola.Por último, se debe implementar una funcionalidad que permita consultar información de un país, como su capital, jugadores principales y apariciones en copas del mundo.
Esta funcionalidad puede ser accedida desde el menú de la aplicación, tener en cuenta el diseño usando ascii art y la bandera respectiva.
En este taller no hay entregables: hay torneo. Durante 3 clases competirán en parejas jugando retos de cadenas y funciones preparados por el profesor.
1. Conformar una pareja nueva (cambio de compañero, como en los talleres anteriores). La pareja se mantiene durante todo el torneo.
✨ Requisito para jugar: ver los videos 8 a 12 (cadenas y funciones) antes de la primera clase del torneo.
✨ Todas las reglas y puntajes están en estas diapositivas: no hay sorpresas, el torneo es gamificado y justo.
charAt(), substring(),
split() y length().
String y conceptos
de funciones, de la A a la Z.boolean esPalindromo(String s).✨ El profesor puede variar la mezcla de juegos en cada clase, pero los puntajes no cambian.
Conversión: 10 bits = 0.1 en la nota, acumulables hasta llegar a 5.0 (tope).
⚠️ Botín en juego: si una pareja falta sin excusa, sus bits acumulados entran al botín de esa clase y las parejas ganadoras de las rondas se reparten el 20% del botín. Lo ganado se puede diluir si no se asiste.
Asistencia a las 3 clases del torneo (base de la nota, escala 0 a 5):
El resto de la nota se acumula con bits ganados por participaciones, victorias y bonus durante las clases.
El juego completo son 3 habitaciones. La 1 ya funciona; las 2 y 3 las construye el equipo programando — sin código no hay final.
final_aventura — cada equipo en SU
versión.✨ Este proyecto es el 20% de la nota final y usa todos los temas del curso.
La habitación 1 llega completa y jugable; al abrir su puerta encontrarán
un pasillo "en obra": las habitaciones 2 y 3 son su misión. El flujo:
descargar el zip → crear el repositorio final_aventura
→ subir este código como primer commit.
⬇️ Descargar escape_la_habitacion.zip
✨ Para probarlo: descomprimir, javac Main.java y luego
java Main. Lean el README antes de escribir código.
TODO equipo:.arte/*.txt — el ASCII art; Sonido.java + musica/*.mid — el sonido.
Un PLACEHOLDER es un método que el juego ya llama pero está incompleto a
propósito: ahí programan ustedes. Un // TODO equipo: es una tarea puntual.
Los 4 obligatorios:
seleccionarTipoJuego() — el menú de modos.configurarJugador() — nombre +
dificultad 1-3 aplicada.configurarArte() — título ASCII y arte propio.siguienteHabitacion() — la navegación
completa hasta la victoria.✨ Sin el placeholder 4 el juego termina en un pasillo "en obra": programar ES el proyecto.
El juego se alimenta de varios archivos, pero Main.java los une: la
habitación a la izquierda, el panel a la derecha.
+============ ESCAPE: LA HABITACION ============+
##################################### +--------------------------+
# # | ________ |
# ____ # | /________\ |
# |====| # | | (??) | |
# |____| # | |________| |
# # | |
# ______ # | UN COFRE CON CANDADO |
# @ /______\ # +--------------------------+
# | ?? | #
# |______| # Que haces?
# __________ # 1. Mirar de cerca
# |~~~~~~~~~~| # 2. Seguir explorando
##############| |#################
> Elige (1 o 2):
El mundo son dos matrices del mismo tamaño. La primera es
habitacion1.txt: aquí dibujan el cuarto en
ASCII art. La @ marca dónde arranca el jugador.
#####################################
# #
# ____ #
# |====| #
# |____| #
# #
# ______ #
# @ /______\ #
# | ?? | #
# |______| #
# __________ #
# |~~~~~~~~~~| #
##############| |#################
✨ La nota arriba, el cofre a la derecha, la alfombra abajo y la puerta en el muro. Dibujar un objeto nuevo = escribirlo aquí: lo que dibujan es lo que el jugador ve.
La segunda es zonas1.txt: aquí pintan qué ES
cada casilla — . piso, # sólido, letra = objeto. Es la que
consulta el motor para mover al jugador.
#####################################
#...................................#
#....NNNN...........................#
#...NNNNNN..........................#
#...NNNNNN..........................#
#...................................#
#........................CCCCCC.....#
#.......................CCCCCCCC....#
#.......................CCCCCCCC....#
#.......................CCCCCCCC....#
#..AAAAAAAAAAAA.....................#
#..AAAAAAAAAAAA.....................#
##############PPPPPP#################
💡 Truco: copien la matriz visual, renómbrenla como zonas y reemplacen cada dibujo por su letra. Así las dos matrices siempre calzan.
Se camina con W A S D y se piden pistas con H. Los objetos son
sólidos: al chocar con uno aparece su preview y la
pregunta:
+------------------------+
| ______ |
| | __ | |
| | |__| | |
| | [##] | |
| |______| |
| |
| LA PUERTA DE SALIDA |
+------------------------+
Que haces?
1. Mirar de cerca
2. Seguir explorando
✨ En mover() la casilla destino decide todo:
. avanza, letra pregunta, lo demás bloquea.
(Mapa.java es la versión en
miniatura de esta idea.)
Mirar de cerca abre la escena: el arte grande (arte/x.txt) y
el detalle con la pista (objetosN.csv). ENTER vuelve al mapa.
______________________
| |
| "el numero del |
| cofre esconde |
| la clave... |
| |
| aplicale LA |
| OPERACION" |
|______________________|
[ ENTER para volver a la habitacion ]
✨ La nota agrega a su escena la operación sorteada; el cofre cambia de escena cuando ya tienes la llave. Las escenas también son lógica.
El camino de escape encadena los objetos:
calcularClave()).🔑 Como el número Y la operación cambian en cada partida, memorizar la clave no sirve: hay que jugar el puzzle completo.
Todo con lo visto en el curso: métodos static, arreglos, matrices, ciclos y
Scanner. Nada de POO ni eventos.
cargarMatriz() — un método, DOS usos: habitación y
zonas.dibujarPantalla() / mover() / preguntarObjeto()
abrirEscena() / abrirPuerta() / imprimirArte()guardarObjeto() / tieneObjeto() — arreglo + contador.darPista() (H) y easterEgg() (la secreta X).calcularClave() + Math.random().partirTexto() / centrar() / enmarcar() —
cadenas puras.✨ Un método debe hacer una sola cosa y hacerla bien — divide y vencerás. El README trae el mapa completo del código.
Un objeto nuevo, en 4 pasos:
arte/mini_x.txt y arte/x.txt.✨ Listo: el objeto ya tiene preview, pregunta y escena. Así se arma la habitación entera.
Comportamientos especiales con un else if en
preguntarObjeto() — la alfombra, el
cofre con candado y la nota son los ejemplos para
imitar.
El inventario ya viene listo (guardarObjeto() /
tieneObjeto()): úsenlo para sus propios candados.
✨ El README trae la guía completa con ideas de puzzles. Aquí se ingenian SU salida del cuarto.
Sonido.java hace sonar el juego con MIDI (incluido en el JDK, sin instalar
nada). Si no hay audio, falla en silencio y el juego sigue.
int
(60 = Do, 64 = Mi, 67 = Sol…). Crear un efecto es cambiar los números:
tocar(new int[] {60, 64, 67, 72}, 110)M prende/apaga la música y
E los efectos — dos banderas boolean.✨ El motor ya suena: cofre, llave, errores, muros y la fanfarria de victoria.
musicaFondo("musica/ambiente.mid") reproduce un
archivo MIDI en bucle sin detener el juego.musica/.✨ Su reto: la banda sonora de SU habitación — una música para explorar y otra para el escape.
Hay una tecla secreta: X no aparece en el panel, pero ya
está conectada al método easterEgg()… que no hace nada
todavía. Programarla es el bonus.
✨ Bonus +10% para los equipos que lo implementen y expliquen cómo funciona en el demo day.
En la semana final cada equipo hace una sustentación con presentación (diapositivas) de su juego:
✨ No hay preguntas de teoría: la nota sale de lo que construyeron y de cómo lo explican.
JavaDoc: comentarios /** ... */ sobre clases y métodos, de
los que Java genera un sitio web navegable — así está documentado Java
mismo.
javadoc -d docs -charset UTF-8 *.javaTodas las habitaciones del salón usan el mismo formato… así que se puede armar un juego gigante con habitaciones de varios equipos.
conectarHabitacionExterna() trae las
instrucciones completas.✨ Solo queda indicado: implementarlo con otro equipo vale +10% para ambos.