Mi è stato insegnato il C ++ al liceo come un primo linguaggio di programmazione, sebbene fosse più simile a "C +", ora che ne parli; abbiamo usato cout
per scrivere il testo nella console e nei file, ma anche alcune funzioni C ( getch()
era il mio preferito).
Penso che il modo più efficace (e forse divertente) di insegnare le basi sia l'uso di un curriculum orientato all'obiettivo: iniziare a mostrare come produrre materiale, quindi input da tastiera, quindi semplice I / O di file, ecc. semplice gioco basato sul testo (o equivalente alla robotica). Quindi, quando chiedono "Come faccio X?", Puoi abbattere X in termini di esempi che hanno già visto, ad es. "Per prima cosa devi ottenere l'input dell'utente come abbiamo fatto in Z, quindi ..." (ovviamente non è così facile in pratica dato che X sarà probabilmente qualcosa che hanno bisogno di ulteriore conoscenza per poterlo fare, es. "Grafica 3D", ma potresti ancora spiegare come vorrebbe lavorare in un modo ad alto livello).
Gli esempi che gli mostri inizieranno come magia incisa su una scatola nera, i cui misteri vengono svelati mentre pezzi del puzzle di programmazione vengono lentamente scoperti. Ad esempio, i tuoi studenti apprenderanno le basi di if
s abbastanza rapidamente, ma probabilmente non realizzeranno che un'espressione booleana non è esclusivamente limitata all'utilizzo all'interno di una condizione di if
(che porta al classico codice if (blah) return true; else return false;
).
Le sottigliezze del fatto che tu scelga un array o un vettore come un contenitore sembreranno inizialmente irrilevanti per gli studenti. Un vettore / array sarà semplicemente un modo per avere un sacco di variabili come una variabile, accessibile tramite un indice. Attenersi a uno dove è possibile. I puntatori non saranno compresi fino a più tardi. 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. Stavo usando cout
per un paio anni prima di aver capito correttamente cosa fosse l'overloading dell'operatore!
Oh, e non aver paura della ripetizione. "Questo è come il programma Hello World che abbiamo fatto - ricorda come abbiamo scritto il testo alla console?" (no ...) "Ripercorriamolo per essere sicuri." ... E fai domande! Mantieni gli studenti impegnati con divertenti esempi e molte interazioni.
C ++ è un linguaggio complesso e, indipendentemente da ciò che fai, una quantità significativa di quella complessità (e quella del mestiere di programmazione in generale) andrà persa nei tuoi studenti. Tutto ciò che mostri loro sarà nuovo per loro; la maggior parte non affonderà ad un livello profondo di comprensione (almeno, non subito). Come funziona la memoria, come interagiscono i componenti di un PC, quali sono lo stack e l'heap, i puntatori, le classi, anche i loop e le catene if non saranno correttamente capite dalla maggioranza. Questo va bene! Non devono essere capiti per essere usati - una quantità incredibile di programmi interessanti può essere scritta con funzioni di 1000 righe super-brutti con% ridondante nidificato di quintuplo if
e 43 variabili denominate cose come x_2r
. L'importante è che gli studenti imparino e migliorino costantemente . Le scatole nere vanno bene finché diventano trasparenti (o almeno grigio traslucido) nel lungo periodo. Alla fine del corso, potrebbero non sapere quali sono i pattern di design, ma dovrebbero essere in grado di guardare indietro ai programmi che hanno scritto nelle prime settimane e cringe al loro codice. Dovrebbero capire a un livello significativo di dettagli come funziona il primo programma che hanno scritto (mentre quando lo hanno scritto non avevano idea). Ma loro non sapranno tutto - ancora .