Por experiencia, recomiendo encontrar una tarea que hagas repetitivamente y convertirla en un programa. También recomiendo, en serio, reinventar la rueda para practicar con la programación. No permita que las personas le digan que no haga algo solo porque ya existe. Si no sabes cómo funciona, intenta escribirlo tú mismo.
No sé exactamente en qué nivel de programación estás, pero no trates de hacer algo demasiado alocado, es solo un demotivador (como intentar escribir un juego para la PS3).
Si ya puede navegar con IO, entonces debe intentar realmente aprender a usar Collections de manera efectiva. Creo que una de las mejores prácticas que he hecho fue reescribir la clase Java TreeMap. Fue un gran desafío y aprendí mucho al hacerlo.
Estas son algunas sugerencias para las asignaciones de práctica:
Tome un archivo de texto que tiene una buena cantidad de información contenida en él, agarra cualquier cosa, usted puede obtener algo de aquí, si desea: http://www.gutenberg.org/ y hacer un programa que hará lo siguiente:
- Leer en el archivo
- Crear una colección de palabras y sus ocurrencias
- Crear una colección de anagramas
- Crear una colección de palabras y las posiciones en que se producen (línea #, posición de la palabra)
- Desarrollar estadísticas sobre las palabras en el archivo, es decir, tratar cada palabra como individuo, que las palabras aparecen antes y después.
- eliminar todo el espacio en blanco del archivo
- escribir todos los datos anteriores a sus propios archivos
Una de mis cosas favoritas para hacer es meterse con datos de la web, ir a una sitio de votación, encontrar la página que tiene los datos de la encuesta en forma de tabla y haga lo siguiente:
- Descarga los datos
- analizar a través de los datos y gire el datos de tabla en un archivo CSV
- abrirlo en Excel sin error
O sólo tiene que buscar los datos del sitio y extraer de ella, sólo asegúrese de que el sitio es simpático robot http://www.robotstxt.org/, no desea que cualquiera sitio para sentir que está bajo ataque. La mayoría de las veces esto normalmente no es un problema porque si lee los términos de uso del sitio, indica claramente que tiene permiso para descargar 1 copia de lo que sea que esté viendo, siempre que no tenga la intención de venderlo. Por supuesto, esto cambia para cada sitio.
Vaya a un sitio web y obtenga todos los enlaces fuera de la página mediante programación.
Aquí es una diversión, el Programa de Susan (no me acuerdo por qué se llama Susan) que en un principio escribí usando un programa de C y dos scripts Bourne en un entorno Unix. La idea en este programa es bifurcar 4 procesos secundarios y darles una tarea como esta:
Niño 1: Lee en un archivo, crea un diccionario de cada palabra y su posición en el archivo, esto se emite a un archivo.
Niño 2: Toma la salida de Child 1 y reconstruye el documento, esto se envía a un archivo.
Niño 3: Toma de salida de Niños de 2 y hace lo infantil 1 de nuevo hizo
niño 4: Toma la salida del niño de 3 y hace lo infantil 2 de nuevo
El objetivo aquí es tener una réplica exacta de lo hizo el archivo original una vez que Child 4 lo emite. Esto es un desafío y algo sin sentido, pero el objetivo de este ejercicio es obtener la práctica.
En su caso, no sienta que necesita usar diferentes hilos para esto, puede simplemente usar un solo programa con dos funciones diferentes y simplemente llamarlas en orden.
Una vez más, no estoy seguro si usted está en este nivel todavía, pero intenta reemplazar cualquier "a favor" o "foreach" bucle que tiene en su programa con la recursividad, al igual que la práctica. La recursividad es un dolor en el trasero, pero es valioso conocerla y comprenderla.
Estas son algunas sugerencias que creo que realmente te ayudarán a agudizar tus habilidades.
Disfrute
Hello World es siempre un proyecto pequeño. En una nota más seria, intente construir ajedrez o damas. Es un proyecto bastante simple en general, pero la lógica que entra en cada pieza te permite aprender bastante ... Hay mucho que aprender sobre OOP allí también (p.polimorfismo, una torre es una extensión de una pieza, que tiene una fila y una columna). –
+1 para la verdadera realización. :-) Por cierto, Google Code Jam es un evento de una vez al año, pero el concurso está organizado conjuntamente por [TopCoder] (http://www.topcoder.com/tc), que tiene concursos similares cada semana. . Es muy divertido, pero necesitas saber bastante sobre algoritmos. –
@Aasmund, estaba pensando más en usar sus concursos anteriores. – Blackbinary