我学会了C ++在高中的第一个编程语言,但它是更像是“C +”,现在你提到它; 我们曾经使用cout
过向控制台和文件中写入文本的方法,但是也有很多C函数(这getch()
是我的最爱)。
我认为最有效的(可能是有趣的)基础知识教学方法是使用面向目标的课程:首先显示如何输出内容,然后是键盘输入,然后是简单的文件I / O,等等。基于游戏的游戏(或等同的机器人游戏)。然后,当他们问“我该怎么做X?”时,您可以按照他们已经看过的示例细分X,例如“首先,您需要像在Z中所做的那样从用户那里获取输入,然后......”(显然这不是很容易在实践中,因为X很可能是,他们需要更多的知识才能做,比如什么‘3D图形’,但你仍然可以解释它是如何将在高级别工作道路)。
您所展示的示例将以黑盒复制粘贴的魔术开始,随着编程难题的慢慢被发现,其奥秘得以揭开。例如,您的学生将if
很快学习s 的基础知识,但他们可能不会意识到布尔表达式不仅仅限于在if
的条件下使用(导致经典if (blah) return true; else return false;
代码)。
首先,对于学生来说,选择数组还是向量作为容器的微妙之处似乎无关紧要。向量/数组只是将许多变量作为一个变量(可通过索引访问)的一种方式。尽量坚持下去。指针直到以后也不会被理解。这并不是说您不应该解释任何事情;只是您无法一次解释所有内容,而您所做的解释也不会被完全吸收。人类是有机地学习,而不是线性学习。我已经使用cout
了几年,直到我正确理解什么是运算符重载!
哦,不要害怕重复。“这就像我们所做的“ Hello World”程序一样,还记得我们如何向控制台编写文本吗?” (不。。。)“让我们再次检查一下以确保。” ...问问题!让学生参与有趣的示例并进行大量互动。
C ++是一门复杂的语言,无论您做什么,都会使学生失去大量的复杂性(以及一般编程技巧)。您向他们展示的所有内容对他们来说都是新的。大多数内容不会深入了解(至少不是马上)。大多数人都无法正确理解内存的工作方式,PC组件如何交互,堆栈和堆是什么,指针,类,甚至循环以及if-else链。还行吧!不一定非要使用它们-可以用超丑陋的1000行函数编写代码,这些函数带有五重嵌套的冗余if
s和43个名为like的变量,数量惊人x_2r
。重要的是学生要不断学习和提高。只要黑匣子从长远来看是透明的(或至少是半透明的灰色),就可以使用。在课程结束时,他们可能不知道什么是设计模式,但是他们应该能够回顾一下前几周编写的程序,并对代码有所畏惧。他们应该在相当详细的水平上理解他们编写的第一个程序是如何工作的(而在编写程序时他们并不知道)。但是他们还一无所知。