Uczono mnie, C ++ w liceum jako pierwszego języka programowania, chociaż to było bardziej jak „C +”, teraz, że można wymienić go; pisaliśmy cout
tekst na konsolę i pliki, ale także sporo funkcji C ( getch()
było moim ulubionym).
Myślę, że najskuteczniejszym (i prawdopodobnie zabawnym) sposobem nauczania podstaw jest zastosowanie programu nauczania zorientowanego na cel: zacznij od pokazania, jak wypisywać dane, następnie wprowadzania danych za pomocą klawiatury, a następnie prostych operacji we / wy pliku itp. gra oparta (lub odpowiednik robotyki). Następnie, gdy pytają: „Jak mam zrobić X?”, Możesz rozbić X pod względem przykładów, które już widzieli, np. „Najpierw musisz uzyskać informacje od użytkownika, tak jak to zrobiliśmy w Z, a następnie ...”(oczywiście nie jest to łatwe, ponieważ w praktyce X będzie prawdopodobnie coś, że potrzebują dodatkowej wiedzy w tym celu, na przykład«grafiki 3D», ale można jeszcze wyjaśnić, jak to będzie działać na wysokim poziomie droga).
Przykłady, które im pokażesz, zaczną się jako magia wklejana w czarne skrzynki, której tajemnice zostają odkryte, gdy powoli układane są fragmenty układanki programistycznej. Na przykład, twoi uczniowie if
dość szybko nauczą się podstaw s, ale prawdopodobnie nie zdadzą sobie sprawy, że wyrażenie boolowskie nie ogranicza się wyłącznie do użycia w if
warunku (prowadzącym do klasycznego if (blah) return true; else return false;
kodu).
Subtelności, czy wybierzesz tablicę czy wektor jako pojemnik, na początku będą wydawać się nieistotne. Wektor / tablica będzie po prostu sposobem na posiadanie wielu zmiennych jako jednej zmiennej, dostępnej za pośrednictwem indeksu. Trzymaj się tego, gdzie możesz. Wskaźniki zostaną zrozumiane dopiero później. Nie oznacza to, że nie powinieneś wyjaśniać rzeczy; po prostu nie możesz wszystkiego wyjaśnić naraz, a rzeczy, które wyjaśniasz, nie zostaną całkowicie wchłonięte. Ludzie uczą się organicznie, a nie liniowo. Używałem cout
przez kilka lat, zanim właściwie zrozumiałem, co to było przeciążenie operatora!
Och, i nie bój się powtórzeń. „To tak, jak zrobiliśmy program Hello World - pamiętasz, jak napisaliśmy tekst na konsolę?” (nie ...) „Przejrzyjmy to jeszcze raz, żeby się upewnić”. ... i zadawaj pytania! Zachowaj zaangażowanie uczniów w zabawne przykłady i dużo interakcji.
C ++ jest złożonym językiem i bez względu na to, co robisz, znaczna część tej złożoności (i ogólnie umiejętności programowania) zostanie utracona na twoich uczniach. Wszystko, co im pokażesz, będzie dla nich nowe; większość z nich nie zagłębi się na głębokim poziomie zrozumienia (przynajmniej nie od razu). Jak działa pamięć, jak współdziałają komponenty komputera, jaki jest stos i stos, wskaźniki, klasy, nawet pętle i łańcuchy if-else nie zostaną właściwie zrozumiane przez większość. To jest wporządku! Nie trzeba ich rozumieć, że są używane - niesamowitą liczbę fajnych programów można napisać za pomocą super-brzydkich funkcji 1000-wierszowych z pięciokrotnie zagnieżdżonymi redundantnymi if
si 43 zmiennymi o nazwanych rzeczach x_2r
. Ważne jest to, że uczniowie stale się uczą i doskonalą. Czarne skrzynki są w porządku, o ile na dłuższą metę stają się przezroczyste (lub przynajmniej półprzezroczyste szare). Pod koniec kursu mogą nie wiedzieć, co to są wzorce projektowe, ale powinni być w stanie spojrzeć wstecz na programy, które napisali w ciągu pierwszych kilku tygodni i żałować kodu. Powinni zrozumieć na znacznym poziomie szczegółowości, w jaki sposób działa pierwszy napisany program (podczas gdy go napisali, nie mieli pojęcia). Ale nie będą wiedzieć wszystkiego - jeszcze .