Saya diajari C ++ di sekolah tinggi sebagai bahasa pemrograman pertama, meskipun itu lebih seperti "C +", sekarang yang Anda sebutkan itu; kami digunakan cout
untuk menulis teks ke konsol dan file, tetapi juga beberapa fungsi C ( getch()
adalah favorit saya).
Saya pikir cara yang paling efektif (dan mungkin menyenangkan) untuk mengajarkan dasar-dasarnya adalah menggunakan kurikulum yang berorientasi pada tujuan: mulai dengan menunjukkan bagaimana cara menghasilkan barang, kemudian input keyboard, kemudian file I / O yang sederhana, dll. Kemajuan ke teks sederhana game berbasis (atau robotika yang setara). Kemudian ketika mereka bertanya, "Bagaimana saya melakukan X?", Anda dapat menjabarkan X dalam hal contoh yang telah mereka lihat, misalnya "Pertama, Anda harus mendapatkan input dari pengguna seperti yang kami lakukan di Z, lalu ... "(jelas itu tidak mudah dalam praktiknya karena X kemungkinan akan menjadi sesuatu yang mereka butuhkan pengetahuan tambahan untuk melakukannya, misalnya" grafis 3D ", tetapi Anda masih bisa menjelaskan bagaimana itu akan bekerja di tingkat tinggi cara).
Contoh yang Anda tunjukkan akan dimulai sebagai kotak hitam yang disalin dari copy-paste, yang misteri-misterinya terurai ketika potongan-potongan teka-teki pemrograman perlahan-lahan diketahui. Misalnya, siswa Anda akan mempelajari dasar-dasar if
s dengan cukup cepat, tetapi mereka mungkin tidak akan menyadari bahwa ekspresi boolean tidak terbatas hanya untuk digunakan dalam if
kondisi (mengarah ke if (blah) return true; else return false;
kode klasik ).
Seluk-beluk apakah Anda memilih array atau vektor sebagai wadah akan tampak tidak relevan bagi siswa pada awalnya. Vektor / array hanya akan menjadi cara memiliki banyak variabel sebagai satu variabel, dapat diakses melalui indeks. Tetap pada satu di mana Anda bisa. Pointer tidak akan dipahami sampai nanti. Itu bukan untuk mengatakan bahwa Anda tidak harus menjelaskan sesuatu; Hanya saja Anda tidak bisa menjelaskan semuanya sekaligus, dan hal-hal yang Anda jelaskan tidak akan sepenuhnya diserap. Manusia belajar secara organik, bukan linear. Saya telah menggunakan cout
selama beberapa tahun sebelum saya benar-benar memahami apa kelebihan operator itu!
Oh, dan jangan takut pengulangan. "Ini seperti program Hello World yang kami lakukan - ingat bagaimana kami menulis teks ke konsol?" (tidak ...) "Ayo kita ulangi lagi hanya untuk memastikan." ... Dan ajukan pertanyaan! Biarkan siswa terlibat dengan contoh-contoh menyenangkan dan banyak interaksi.
C ++ adalah bahasa yang kompleks, dan apa pun yang Anda lakukan, sejumlah besar kerumitan itu (dan keahlian pemrograman secara umum) akan hilang pada siswa Anda. Semua yang Anda tunjukkan kepada mereka akan menjadi hal baru bagi mereka; sebagian besar tidak akan tenggelam pada tingkat pemahaman yang mendalam (setidaknya, tidak segera). Bagaimana memori bekerja, bagaimana komponen-komponen PC berinteraksi, apa tumpukan dan tumpukan, pointer, kelas, bahkan loop dan jika rantai lain tidak akan dipahami dengan baik oleh mayoritas. Ini bagus! Mereka tidak harus dipahami untuk digunakan - jumlah yang luar biasa dari program keren dapat ditulis dengan fungsi 1000-garis yang sangat jelek dengan s berlipat ganda berlipat lima if
dan 43 variabel bernama hal-hal seperti x_2r
. Yang penting siswa terus belajar dan berkembang. Kotak hitam baik-baik saja selama mereka menjadi transparan (atau setidaknya abu-abu tembus) dalam jangka panjang. Pada akhir kursus, mereka mungkin tidak tahu apa desain patters, tetapi mereka harus dapat melihat kembali program yang mereka tulis dalam beberapa minggu pertama dan merasa ngeri pada kode mereka. Mereka harus memahami pada tingkat detail yang signifikan bagaimana program pertama yang mereka tulis benar-benar bekerja (sedangkan ketika mereka menulisnya mereka tidak tahu). Tetapi mereka tidak akan tahu segalanya - belum .