如何让学生走进C++编程的世界

2018-11-01 05:19秦春娣
电脑知识与技术 2018年18期
关键词:学生

秦春娣

摘要: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;

cout<

return 0;

}

最后,再把所讲内容进行梳理总结。再通过作业,进行知识的巩固。

通过以上的一个例子,我们开始寻找学生编程的教育价值。是为了培养程序员吗?显然不是,这是与成人教育的最大不同。是为了接触与掌握人工智能吗?学生的认知特点和能够掌握的编程水平,离人工智能还相当遥远。是为了培养逻辑思维吗?学习编程有这方面的功能,但其他学科教育同样能够达到这个目标,甚至效率更高[5]。我认为,通过编程学习,学生最大的收获应该是能用计算机自动地表达自己的想法,这样他们就能够在理解计算机表达方式的基础上,让思维自由地行走在现实世界和计算机世界之间,而不会迷失在虚拟世界中。

我们如何更好地引领学生走进编程的世界呢?学生可以参加学校组织的正规培训来学习编程技术,可以学习网络上的资源,比如:中国大学的慕客网里面郭炜老师的程序和算法就很吸引学生们,我们可以引导性的带领学生们喜欢上程序和算法。

通过编程语言的学习,学生们会认识到“原来一直以为编程特别高深复杂,但没想到还是挺简单的,以后还想更多体验学习”“在学习编程的过程中自然而然就学会了素数、最大公约数和最小公倍数等问题”“通过编程深刻体会到一点小小的错误会导致全盘皆输,细节太重要了”“看到自己的编程能够操控家用电器,這才发现其实编程就在你我身边”等。可以说,学生们在编程体验中收获良多,不仅激发了学习与探究的积极性和自主性,同时养成了更加注意生活细节的认真态度。

4 结束语

综上所述,本文主要从实践和理论两个方面详细介绍了C++编程的优点和实际应用的效果,为学生走进C++编程的世界奠定良好的基础。

参考文献:

[1] 胡金锦.编程:一种观察世界的新视角——以《冒泡排序》一课为例谈计算思维[J].电脑知识与技术,2017(35):126-128,142.

[2] 潘洪波.学会编程 开始思考世界上的一切过程 ——小学生《C++趣味编程》校本教材开发研究[J].中小学信息技术教育,2017(9):68-71.

[3] 刁兴玲.诺基亚和上海贝尔张健:MEC开启可编程世界[J].通信世界,2016(17):18-19.

[4] 五月.迈进可编程世界创新转向软件层面[J].电子设计应用,2006(6):135.

[5] 王晓宁.5G-可编程世界的基石[J].通讯世界,2017(24):323-324.

猜你喜欢
学生
快把我哥带走
亲爱的学生们,你们并没有被夺走什么
“学生提案”
《李学生》定档8月28日
学生写话