Ich war C ++ in der High School als ersten Programmiersprache gelehrt, obwohl es war eher wie „C +“, jetzt, wo du es erwähnst; Wir haben cout
zum Schreiben von Text auf die Konsole und Dateien verwendet, aber auch einige C-Funktionen ( getch()
war mein Favorit).
Ich denke, die effektivste (und möglicherweise unterhaltsamste) Art, die Grundlagen zu vermitteln, ist die Verwendung eines zielgerichteten Lehrplans: Beginnen Sie mit der Veranschaulichung der Ausgabe, der Tastatureingabe, der einfachen Datei-E / A usw. basiertes Spiel (oder das Äquivalent zur Robotik). Wenn sie dann fragen: "Wie mache ich X?", Können Sie X anhand von Beispielen aufschlüsseln, die sie bereits gesehen haben, z. B. "Zuerst müssen Sie die Eingaben vom Benutzer erhalten, wie wir es in Z getan haben, dann ... "(Offensichtlich ist es in der Praxis nicht so einfach, da X wahrscheinlich etwas ist, wofür sie zusätzliche Kenntnisse benötigen, z. B." 3D-Grafiken ", aber Sie könnten trotzdem erklären, wie es auf hohem Niveau funktionieren würde Weg).
Die Beispiele, die Sie zeigen, beginnen als Black-Box-Magie, deren Rätsel gelöst werden, wenn Teile des Programmierpuzzles langsam herausgefunden werden. Zum Beispiel werden Ihre Schüler die Grundlagen von if
s ziemlich schnell erlernen , aber sie werden wahrscheinlich nicht erkennen, dass ein boolescher Ausdruck nicht ausschließlich auf die Verwendung innerhalb einer if
Bedingung beschränkt ist (was zu klassischem if (blah) return true; else return false;
Code führt).
Die Feinheiten, ob Sie ein Array oder einen Vektor als Container auswählen, erscheinen den Schülern zunächst irrelevant. Ein Vektor / Array ist einfach eine Möglichkeit, viele Variablen als eine Variable zu haben, auf die über einen Index zugegriffen werden kann. Bleib bei einem, wo du kannst. Hinweise werden auch erst später verstanden. Das heißt nicht, dass man Dinge nicht erklären sollte; nur dass du nicht alles auf einmal erklären kannst und das, was du erklärst, nicht vollständig absorbiert wird. Der Mensch lernt organisch, nicht linear. Ich hatte cout
ein paar Jahre lang verwendet, bevor ich richtig verstand, was Operatorüberladung war!
Oh, und hab keine Angst vor Wiederholungen. "Das ist wie das Hello World-Programm, das wir gemacht haben - erinnern Sie sich, wie wir Text in die Konsole geschrieben haben?" (nein ...) "Lass es uns noch einmal durchgehen, nur um sicherzugehen." ... und Fragen stellen! Beschäftigen Sie die Schüler mit lustigen Beispielen und viel Interaktion.
C ++ ist eine komplexe Sprache, und unabhängig davon, was Sie tun, geht Ihren Schülern ein erheblicher Teil dieser Komplexität (und der Komplexität des Programmierhandwerks im Allgemeinen) verloren. Alles, was Sie ihnen zeigen, wird ihnen neu sein. Das meiste davon wird nicht auf einer tiefen Ebene des Verständnisses versinken (zumindest nicht sofort). Wie Speicher funktioniert, wie die Komponenten eines PCs interagieren, was Stack und Heap sind, Zeiger, Klassen, sogar Schleifen und If-else-Ketten werden von der Mehrheit nicht richtig verstanden . Das ist in Ordnung! Sie müssen nicht verstanden werden, um verwendet zu werden - eine erstaunliche Menge cooler Programme kann mit superhässlichen 1000-Zeilen-Funktionen mit fünffach verschachtelten redundanten if
s und 43 Variablen geschrieben werden, die so genannte Dinge x_2r
. Wichtig ist, dass die Schüler ständig lernen und sich verbessern. Black Boxes sind in Ordnung, solange sie langfristig transparent (oder zumindest durchscheinend grau) werden. Am Ende des Kurses können, sie wissen nicht , was Design prasselt sind, aber sie sollen sie schrieben in den ersten Wochen und bei den Programmen der Lage, zurück zu blicken erschaudern bei ihrem Code. Sie sollten sehr genau verstehen, wie das erste Programm, das sie geschrieben haben, tatsächlich funktioniert (während sie beim Schreiben keine Ahnung hatten). Aber sie werden nicht alles wissen - noch .