如何让学生走进C++编程的世界
2018-11-01秦春娣
秦春娣
摘要:2017年7月,国务院印发的《新一代人工智能发展规划》明确指出要逐步开展全民智能教育项目,在中小学阶段设置人工智能相关课程、逐步推广编程教育,培养复合型人才。实际上,在基础教育阶段进行AI教育提前布局的不止中国,2016年初美国前任总统奥巴马曾投入40亿美金,称要让每个美国学生在小学具备最简单的编程能力。“编程教育”要真正进入了每一个学生的学习中。
关键词:学生;C++编程世界;面向对象程序设计
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2018)18-0086-02
现在很流行的一句话:“学好程序和算法,走遍天下也不怕”编程本身应该是一项创造性极强的思维活动,而在如今国内大多数培训机构仅仅是使用Scratch这个工具来开发对应的编程课程,并未有在创新性、逻辑性、趣味性上去下功夫(很多教育机构没有能力在Scratch进行二次开发),其结果导致了整个少儿编程教育的生态成为门槛低、同质化严重、课程单调无味的一个课外教学。我们的编程教学还处于一个探索阶段,那么我们如何来引导学生走进编程的世界呢?
1 面向对象程序设计
面向对象程序之所以可以满足软件的可靠性和复杂性,是因为面向对象程序它具有自身独特的优势,首先,具有可功能扩充的优势。对于一些应用比较好的软件来讲,可以在最大程度上对软件的系统进行有效的扩充和改进[1]。随着科学技术地不断发展与进步,推动了现代科技产品的发展,使软件在更新方面、功能扩充频率方面都得到了有效的发展,并且得到了广泛的应用,而且对代码的可扩展性提出更高的要求和标准。比如:要想在家具店添加“盘点”的功能,只需要在该家具店类的类体定义中加入一个方法[2]。这个方法就是面向对象编程思想下的功能,改程序非常的简单,在整个系统中不需要改变原来代码,但是如果应用面向对象编程思想进行有效的设计,在一般情况下添加一个功能,就会使这个系统进行最大程度的改进,对于一些本身规模比较大的程序来讲,需要的对此付出非常大的代价。
其次,可重用性非常强。可重用性强主要是因为面向对象编程具有一定的继承性,所以可以代码重用,在很大程度上提高了软件开发的工作效率。上世纪人们在听广播的时候,出现了电视机,电视也只是黑白两个颜色,之后彩色电视就开始相继出现[3]。彩电在继承黑白电视的基础上,还可以显示不同色彩的图像,在很大程度上冲击了人们视觉。在黑白电视的基础上增加了矩阵色电路,把三种基本颜色进行有效的组合,从而电视机播出的图像就是彩色的,所以,彩电是继承了黑白电视。继承其实简单来说就是借鉴和利用,在原有的基础上增加新型的属性和特效,从而构成一个全新的过程,切记并不是重新定义,也不是重新创新,这样就充分体现了它的可重用性。
最后, 可管理性非常强。面向过程编程思想主要是以函数为基础,或者是以过程为基本单位从构建一个全新的系统,一旦对项目进行开发时,或者是扩大规模时,就会大量需要函数和过程的数量,数量的急剧增多,在很大程度上不利于严格的控制和全面的管理。而面向对象编程思想主要是以类为单位进行系统的全面的构造,不管是在项目开发时,还是扩大规模时,都极大地降低了开发的难度和工作量,使项目在实际实施过程中更加方便、有效。
由于面向对象程序设计的种种优点,已经成为当今软件设计的主流思想,并在社会各界得以广泛的应用,它的应用在很大程度上推动了软件技术的发展,并创立了新的里程碑。而C++编程是面向对象程序中最為关键、不可忽视的一部分,因此,要积极引导学生走进C++编程,从而激发学生对学习和探究的积极性和主动性。
2 C++ 编程的概述
C++ 之所以具有良好的效果和优点,是在不断探索和研究中成长的,并不是一朝一夕完成的。在20世纪70 年代,由Dennis Ritchie创建的C语言,也就标志程序设计要进行根本上的转变。C 语言是一种计算机语言,级别属于初级,它与汇编语言有些相似,不仅可以直接对机器硬件的指令进行调用,还具有高级语言的所有特性。在C 语言创建不久之后,面向对象程序设计就脱颖而出,在当时情况来看,开发的程序越大,复杂程度也就高,需要采用有效的方案进行解决。恰恰面向对象程序设计就可以将复杂的程序进行有效的划分,划分为功能性的对象,虽然可以进行有效的管理,但是 C 语言不支持对象的概念,所以,由开创了 C++ 语言。C++ 是与 C语言之间是相互兼容的。C++为程序员们提供非常大的功能性。
C++ 在功能上也非常的突显,第一,C++ 的语法非常丰富、简洁,对于C++ 语法的简洁性仅仅定义了 63 个关键字。C++ 的语法在丰富上可以表现在以下方面,不仅可以提供控制语句、运算符,还可以提供数据的类型,以及任何现代语言所需要的面向对象的特征。第二,C++具有强大的各种库。C++通过标准库进一步提供了这些强大的功能。在采用 C++对软件进行开发时,必须要使用面向对象方法学的知识,从实际项目中确定确定不同的类和对象,在确定的时候要具有一定的科学性和合理性。
3 如何引导学生走进编程世界
(1)选择合适的编译器
俗话说:“工欲善其事,必先利其器”,在学习C++之前,我们需要找一款好的编译器。我们知道最常用的C++编程环境有微软的VS系列、C++Builder、DEV C++、Turbo C以及C-Free5。学习C或者C++阶段就用Cfree,这个小巧,练习用很方便,专业版有调试功能。C-Free中集成了C/C++代码解析器,能够实时解析代码,并且在编写的过程中给出智能的提示。C-Free提供了对目前业界主流C/C++编译器的支持,你可以在C-Free中轻松切换编译器。可定制的快捷键、外部工具以及外部帮助文档,使你在编写代码时得心应手。完善的工程/工程组管理使你能够方便的管理自己的代码[4]。
(2)加强对计算机题目进行审题
第一、定义变量,考虑有几个输入,有几个输出。在这里我们可以把定义变量,形象的生动的定义为申请小房子,我们需要申请什么样的房,int型还是char型,或者其他类型。
第二、我们要考虑本程序有几个输入,利用C++里面的cin语句。
第三、我们主要要做什么,怎么做。
第四、我们有几个输出,格式是怎么样的,利用C++里面的cout语句。
接下来我们通过讲解例子来讲述上面四步骤。
某幼儿园里,有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果,现在他们做一个分糖果游戏。从1号小朋友开始,将他的糖果均分三份(如果有多余的,则他将多余的糖果吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友也这样做。问一轮后,每个小朋友手上分别有多少糖果。
分析题目:题目中有5位小朋友,他们刚开始的糖果数目不确定,我们可以用a,b,c,d,e分别存储5个小朋友的糖果数,初始值由键盘输入。根据题目要求,我们可以得出这里的5个变量是数值型的,所以我们定义它为int型,用cin语句把初始糖果值输入。下面我们主要来分析一下题目的编程思想,我们主要要做什么,怎么做的问题。我们通过画图的方式把五个小朋友围坐在一个圆桌上,他们编号分别为1,2,3,4,5,对应的初始糖果数分别为a,b,c,d,e。我们从1号小朋友开始,将他的糖果分成三份,多余的自己吃掉,我们可以考虑用整除符号“/”,a=a/3 余数舍弃,自己留一份,相邻的二个小朋友分别得到一份a糖果,b=b+a,e=e+a;依此类推,把2号小朋友的b糖果按上述方法处理,b=b/3,a=a+b,c=c+a;
把3号小朋友的c糖果按上述方法处理,c=c/3,b=b+c,d=d+c;把4号小朋友的d糖果按上述方法处理,d=d/3,c=c+d,e=e+d;把5号小朋友的e糖果按上述方法处理,e=e/3,d=d+e,a=a+e;
第三步:具体编程的实施
接下来我们就启动C-Free软件,采用编辑菜单中的插入代码模板,找到相应的c++ template2模板,插入相应的框架代码,根据上述分析写出具体代码:
#include
using namespace std;
int main(int argc, char *argv[])
{
int a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
a=a/3;b=b+a;e=e+a;
b=b/3;c=c+b;a=a+b;
c=c/3;d=c+d;b=c+b;
d=d/3;c=d+c;e=d+e;
e=e/3;d=e+d;a=e+a;