Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introducción a Programa-me - Concurso español de programacion (actualizado)

572 views

Published on

Guía introductoria a Programa-me, concurso de programación para alumnos de FP en España. Consejos y pistas para practicar y afrontar el concurso para estudiantes y profesores

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Introducción a Programa-me - Concurso español de programacion (actualizado)

  1. 1. Introduciendo a Programa-me
  2. 2. Mi nombre es José Ráez. He hecho esta presentación para ayudar y animar a otros estudiantes y centros a participar. Nuestro equipo, RuralHome The Nightmare, formado junto a Raúl Ortiz y Rubén Fernández, fue campeón de la fase regional y final nacional de 2017. Actualmente soy programador Back-End en C# y Java.
  3. 3. Es un concurso de programación español para alumnos de Formación Profesional de 1º y 2º. Los alumnos participan en grupos de 3. Se divide en dos fases: una fase regional dividida en varias competiciones por regiones, y una fase nacional donde van los primeros puestos de las fases regionales. Participar es gratis o con una pequeña cuota de inscripción para material del concurso. Puedes visitar la página principal del concurso en http://www.programa-me.com o en twitter @programame ¿Qué es Programa-me?
  4. 4. Además, participar tiene ventajas ● El formato del concurso es similar a las entrevistas técnicas que hacen las compañías. ○ Conocer cómo afrontarlas os dará una gran ventaja durante la entrevista. ○ Es incluso recomendable echar un ojo a los problemas como práctica para afrontar una próxima entrevista. ● Es una gran incorporación a vuestro currículum. ○ Solamente por participar ya os diferenciais de otros alumnos. ○ Lograr buenas posiciones os servirá para entrar en la mira de empresas. ● Viviréis una experiencia de trabajo en equipo real. ○ Tendréis que aprender a repartir, priorizar y resolver en entornos de tiempo limitado.
  5. 5. ¿Dónde empezar?
  6. 6. Acepta el reto www.aceptaelreto.com En el encontrarás todo tipo de problemas divididos por materia y dificultad, así como los problemas de otras ediciones. Aquí podrás prepararte para el concurso. Concursos de calentamiento www.programa-me.com Así mismo, suelen hacerse ediciones de calentamiento alrededor de navidad. Contacta con los organizadores para conocer que se está organizando ese año. Calentamiento Navidad: http://programa-me.com/2018/reg/navidad/ También podéis probar en Las 12 Uvas: http://www.las12uvas.es/2017/#/quees
  7. 7. https://www.aceptaelreto.com/problem/statement.php?id=116
  8. 8. ● Para buscar nuevos problemas, recomiendo buscar por Categorías > Programación ● No hace falta seguir el orden propuesto, los problemas no están por orden de dificultad. ● Al principio céntrate en pensar cómo resolverías los problemas con tus compañeros. ○ Según se acerque el concurso, intenta programarlos y subirlos a la web para coger soltura y acostumbrarte a posibles fallos.
  9. 9. Afrontando los problemas
  10. 10. En esta sección hablaremos sobre el funcionamiento de los problemas de Acepta el reto y Programa-me, para evitar tener dudas con cómo entran los datos y poder centrarnos en buscar la solución.
  11. 11. Entrada y salida de datos ● La entrada siempre va por el flujo estándar y la salida siempre va por la salida estándar. La entrada y la salida además tienen que ir ser una linea (C y C++: carácter 'n', Java: println o carácter 'n') ● ¡La salida no tiene que salir después de toda la entrada! De hecho, debéis escribir la solución después de cada línea/problema. ● Alumnos de 1º: Aunque no se pueden incluir librerías, se les puede proveer un fichero con métodos leerLinea y escribir para que no tengan que enfrentarse a I/O o flujos.
  12. 12. Ejemplos: C++ C Java
  13. 13. Consejos: ● Java: Usad split para separar los datos. C y C++: Cread una función que simule split con strtok (necesitareis memoria dinámica). ○ Es SUPER ÚTIL para poder luego iterar sobre los datos rápidamente. ○ No convirtáis los datos a sus tipos reales hasta que los uséis para operar. ○ C y C++: También podéis usar scanf() ● Si tenéis una frase o dibujo formado por varias líneas, recordad que podéis iterar por un string como si de un array se tratase. (También en números para ir cifra por cifra) ● Así mismo, recordad que cuando busquéis un valor en concreto, basta con poner la cadena que lo generaría (por ejemplo, si la fecha 25/11 entra como "25 11" podéis mirar directamente si es igual, no hace falta que saquéis los dos números). ● Por último: ¡no hace falta que verifiqueis que los datos son válidos! Siempre obedecerán el formato presentado.
  14. 14. Además, los problemas irán introduciendo los datos generalmente de una de estas 3 formas:
  15. 15. Estructuras de datos ● Conocimientos de manejos de arrays y strings es más que suficiente para afrontar las pruebas con garantías. Conocimiento de listas y diccionarios puede dar ventaja pero no es necesario. ● Matrices: practicar el patrón de "pintado". Recursiva que recorre todas las celdas disponibles. ● ¡Cuidado al ordenar números como strings! ● Problemas de ordenamiento pueden ser bastante fáciles o difíciles. Ante la duda, dejadlos para el final.
  16. 16. ¿Cómo funciona el concurso?
  17. 17. Puntuación ● Tu puntuación es tus problemas resueltos. Para desempatar, el tiempo hasta la resolución con penalizaciones. ● Al tiempo se suma el minuto en que has resuelto el problema y minutos extra de penalización por intento para resolverlo (los fallos en problemas sin resolver no cuentan). Siempre aparece Intentos/Tiempo total. ● Esta es una razón por la que es super importante localizar y resolver los problemas fáciles rápido. ○ Equipo 1 y 2: 3 problemas resueltos en el minuto 30 sin fallos. ○ Equipo 1: 3 | 40 -- Primero P1: minuto 2, P2: minuto 8, P3: minuto 30. 2 + 8 + 30 = 40. ○ Equipo 2: 3 | 70 -- Resolvió primero el P3 en el minuto 22. Luego resolvió el P1 en el minuto 23 y luego el P2 en el minuto 25. Pese a tardar solo 1 y 3 minutos en P1 y P2, al resolverlos más tarde tienen peor puntuación.
  18. 18. Unas notas finales: ● Durante el concurso es mucho más importante ser corto a la hora de escribir que claro, y poder reusar todo el código que sea posible. ○ Códigos de lectura/escritura, iteración, transformación... contra más generales mejor, para poder copiarlos de problema en problema. ● C y C++ disponen de un código más escueto y tiempos de ejecución más rápidos Java en el JDK tiene muchísimas utilidades. ¡Conoce bien las ventajas de tu lenguaje! ● Duerme bien la noche antes del concurso. ● Os podéis llevar hojas al concurso con código o notas que os puedan servir de utilidad. También tenéis disponible las APIs de C++ y Java. ● ¡Pasadlo bien!
  19. 19. ¿Te has quedado con más ganas?
  20. 20. Otros concursos: Para seguir poniéndote a prueba. Las 12 Uvas (Diciembre) http://www.las12uvas.es Google Hash Code (Marzo) https://hashcode.withgoogle.com Tuenti Challenge (Abril) https://contest.tuenti.net Everis Codefest (Noviembre) http://codefest.everis.com
  21. 21. Webs internacionales: Profundiza en algoritmia. Recruiting internacional. LeetCode - https://leetcode.com/ Ideal para practicar y aprender algoritmia. Sus problemas y foros vienen con guías para su resolución o con soluciones alternativas. HackerRank- https://hackerrank.com Sitio con competiciones y reclutamiento internacional. Ideal para probar competiciones avanzadas y destacar a nivel técnico (tiene su propia clasificación).
  22. 22. Despedida y contacto Muchas gracias por llegar hasta aquí, y espero que os haya animado a participar y/u os haya ayudado. Si tenéis alguna duda o queréis dejarme un saludo, podéis encontrarme en: -Twitter: @joshiraez -E-mail: contacto@joseraez.com -LinkedIn: http://joseraez.com También he creado un repositorio para que podamos compartir recursos para el concurso: https://github.com/joshiraez/RecursosProgramame
  23. 23. Agradecimientos Quería aprovechar para dar mis agradecimientos a: Nuria Fuentes, nuestra entrenadora y profesora de programación. Por introducirnos al concurso y apoyarnos durante todo el camino, además de ser una magnífica profesora y persona. A Manuel, Jesús, Raúl y Rubén, mis compañeros de equipo Por todo el esfuerzo y los buenos momentos en el camino a la fase nacional de las ediciones 2016 y 2017 de Programa-me.

×