Mi è stato insegnato C ++ al liceo come primo linguaggio di programmazione, sebbene fosse più simile a "C +", ora che me lo dici; abbiamo usato cout
per scrivere testo sulla console e sui file, ma anche alcune funzioni C ( getch()
era la mia preferita).
Penso che il modo più efficace (e forse divertente) di insegnare le basi sia usare un curriculum orientato agli obiettivi: iniziare mostrando come produrre materiale, quindi input da tastiera, quindi I / O di file semplici, ecc. Passare a un semplice testo- gioco basato (o equivalente di robotica). Quindi quando chiedono "Come faccio a fare X?", Puoi scomporre X in termini di esempi che hanno già visto, ad es. "Per prima cosa devi ottenere l'input dall'utente come abbiamo fatto in Z, poi ..."(ovviamente non è così facile, in pratica, dal momento che X sarà probabilmente qualcosa di cui hanno bisogno ulteriori conoscenze per fare, ad esempio, 'grafica 3D', ma si poteva ancora spiegare come sarebbe lavorare in una di alto livello modo).
Gli esempi che mostri inizieranno come magie incastonate nella scatola nera, i cui misteri vengono svelati quando i pezzi del puzzle di programmazione vengono lentamente risolti. Ad esempio, i tuoi studenti impareranno le basi di if
s abbastanza rapidamente, ma probabilmente non si renderanno conto che un'espressione booleana non è limitata esclusivamente all'uso all'interno di una if
condizione (che porta al if (blah) return true; else return false;
codice classico ).
Le sottigliezze del fatto che tu scelga un array o un vettore come contenitore sembreranno inizialmente irrilevanti per gli studenti. Un vettore / array sarà semplicemente un modo per avere molte variabili come una variabile, accessibile tramite un indice. Attenersi a uno dove è possibile. I puntatori non saranno compresi neanche dopo. Questo non vuol dire che non dovresti spiegare le cose; solo che non puoi spiegare tutto in una volta, e le cose che spieghi non saranno completamente assorbite. Gli umani imparano organicamente, non in modo lineare. Lo usavo cout
da un paio d' anni prima di capire bene quale fosse il sovraccarico dell'operatore!
Oh, e non aver paura della ripetizione. "Questo è come il programma Hello World che abbiamo fatto - ricordi come abbiamo scritto il testo sulla console?" (no ...) "Riproviamolo solo per essere sicuri." ... E fai domande! Mantieni gli studenti impegnati con esempi divertenti e molta interazione.
Il C ++ è un linguaggio complesso e, indipendentemente da ciò che fai, una parte significativa di quella complessità (e quella del mestiere della programmazione in generale) andranno persi sui tuoi studenti. Tutto ciò che mostri sarà nuovo per loro; la maggior parte non affonderà a un livello profondo di comprensione (almeno, non subito). Come funziona la memoria, come interagiscono i componenti di un PC, cosa sono lo stack e l'heap, i puntatori, le classi, persino i loop e le catene if-else non saranno adeguatamente compresi dalla maggioranza. Questo va bene! Non devono essere compresi per essere utilizzati - una quantità incredibile di programmi interessanti può essere scritta con funzioni di 1000 righe super brutte con ridondanti nidificati per quintuple if
e 43 variabili con nomi simili x_2r
. L'importante è che gli studenti imparino e migliorino costantemente. Le scatole nere vanno bene fintanto che diventano trasparenti (o almeno grigio traslucido) nel lungo periodo. Entro la fine del corso, potrebbero non sapere che cosa gli schemi di progettazione sono, ma dovrebbero essere in grado di guardare indietro ai programmi che hanno scritto nel primo paio di settimane e rabbrividire al loro codice. Dovrebbero capire a un livello significativo di dettaglio come funziona effettivamente il primo programma che hanno scritto (mentre quando lo hanno scritto non ne avevano idea). Ma non sapranno ancora tutto .