Un linguaggio di programmazione e' composto da DUE parti:
1) la sintassi: in genere la si impara in qualche giorno settimana. Non c'e' tanto da ""studiare"": non ci sono un'INFINITA' di concetti da imparare, ma qualche decina, centinaio. E' un po' come la lista dei mattoncini della LEGO: escluso il colore e quelli super specializzati, i mattoncini ""standard"" sono un numero abbastanza limitato.
2) la libreria STANDARD a corredo del linguaggio e le librerie DI TERZE parti: per queste ci vogliono MESI, ANNI, anche perche' sono tante/issime, ogn'una ha TANTE/ISSIME funzionalita' e ricordarsele tutte SEMPLICEMENTE studiando e' praticamente IMPOSSIBILE.
Sempre nella logica LEGO, e' come ragionare in termini di MODELLI che acquisti in scatola. C'e' ne sono un'infinita'
Poi c'e' la parte di ""ragionamento"" che uno deve acquisire per imparare ad usare in modo correntto 1) e 2).
Nella logica LEGO, usare i mattoncini per creare quale MODELLINO per conto proprio (astronavi, macchine da corsa, edifici, ..., trovi cose ""fantastiliardiche"" -) su Flickr o Tumblr ).
Per questi NON BASTA il linguaggio, e NON BASTANO giorni O mesi, MA SERVONO ANNI/DECINE di ANNI E
TANTA, TANTA, tanta, tanta ... tanta, tanta, TANTA, TANTA
pratica
Il linguaggio di programmazione e' una parte INFINITESIMALE di quello che serve sapere per realizare una qualunque cosa.
QUINDI, l'idea NON E' (SOLO) studiare o fare esercizi MA realizzare un programmino o una ""libreria di funzioni"" che faccia qualcosa di ""ragionevolmente intelligente"".
Un giochino e' un esempio, ma potrebbe essere troppo complesso da realizzare se si vuole avere anche l'interfaccia grafica.
Inizia con qualcosa di semplice. Un buon sistema e' quello di acquistare un libro di ALGORITMI ed IMPLEMENTARLI.
Cerca con Google: "Introduzione agli Algoritmi".
Al momento, per il tuo livello di conoscenza, un libro vale l'altro.
Se puoi vuoi il migliore, come minimo il Cormen e' un "MUST TO HAVE".