Per esperienza, consiglio di cercare un'attività che si ripete ripetutamente e trasformarla in un programma. Raccomando anche, seriamente, di reinventare la ruota per fare pratica con la programmazione. Non lasciare che la gente ti dica di non fare qualcosa solo perché esiste già. Se non sai come funziona, prova a scrivere da solo.
Non so esattamente a quale livello di programmazione ci si trova, ma non provare a fare qualcosa di troppo pazzesco, è solo un demotivator (come provare a scrivere un gioco per PS3).
Se già puoi orientarti con I/O, allora dovresti imparare davvero come utilizzare le raccolte in modo efficace. Penso che uno degli incarichi di miglior pratica che abbia mai fatto fosse la riscrittura della classe TreeMap Java. È stata una grande sfida e ho imparato molto facendolo.
Ecco alcuni suggerimenti per le assegnazioni di pratica:
Prendere un file di testo che ha una discreta quantità di informazioni in esso, afferrare qualsiasi cosa, si può ottenere qualcosa da qui se vuoi: http://www.gutenberg.org/ e fare un programma che farà il seguente:
- Read nel file
- Creare una raccolta di parole e le loro occorrenze
- Creare una raccolta di anagrammi
- Creare una raccolta di parole e le posizioni in cui si presentano (linea #, posizione di parola)
- elaborare statistiche sulle parole nel file - che significa - il trattamento di ogni parola come un individuo - che le parole si presentano prima e dopo.
- rimuovere tutti gli spazi bianchi dal file
- Scrivi tutti i dati di cui sopra per i propri file
Una delle cose che preferisco fare è pasticciare con i dati web, andare in un sito polling, trovare una pagina che ha i dati del sondaggio in forma tabellare e procedere come segue:
- Scarica i dati
- Parse attraverso i dati e girare il dati tabulari in un file CSV
- aprirlo in Excel senza errori
O semplicemente cercare qualsiasi sito e estrarre i dati da esso, basta assicurarsi che il sito è il robot amichevole http://www.robotstxt.org/, non si vuole nessuno sito per sentirsi come se fosse sotto attacco. La maggior parte delle volte però questo non è normalmente un problema perché se leggi i termini di utilizzo del sito afferma chiaramente che sei autorizzato a scaricare 1 copia di qualunque cosa tu stia visualizzando finché non intendi venderla. Ovviamente questo cambia per ogni sito.
Vai a un sito Web e ottenere tutti i collegamenti fuori dalla pagina di programmazione.
Ecco un divertente uno, il programma di Susan (non mi ricordo il motivo per cui prende il nome Susan), che inizialmente ho scritto utilizzando un programma C e due script di shell Bourne in un ambiente Unix. L'idea in questo programma è di forgiare 4 processi figlio e dare loro ognuno un compito in questo modo:
Figlio 1: legge in un file, crea un dizionario di ogni parola e la sua posizione nel file, questo viene emesso in un file.
Child 2: Prende l'output di Child 1 e ricostruisce il documento, che viene emesso in un file.
bambino 3: Prende l'uscita bambino 2 di e fa ciò bambino 1 ha fatto di nuovo
bambino 4: Prende l'uscita del bambino 3 e fa quello che bambino 2 ha fatto di nuovo
L'obiettivo qui è quello di avere una replica esatta di il file originale quando Child 4 lo emette. Questo è impegnativo e alquanto inutile, ma il punto di questo esercizio è ottenere la pratica.
Nel tuo caso, non senti di dover utilizzare thread diversi per questo, puoi semplicemente usare un singolo programma con due funzioni diverse e chiamarli semplicemente in ordine.
Anche in questo caso, non è sicuro se si è a questo livello ancora, ma tenta di sostituire qualsiasi "per" o loop "foreach" avete nel vostro programma con la ricorsione, proprio come la pratica. La ricorsione è un dolore nel sedere, ma è prezioso sapere e capire.
Questi sono alcuni suggerimenti che ritengo possano aiutarti ad affinare le tue capacità.
Divertiti
Hello World è sempre un piccolo progetto. Su una nota più seria, prova a costruire scacchi o dama. È un progetto abbastanza semplice nel complesso, ma la logica che entra in ogni pezzo ti consente di imparare un bel po '... C'è molto da imparare anche su OOP (ad es.polimorfismo, un Rook è un'estensione di un pezzo, che ha una riga e una colonna). –
+1 per la realizzazione molto vera. :-) A proposito, Google Code Jam è un evento annuale, ma il concorso è co-organizzato da [TopCoder] (http://www.topcoder.com/tc), che organizza contest simili _each week_ . È molto divertente, ma è necessario conoscere bene gli algoritmi. –
@Aasmund, stavo pensando più a usare i loro concorsi passati. – Blackbinary