On m'a enseigné C ++ dans le lycée comme premier langage de programmation, mais il était plus comme « C + », maintenant que vous le dites; nous avions l'habitude cout
d'écrire du texte dans la console et les fichiers, mais aussi dans quelques fonctions C ( getch()
c'était ma préférée).
Je pense que la manière la plus efficace (et peut-être même la plus amusante) d’enseigner les bases consiste à utiliser un programme orienté vers un objectif: commencer par montrer comment sortir des éléments, puis saisir au clavier, puis un simple fichier d’E / S, etc. jeu basé (ou l’équivalent robotique). Ensuite, quand ils demandent: "Comment puis-je faire X?", Vous pouvez décomposer X en termes d’exemples déjà vus, par exemple: "Vous devez d’abord obtenir les informations de l’utilisateur, comme nous l’avons fait dans Z, puis ... »(évidemment il est pas facile dans la pratique puisque X sera probablement quelque chose qu'ils ont besoin de connaissances supplémentaires afin de faire, par exemple « graphiques 3D », mais vous pouvez encore expliquer comment il serait travailler dans un haut niveau façon).
Les exemples que vous leur montrez commenceront par de la magie copiée-collée dans une boîte noire, dont les mystères se dévoilent à mesure que des morceaux du puzzle de la programmation sont lentement compris. Par exemple, vos étudiants apprendront les bases de if
s assez rapidement, mais ils ne comprendront probablement pas qu’une expression booléenne n’est pas exclusivement limitée à une utilisation dans un if
état (conduisant au if (blah) return true; else return false;
code classique ).
Les subtilités de savoir si vous choisissez un tableau ou un vecteur en tant que conteneur ne sembleront pas pertinentes pour les étudiants au début. Un vecteur / tableau sera simplement un moyen d'avoir beaucoup de variables comme une seule variable, accessible via un index. S'en tenir à celui où vous pouvez. Les pointeurs ne seront pas compris avant plus tard. Cela ne veut pas dire que vous ne devriez pas expliquer les choses; juste que vous ne pouvez pas tout expliquer en une fois, et les choses que vous expliquez ne seront pas complètement absorbées. Les humains apprennent organiquement, pas linéairement. Je l'utilisais cout
depuis quelques années avant de bien comprendre ce que la surcharge d'opérateur était!
Oh, et n'ayez pas peur de la répétition. "C’est comme le programme Hello World que nous avons fait - rappelez-vous comment nous avons écrit du texte sur la console?" (non ...) "Revoyons ça juste pour en être sûr." ... Et poser des questions! Invitez les élèves à s’engager avec des exemples amusants et beaucoup d’interaction.
C ++ est un langage complexe et, quoi que vous fassiez, une grande partie de cette complexité (et de l’art de la programmation en général) sera perdue pour vos étudiants. Tout ce que vous leur montrez sera nouveau pour eux; la plupart ne s'enfoncent pas à un niveau de compréhension profond (du moins, pas tout de suite). Le fonctionnement de la mémoire, l'interaction des composants d'un PC, l'état de la pile et du tas, les pointeurs, les classes, les boucles et les chaînes if-else ne seront pas bien compris par la majorité. C'est acceptable! Ils ne doivent pas être compris pour être utilisés - une quantité incroyable de programmes géniaux peut être écrite avec des fonctions extrêmement dégoûtantes de 1000 lignes avec des if
s redondants quintuples imbriqués et 43 variables nommées x_2r
. La chose importante est que les étudiants apprennent et améliorent constamment. Les boîtes noires sont acceptables tant qu'elles deviennent transparentes (ou du moins gris translucide) à long terme. À la fin du cours, ils ne sauront peut-être pas ce que sont les modèles de conception, mais ils devraient être en mesure de revenir sur les programmes qu'ils ont écrits au cours des premières semaines et de se pencher sur leur code. Ils doivent comprendre de manière détaillée le fonctionnement du premier programme qu'ils ont écrit (alors qu'ils ne le savaient pas quand ils l'ont écrit). Mais ils ne sauront pas tout - pas encore .