关键词:
编程能力(精选十篇)
编程能力 篇1
为了实现通过本课程的学习,能初步使用VBA编程实现日常工作的自动化,为学生进一步学习更高级的编程技术打下个理论和实践基础的教学目标,作为整个专业培养过程中的一个重要阶段,笔者在培养学生基本编程语句的组织和基本面向对象概念的应用的过程中,通过灵活运用多种教学方法和教学手段,相机培养学生对编程的兴趣,继而培养学生完成小型软件工程项目的设计能力及决策能力、创新能力。并在编程实践和考核等方面进行了相应的改革。
1 教学方法和教学手段
1.1 将创造性思维的方法、创造技法融入课程教学内容
在课程知识的表达结构、形式、方法等方面的教学过程中,结合创造性思维的方法、创造技法,在课程教学的全过程中实施素质教育,进行创新能力的培养。
例一、培养学生把握事物之间的关系和规律性的能力。对理论性较强的内容,用循序渐进的案例引导学生分析认识。例如,讲解对象时候,不是按教材上先讲解概念、接着再讲解代码。而是在讲解类和对象之前,我先问学生:“我们是什么类”。肯定有人笑着说:“要你废话,大家都知道我们是人类啊。”那教师接着问:“根据中国的神话传说,女娲造人之前有人类了吗?”这个问题怕是不一定有人能回答正确了。正确答案是:“已经有人类了。”因为类是个抽象的‘概念’,那时候在女娲脑袋里已经有了人类的概念了;比如说对于眼睛来说:有单眼皮、双眼皮、单眼皮里又有丹凤眼等等。当她用泥巴创造出具体的人时候,根据她脑袋里的‘人类’,造出各种类型的人来。人类和具体的一个人(比如说你)的关系,就是类和对象的关系。对象的共性抽象为类,类的实例化就是对象;对象是类的一个实例,类是所有共性的对象的抽象。综上所述类就象是模板,有各种供选择的配件;而对象是实物,从上面的例子中可以看出一个人不可能既是单眼皮又是双眼皮在同一个眼睛上。所以在实际编程中调用类时候要实例化一个对象,类是不能直接使用的。接着讲解对象三个重要的概念:属性、方法、事件。
属性是这个对象所具备的特征,使用格式:对象名.属性=<某个值>或<某个变量>=对象名.属性。注意有‘=’号。
方法是这个对象做什么事情,使用格式:对象名.属性参数1,参数2。注意没有‘=’号。
事件是对象外部的‘诱发力’。
讲完上面概念马上叫一个学生到讲台上,告诉学生一个场景。如我突然间被推了他下,之后发生了一系列的动作(方法),如:他后退两步骤,狠狠瞪了推他那人两眼。结合上面的三个概念,我们可以写出一个类似VBA的编程语句。下面对象是‘某人’、事件是‘被推’。
Sub某人_被推
某人.后退两步某人.瞪大眼某人.脸色=“红”某人.表情=“愤怒”
End Sub
最后通过具体的程序,再举例说明。通过上面的说明,让学生知道程序设计是现实生活的一个映射。编程方法和现实生活中做事情的步骤是一致的,只是表现的形式不一样。
例二、培养分析问题、洞察问题的能力。在介绍自定义函数时候,先通过一个实例《XX单位党员应交党费清单》,由于这里里面有些复杂的计算,如果是按常规的方式要逐条计算输出结果。那如何用VBA使之自动化呢?不急的讲解这个代码的实现过程,先从函数的使用功能讲起,慢慢的引导学生实现此要求的VBA程序。培养学生从具体的例子出发,透过一两个例子,看出处理相关问题的本质。最后得出结论分析问题应“透过现象看本质”,要做到举一反三。
例三、结合课程内容的叙述,相机介绍创造性技法。例如,以发明创造技法中的“组合法”的思路,介绍IF语句和单元格对象为契机。通过有趣的算法:如手机吉凶测试算法说明,让学生完成此小型的软件项目。这样,不但使枯燥的内容变得有趣,又让学生感到搞发明创造并不神秘。
1.2 采用启发式教学方法,调动学生的学习积极性
在这一方面,笔者通过把握每一章节的重点和难点,理清思路,按照由浅入深、由表及里、深入浅出等原则启发学生,采用“设疑”、“置疑”的“问题启发式”的教学方法。如讲授《教师教学质量评估核分模板》时,首先引出“单行数据是怎么处理的”,然后提出“如何处理整张表的数据”,引出多重循环语句在处理工作表时的应用规律。通过采用“启发式教学”和“问题式教学”,激发了学生的学习热情也巩固了学生学过的旧的知识。
1.3 注重交互式教学方式
交互式教学方式的关键在于互动,特别是综合运用当前高校中普遍运用的“任务驱动法”,其重要的作用在于充分调动学生的积极性,发挥学生的主观能动性。特别是在采用多媒体教学方式时显得尤其重要,在一定程度上它避免了教师只凭一张嘴、播放PPT讲完一堂课的死板教学方式。例如在讲解《用Excel实现竞赛核分与排名后》后,即向学生提问:如何用Excel工作表实现一个小型的“五子棋互动游戏”?接着从简单的需求开始逐步向学生提出一定的开发任务并进行分组讨论。这既引导学生思考并应用刚学的知识解决问题,又让学生体会到,工程应用问题不仅有是与非的单一判断,还有合理与否,好与不好的综合决策。
2 作业实训和考试等实践环节的改革措施
在实践教学环节上,教学设计以培养学生的独立思考能力与动手能力为主导原则,培养学生的独立思考能力和实践能力。具体做法是以案例教学为主线,即在实训中积极引入企业的真实案例,以案例为载体培养学生编程能力和团队的组织协调能力。将创新能力培养、工程素质教育,渗透在课程实践环节的教学中。具体措施为注重在传统上机作业任务之外,在每学期中间试点增加了要求学生结合课程相关内容编写创新小程序,试行软件项目作为平时成绩的一部分的考核约定;期末考试还是采用闭卷笔试的形式,但考核思维能力的题目比重加大。同时,本课程充分利用网络资源,开发网上教学平台.学生可在课余时间查阅网络教学资源和自建的试卷库以及丰富的案例库,每学期都在不断增加题库和案例库的数量。同时,笔者和课程组成员通过组织编程兴趣小组和软件作品观摩会提高广大学生编程的兴趣和创新能力。
3 结束语
结合高职学校学生的特点,从培养应用型软件开发人才的培养目标出发,探索综合运用多种教学方法和手段进行编程思想、编程能力的培养的新途径。通过课堂教学改革,活跃了课堂气氛,激发了学生学习“OFFICE VBA编程”的积极性,逐步培养了学生的创新意识。在软件编程的课程教学中,注重实际案例教学和编程任务的训练对于提高学生的编程能力至关重要。在今后的教学实践中还要继续针对高职学生素质特征,运用现代教学理论和网络技术,进一步加强课程内容的合理调整、强化实践环节,进一步提高课堂教学效率,培养学生的综合编程能力。
参考文献
[1]李政,梁海英,李昊,林广朋.VBA应用基础与实例教程[M].北京:国防工业出版社,2009.
[2]胡勇智,白国庆,雍华夫,等.对高职院校软件技术人才培养模式的研究[J].计算机教育,2009(24):36-39.
[3]张忠林.基于项目驱动模式下的“软件工程”教学改革[J].计算机教育,2009(2):53-55.
交换编程――结对编程的延伸实践 篇2
“结对编程技术是一个非常简单和直观的概念:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或者同一组测试。与两位程序员各自独立工作相比.结对编程往往只需花费大约一半的时间就能编写出质量更高的代码, 但是,人与人之间的合作不是一件简单的事情——尤其当人们都早己习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。”(引自《结对编程技术》,原名为《Pair Programming Illuminated》,作者为Laurie Williams, Robert Kessler)。下面我们分析一下结对编程的特点:
结对编程在很多项目中得到应用,也作为XP(极限编程)一个非常著名的观点和做法被很多人大为推崇。
结对编程是两个人同时做同一件事情的一种方法。表现上会给人一种浪费一个开发人员的感觉,实质上这的确是可以提升效率的。
同样的这个做法,我在上海进行的一个类ERP项目中用过一次,当时在我做完权限系统的全部功能后,和一个兄弟合作了一个模块,我们两个人只用了三四天时间,就完成了这个新的模块的全部功能。相对于我们此前做的功能模块来说,时间不到那些模块开发时间的十分之一。但由于结对编程会让人感觉到资源被浪费了一半,在20的一个项目中,我提出进行结对编程的时候被领导拒绝了。这件事以后,我就开始考虑如何才能降低这种表面的浪费,而又能让大家交流起来,同时能提高团队的稳定性。
产生背景
年我的项目组要做如下这样的一个项目:
这是电信MSS系统的核心业务系统部分,包括了规划、设计、施工、验收、财务、合同等多个重要环节和多个部门的业务。当时团队开发人员数量较少,人员技能较为均衡,没有水平超出其他人过多的技术人员。这个项目在最初评估的开发周期就是第一个版本在五个月内完成,整个项目至少要做上一年以上,而最后的实际情况是,这个项目随着不断的升级和调整一直开发了三年多。最初的开发团队是十一个人,后来扩展到二十三个人,主要开发人员总数为十六个人,其中有四个人技术水平相对较高,另外的七个人技术水平相对较低但是也都有三年多的实际项目开发经验,其中有三个是我带的三个应届毕业生。
由于开发团队中没有技术水平超出其他人很多的人员存在,因此技术方案的论证过程都是在大家的共同讨论中制定下来的,只是在团队整体控制上,当时我有相对较强的发言权。因此在权衡了整个项目的实际情况后,完成需求工作我就告诉弟兄们——第二阶段设计模型的开发大家交换来做。
刚开始很多弟兄不理解,因为相对而言我的开发经验比其他人多了几年,所以当时我说的一些话兄弟们还可以接受,于是我就直接要求大家按照我的计划执行。在设计模型开发完成后,我再次要求大家进行交换。两次交换完成后,保证了每一个模块都有至少两个人对其十分熟悉,一方面不会因为人员的变动造成团队的不稳定(这一点考虑相对较少,因为当时的团队合作时间比较长,大家彼此十分熟悉和了解),另一方面保证每一个模块的开发人员都能找到人进行讨论,从而增加了团队内的沟通,方便了协调工作的进行。
因此在那个团队的开发过程中,我们经常是大呼小叫,无论走到哪里,都是十分热闹的场景。
方法定义
与结对编程类似,交换编程也是一个非常简单和直观的概念:两位或者多位程序员轮流开发同一个软件系统的同一个模块的不同阶段的任务。交换编程的方式更合适的说法应该是交换开发,这种方式不仅仅可以应用于软件项目,也适合其他研究开发型项目。相对而言,这更是一种更容易被人们接受的方法,在前文大家已经看到了它在实际项目中的事实,这里先分析一下它与结对编程的不同之处:
它仍然采用传统的一人一机的开发方式,结对编程是两人一机。
它在每个迭代间进行多人交换或者两两交换,结对编程没有交换的概念。
它与传统的编程方式之间的差别是在每个迭代间进行多人交换或者两两交换,而传统编程没有交换的概念。
这里说明一下两个概念:
轮轮流交换:三个以上的程序员之间相互交换所开发的工件,不仅限于三个。例如:A1的开发内容交给A2,A2的交给A3,……,An的交给A1。这种方式称为轮流。
两两交换:两个程序员之间相互交换所开发的工件。仅限于两人之间。
建议实施方式
交换编程中的操作与其他过程有较大的差异,根据经验,建议在软件工程实施的各个阶段按照如下的方式进行:
需求工程中,需求调研和需求分析进行轮流交换,轮流交换至少是三个以上的人进行互换,不是两两互换;
概要设计(分析模型)开发中,需求分析到概要设计也进行轮流交换;
详细设计(设计模型)开发中,概要设计到详细设计再进行一次轮流交换;
编码实施启动后,详细设计到编码的交换采用两两交换,注意这个时候不再采用轮流交换了。
在全程建模的开发方法下的交换编程应用方式如下图:
由于目前没有进行实际数据的度量对比,本文也无法从量化的数据上来说明问题,只能通过一些具体的事实来进行说明和验证:当时这个项目的模块从7个扩展到了11个,人员数量从11人扩展到了23人,我们在七个月内满足了南方11家省级电信公司和集团公司的基本业务需求,从4月到月期间,基本完成了这些省公司版本的二次定制开发任务。
在编码以前全部采用轮流交换的目的就是为了让更多的人了解项目进展的全部内容,有利于增加团队内的交流,使更多的人对项目所开发的内容熟悉,并能让他们提出自己的观点,也有利于使更多的人从更多的角度来研究某个系统模块所需要实现的功能和用户需要解决的实际问题,不会因为某个人的定式思维而出现理解偏差,从而造成对需求的理解不到位。
详细设计到编码的交换采用两两交换,这是因为前期需求已经基本上都稳定下来了,这时候不需要对用户需求进行更多方面的理解,只需要进行实施并进行纯粹的编码工作即可。此时做轮流交换就不存在任何意义了,相反只能影响开发进度。
优劣势分析
这里所提到的优势都是和具体的开发方法相关联的,大部分是相对于XP方法中的结对编程,同时也会分析它与传统开发方式间的优劣。
开发时间“浪费”不明显
表现
这个开发时间“浪费”不明显是相对于结对编程与传统开发模式而言的,至少让老板没有感觉到人员分配方式带来了人员的浪费。大家都知道,结对编程需要两个人共用一台计算机、一套键盘、做同一个故事,这样的开发方式往往会给人感觉浪费了一个人,虽然事实上未必如此。但是如果哪个项目经理第一次甚至说前几次这样做,估计大多数老板都会表示反对的,因为他会感觉自己的技术人员只有一个人在做事情。同样,在的敏捷中国开发者大会上,ThoughtWorks的总经理也提到了这个问题,他的解释是这样的:当两个人合作三个月以后,效率会超过两个人单独编程的效率!但请注意:这里有一个时间前提——三个月以后。
三个月这个时间未必是真实确凿的时间分界线,它只是一个模糊的大概的时间范畴,如果两个人配合的好,也许只需要两个多月,如果配合不好,也许需要四五个月的时间,或者更长的时间……。我相信这样的说法连Martin也不会反对的。从这个时间界限上,大家可以看看国内公司的项目状况,然后再继续我们的讨论。
分析
项目情况:国内很少有时间限度较长的项目,大多数项目都是在三个月到半年时间内结束,有些甚至只有一个月。这样的时间特性,将使得这个三个月的期限变成了一句空谈,也就是说,当两个人磨合好的时候,项目已经结束了。这时候,有人会说,下一个项目还可以继续合作呀,好,那我们来看看国内项目团队的人员变动情况,然后再继续。
人员情况:国内大多数的公司都处于一种为了谋生而存在的状态下,有很多技术人员都有三五个月就跳槽的经历。不仅仅是技术人员,往往公司也是这种状态,很多公司就是为了某一个项目而建立的,老板在招聘技术人员的时候,都是往最低限压低技术人员的工资,当一个技术人员对项目了解到一定程度的时候,这个时间往往是在三个月到半年时间之间,
半年,或者一年,是一个人最容易发生跳槽行为的时候,因为这个人了解了公司的实质情况,如果老板当时骗了人,那么这个人必然要离开公司;如果老板当时过分地压低了他的收入,那么这时候这个技术人员就希望能够获得加薪等等,除此之外,还有很多很多其他的因素,都会给人带来未知的行为。也可以说,国内很少有团队成员能够合作达到一年以上的时间。这样的话,第一个项目磨合好了,第二个项目就是在考虑跳槽,第二个项目未结束人就走了,这是我们平时很常见的现象。
这个时候做结对编程,效果就不会那么明显,因为在人员相对成熟的时候,人的心理发生了较大的变化,工作的积极性和配合程度也远远不及刚刚进入公司的时候。那么结对编程在这样的环境下还能进行下去吗?估计不用分析就可以知道了。这时有人会说,如果配合不好,那就换人结对,不一定非要这两个人结对。那这就要从项目组人数说起了。
项目组人数:在我所开发过的项目中,大概有不到一半的项目有十个人以上的开发团队。最大的团队开发人员是不到三十人,这二十多人还要分成几个组,每个组也就五六个人而已。在这种情况下,结对的问题就出现了,在组内的你只能和这么三五个人结对,是不是都很容易配合起来呢?这个事情很难说。配合不好怎么办?换人?换项目?还是换公司?当然,如果配合了三个月还配合不好,站在公司的立场上,是肯定要考虑开除掉某人了,至少也要将他降薪或者调离这个项目组,因为公司承担不起这么大的风险。项目经理更是在担着风险,因为结对编程的事情老板本来就不太乐意看到,本来老板就有意见,而项目组如果发生了这样配合力度很差的情况,项目经理的处境可能就非常危险了。
综合上面这三个方面的情况,我们可以得到如下的结论:
结对编程在中国这些短小项目过多的情况下是不太适合的!结对编程其实更适合一些相对人员较为稳定的开发环境,否则,三个月的低效率配合时间会让老板将项目经理的脑袋当球踢的。但是,结对编程还是有其好处的,比如,提高项目组的稳定性,当一个人离开后,另外一个人可以很快地将新人带到位,项目组不会因为人员变动而发生较大的风险问题。同时,结对编程提高了程序员之间的交流,团结了项目组内成员,同时容易形成人月神话中提到的胶冻团队的效果。另外,在三个月后还是有效率提高的情况发生,的确能够带来很好的效益的。
这时候,交换编程就带来了很好的效果,一是没有老板担心的两个人做一件事情的风险,同时增加了项目组内成员的沟通交流,也提高了团队的稳定性。但如何提高团队的稳定性?
项目组稳定性提高
表现
在我前面的例子中可以看到,一个模块至少有三个人对他它很熟悉,因此在后面的开发过程中,无论哪个人发生变动,都不会影响这个团队的稳定性,所有的任务都能够很好的延续下来。每一个系统的模块都会至少按照阶段数量(不同的项目会有不同的开发周期,同时也就有不同数量的人会对这个模块十分熟悉)分给不同的人来进行开发。如果和结对编程配合起来使用,则将会使得对同一个模块了解的人数达到一般交换编程的两倍人数。
分析
有了这样的对每一个模块都很熟悉的人员数量的存在,团队的稳定性就会表现出来,任何一个人的变动或者少数人员的变动都不会对团队和开发进度产生较大的影响。因为随时都可以有其他人来接替这个发生变动的人的全部工作,也很容易培养新人进入到团队内来进行工作。
更适合没有绝对高手的团队
表现
当团队内没有绝对高手存在时,也就是说,系统的架构设计将是更多的人一同讨论出来的,并在开发过程中不断的修改和调整。
分析
没有绝对高手存在,系统架构设计就不能够在系统进行分析设计前完成,而同时架构的不稳定,就无法更好地安排任务计划和制定故事,这些都会影响到整个系统的开发进度和过程,同时,敏捷编程所倡导的很多做法就无法在这个大前提下来进行实施。
国外能够很好地采用敏捷的做法来实施项目的一个原因是,他们有很多有一二十年工作经验的开发人员。这些人员的经验积累是非常重要的,他们可以更好地在项目开始的前期对项目进行整体的控制和把握,同时做好项目计划和制定好任务故事,而这一点在国内尤其是软件公司中还不具备这个条件,因此,很多项目我们都处于的状态类似于我前面所举的电信项目的团队情况,甚至情况比那个团队还要差得多。
团队内交流增加
表现
前面已经提到,“因此在那个团队的开发过程中,我们经常是大呼小叫,无论走到哪里,都是十分热闹的场景。”这种频繁的交流,无形中使得团队的凝聚力提高,相互之间的关系和合作也都更为密切。
分析
如果是一个人从头到尾开发一个模块,他就几乎不需要和团队内非管理人员进行交流,甚至在某些情况下他只需要和客户做好沟通就足够了。而这时候,即使进行了同行评审,这个技术人员也可能会认为两三天的时间内这些人不可能了解这个系统模块的内容。这种评审也就容易流于形式而无法得到真正的重视。其他人也会认为评审是浪费自己的开发时间,于是到了一定程度评审就会成为可有可无的状态。如果有较多的人参与了这个模块的前后期分析和开发,每一个阶段都可以找到别人来进行讨论,在评审时对这些人提出的意见也就更容易接受——因为他至少会认为这几个人比他更早介入这个模块的分析,在某些程度上会比自己了解的更为深入。
唯一可能的劣势
表现
由于存在多人之间的交换,在某一个具体工件的开发的时间上会比一个程序员一直做下来略有延长。
分析
由于在任何一次交换之间都需要前一阶段开发者队后一阶段开发者进行关于业务和技术方面的沟通和交流,因此会延长项目在初期的开发时间。尤其当团队成员相互之间的熟悉程度不够或者配合不协调的时候,这个问题会表现得较为突出,甚至可能影响一些项目的进度以及开发工作的进展。
但是,这个影响会在相应的程度上促进团队内人员之间更快地相互熟悉,这个周期要比结对编程短很多,一般来说,不会超过一个月的时间就可以让团队成员之间相互熟悉(由于不是坐在一起开发,这个熟悉的程度比结对编程的要求低很多,因此时间也相应会缩短很多)。
深入讨论
交换编程的应用方式是有其适用环境的,另外在我的实践和研究中还建议如果团队合适,可以考虑与结对编程配合使用。
适用环境:这种开发方法的适应性较强,这里分为团队状况和项目情况两个部分进行一些说明。
团队状况:交换编程适用于人数超过两个人的开发团队,因为交换一次至少也需要两个开发人员。大的团队也可以应用交换编程的方式,来进行项目开发。要求团队内的成员有一两个具有两三年以上开发经验的,这是对于一般的项目(哪怕没有什么技术难度)的最基本要求。
项目情况:项目规模不限,开发周期的适应性也较强,对于任何类型的项目都可以适用。
与结对编程配合使用:如果领导比较认可结对编程的开发方式,这个时候,您引入交换编程也会带来同样的好处,比如团队稳定性,至少从对系统业务模块熟悉的人数上来看增加了一倍,以及团队凝聚力,因为频繁的交流,从而更多地降低因为少数人的思想和考虑偏差造成对用户需求理解不足等问题。
有了上述的情况表现,也使得团队的规范化操作能力更强,也可以使得很多问题能够在有效的沟通中的到解决。
由此可见,交换编程的存在是有其道理的,没有用过的朋友不妨尝试一下,至少对您的团队没有什么伤害和大的变动。
作者介绍:白慧冬,网名青润,独立软件咨询师,《软件工程之全程建模实现》一书作者,CSDN软件工程/管理版块大版主,一个在不断摸索实践的国内软件工程方法和技术的亲历者。底开发完成了一套软件度量概算产品,并对一些行业应用软件进行了较为成功的度量分析。20完成了全程建模方法中需求与代码影射关系的分析与实践探索。个人Blog为:blog.csdn.net/qingrun 。
编程能力 篇3
【关键词】高校教学;C语言;教学策略
【分类号】G642;TP312.1-4
C语言编程是一门兼具高级编程语言以及汇编语言共性的编程语言,应用广泛,不仅适用于编写各种工作系统程序,还可作为各种智能化程序设计语言。C语言编程过程中不依靠硬件,因此具有较强的实用性。当前C语言成为各大高校必开设的教学课程,学习好C语言后能够有效提升学生的竞争力,对学生就业有重要帮助,C语言教学过程中可结合其实际运用进行教学创新,提升教学效果。
1 教师在C语言编程教学中应注意的问题
计算机技术在未来社会的重要性不言而喻,现今C语言已经普及到各大高校教学中,为高校培养综合型人才提供有效途径。社会对计算机技术人才需求不断增加,无论是否计算机专业学生都需要掌握一定基础编程语言,C语言作为众多编程语言的代表成为高校的首选。学生学习好C语言编程不仅有利于拓宽个人知识面,还能够提高个人求职能力。教师在C语言教学过程中必须注意以下几个问题。
1.1 教学中强调C语言编程重要性
C语言并非高深编程语言,若在学习中找到学习技巧便能够快速入门。然而对于大多没有计算机编程语言基础的学生而言C语言如同无字天书般无法捉摸。一些学生在刚开始学习C语言时往往觉得课程难度太大而无法持续跟进,产生放弃学习的念头。学生初学C语言时往往无法了解C语言基础构建,很多学生仁威C语言构建过于复杂,而VFP等编程语言学习起来更加容易,也能够实现C语言的一些功能。教师应该让学生摒弃这种片面想法,介绍C语言相比于其他语言具备的独特优势,例如C语言是实现人工智能的基础,二其他语言在应用上过于片面等。初期学习C语言遇到各种困难时必然的,只要坚持不懈必然会取得骄人成绩。因此教师在教学中必须向学生强调C语言的重要性。教学前应该让学生对C语言有初步了解,向学生大致介绍C语言组成框架,并将其和其他编程语言的练习区别进行初步讲解,加深学生对C语言的第一印象。
1.2 利用VC程序展开教学
VC是计算机教学中比较先进的教学软件,全程为Visual +6.0,由微软公司开发,在应用上具有一定灵活性。相比于其他教学软件,VC具有独特优势,但若想熟练掌握VC却有相当难度。教师在教学中使用VC展开教学能够有效提升教学效果,该软件具备的WIN API方式以及MFC方式能够有效激发学生的学习兴趣,从而变学生被动学习为主动学习。
2 教学中提高学生C语言编程能力的教学策略
2.1 突出教学重点,明确学习任务
教师在教学中应该让学生带着目的学习。相对而言C语言是一门形式较为新颖的学科,学生在教学中往往容易迷失学习方向,因此教师在教学前需让学生了解本节课教学重点,学生了解终点后便能够在学习过程中有针对性吸收精华知识。教师在教之初应让学生明白学习C语言的关键之处在于灵活掌握并运用32个常见字以及常用库函数等知识。其次C语言教学并非仅靠教师讲解便可完成教学任务,整个教学过程需要学生参与,教师在教学过程中可以根据教学内容罗列出关键知识点并注明学习先后顺序,在教学过程中采用循序渐进引导方式,让学生掌握各关键知识点,最后将知识归纳在一起,形成系统性知识链。例如在进行signed以及long等程序整理数据知识教学时可首先提高学生该部分基础知识的掌握,在此基础上通过实题演练,通过电脑进行编程,让学生直观这些函数实用性。对于教学中一些教学难点,教师可以在教学中将其穿插于其他知识点反复讲解,加深学生对知识难点的理解,重复教学。
2.2 采用现代教学方法提高教学质量
随着科学技术不断发展,一些科技转变为教学辅助手段渗透到日常教学中,例如多媒体技术已经成为各大高校主要教学手段,因此教师在教学中可以借助这些现代教学手段提高教学质量。例如可以在教学中采用电子白板教学。C语言编程教学常见的例题有三种,分别为找错题、填空题、编程题,这三种类型例题也是当前C语言考试必考题。教师可以借助电子白板将这三种题型展示出来,并让学生在电子白板上自由书写,通过电子白板的支持能有效提高教学效率,免去书写习题题目的时间,同时该种教学方式具有一定人性化,学生可以在白板上通过书写方式展开练习,是学生最为熟悉的演练方式。通过现代教学技术还能够促进教学方式多样性,学生在教学过程中更为直观接触到C语言相关知识内容,便于快速吸收并消化知识点,为后续学习扫清障碍。
2.3 教学中避免出现概念混淆
C语言中含有大量概念性知识,对于初学者而言若容易出现概念混淆的情况。因此教学过程中教师必须强调学生注意对新知识新概念的理解,对于相似概念一定要从这些知识点不同之处展开记忆,把握知识体系。教师可在教学中对一些知识点进行系统性归纳总结,将容易混淆以及难以理解的知识点放在一起进行比较,让学生从根本上明白这些教学内容之间的练习和区别。例如在C语言中具有相同概念的知识就有循环结构以及分支结构,相似概念有指针和指针运算,教师在针对此类知识教学时须注意教学方法,避免学生走入学习盲区。
2.4 借助计算机网络加强学生自主学习能力
教师不仅需要在课堂教学发挥其作用,还需将其作用延续至课后,学生自学过程中由于缺少教师的支持,自学难以展开,效果不佳。教师可以利用网络平台向学生提供教学知识点以及教学视频,让学生在课后能够展开自主学习。其次教师可利用现代通讯工具和学生展开交流,学生有问题时可利用通讯工具向教师请教,教师可随时随地向学生传授知识,便于教学过程更好展开。
结束语:
提高各高校C语言教学效果不言而喻,当前教学中提高教学效果方式多种多样,教师在教学中应结合实际情况采取最佳教学方法提高学生C语言编程能力,为学生日后更深入的学习以及求职奠定基础。
【参考文献】
[1]刘向阳.C语言程序设计教学方法研究[J].科技信息,2013,(16):264.
[2]曾正军.在教学中对学生C语言编程能力的培养[J].南昌高专学报,2004,19(1):76-76,78.
[3]李海勝.C语言程序设计的教学思考[J].时代教育,2014,(7):180-180.
编程能力 篇4
单片机项目,一般都包括硬件和软件两部分,在上一期单片机编程能力培养项目设计———硬件部分[1]完成后,就可以进行软件项目的训练了。
1 主程序的设计
主程序主要负责初始化、调用显示程序以及检测按键,流程如图1所示。
须显示时,从由P1口送出时钟的显示段码,从P3口低6位送出时钟的位选信号,利用动态扫描的方式从而使时钟的显示功能得以实现。需要注意的是,共阳极的段码是由十六进制数来表示的,它的最高位都为1,因而在显示时P1.7被它强行置1,即将响铃直接关闭,因此在送给P1口之前要判断显示数据,若P1.7是0,则将显示数据与立即数7fH逻辑与;若P1.7是1,就不做任何直接输出处理。另外该设计中将小时的十位做灭零处理。
2 各子程序设计
2.1 定时器T0中断程序
闹钟控制、时钟计时和整点报时等是定时器T0主要要完成的功能。
2.2 计时的实现
定时器溢出中断周期是50ms,中断累计20次得到1秒,因而产生秒信号。在程序中,由秒到分钟,由分钟到小时的计时是通过数值比较与数值累加来实现的,详细的说就是,每产生1秒的定时,同“秒”相应的存储单元值在计数缓冲区中加1;继秒单元内容加到60时,那么1分钟信号就被产生,同“分钟”相应的存储单元在对应的计时缓冲区中加1,并且,把秒计数缓冲区做清零处理;分钟存储单元内容加到60时,那么1小时信号就被产生,同“小时”相应的存储单元在对应的计数缓冲区中加1,并且把分钟计数缓冲区做清零处理;小时存储单元内容加到24时会自动地清零,那么产生24小时的定时,进而达到24小时制的时钟目的。
2.3 整点报时的实现
每次小时加1的时候就是整点,这时将闹铃打开,并且把整点报时标志位06H置1,整点数赋给times,在以后进入中断就经过1秒定时初值R4判断闹铃打开亦或关闭,经过判断整点数times是否为零来结束响铃,进而达到整点报时,也就是整点时数同闹铃响的次数相等。
在整点报时程序中,考虑到在临晨0点到临晨6点一般不需要报时,所以,将整点报时关闭;当闹钟设置为整点,则闹钟优先,闹铃响时,不进行整点报时。
2.4 闹钟的实现
通过对闹钟存储单元的值和时钟存储单元的值是不是相等的比较,使闹钟得以实现,闹钟值设置好之后存放在7BH-7EH中,若闹钟有效,计时单元的小时及分钟与相对的闹钟存储单元每分钟比较一次,当时钟值等于闹钟值时,就会开始响闹铃;若有按键在响闹铃期间按下,就会停止闹铃;如果没有按键按下,则闹铃将持续响1分钟,然后自动停止。闹钟功能在停止闹铃的同时自动取消,要恢复闹铃功能,只有再次设置,因此实现的是一次闹铃功能。
2.5 T1中断服务程序
实现闪烁显示功能是T1中断服务程序的作用。在设置闹钟或调整时钟的状态下,在“熄灭符”数据(#0AH)与时间数据之间让对应显示单元的数据交替显示,间隔时间为0.3秒,目的是使对应的调整单元数据闪烁,这样调整就更便利。
2.6 调时程序
首要对长按与短按的标准进行下说明,铃声是其标志,若在铃响以前放开按键就是短按,长按是在响铃以后放开按键。调时程序的设计方法:连续两次短按进入到省电状态;先短按一次,接着长按一次进入到调时状态,这时将T0关闭,时钟停止,开始对时间进行调整,短按使分钟加1操作得以实现,继分钟调整完成,假如长按就会进入调整小时的状态,通过短按使小时加1操作得以实现,在小时调整完毕后,长按就会退出调整时间,打开T0,启动时钟。
2.7 闹钟调整程序
一次长按进入闹钟调整程序。其中闹钟调整和时钟调整的方法完全相同,只是时钟调整时关闭T0,而在闹钟调整程序中T0需要继续工作。
总而言之,在运用单片机设计的电路中,起着至关重要作用的就是程序设计,特别是当硬件电路比较简单时,这时其他的一些功能就需要由软件来完成与补充。主要思想为把总体功能分解成能够完成特定功能的若干个功能模块,并且将各个模块之间的关系确定下来,最终将所有的功能设计完成。
3 系统的调试
排除系统的硬件故障(已在文献[1]中给出)和纠正软件中的设计错误,并解决硬件和软件之间的协调问题,这是调试阶段的任务。经过程序的汇编、连接、执行从而发现程序中的逻辑和语法错误并进行纠正的过程就是软件的调试。事实上系统的软件调试与硬件调试是不能完全分开的,很多软件错误被发现是在硬件电路上运行之后,因此在调试时应将硬件和软件应结合起来。通过上述反复调试,此电路在5V电压供电的情况下,正常的现实24小时计时方式的时、分、秒显示以及调时、调闹钟、整点报时和省电状态等多种功能。
4 结语
此项目是应用AT89C2051进行设计的典型实例,而且锻炼了对数码管的使用,在对动态扫描原理的掌握方面比较有利。因外围电路比较简单,所以大部分功能利用软件来实现,这就达到了锻炼单片机编程能力的目的。由于软件中要完成的功能较多,所以通过该项目的实训,可以使同学们掌握单片机的一般编程方法,尤其是采用定时/计数器的应用。
摘要:为了培养学生动手实践能力和创新能力,以电信类专业为例设计了单片机能力培养项目。在设计过程中注意了项目在教学中的可操作性,以及学生学习兴趣的调动。设计的项目在实施后,取得了较为理想的效果,有一定的推广应用价值。
关键词:单片机,能力培养,软件
参考文献
编程能力 篇5
【关键词】岗位能力;数控车床编程与加工;教学改革
数控车床编程与加工作为数控专业的主要内容,具有一定的实践性。随着数控技术的升级改进,制造业愈发重视数控人才,相关人才需求显著增加,然而,现阶段,大部分院校在数控专业教学中却表现出了不足性,所培养学生与企业的标准存在差距,岗位适应能力不强。
一、数控车床编程与加工当前的教学问题
(一)教材剥离现有设备
数控编程教材具有通用性和针对性。例如,在企业中,数控机床十分常用,主要讲述数控指令与实际操作。但学校购置的教学设备在型号等方面与教材存在出入,教学实践活动背离教学内容。
(二)课程脱离现实需求
在具体的教学实践中,学生学习的数控机床与相应系统具有单一性,然而,当学生毕业进入企业后,将会接触不同类型的数控系统,产生陌生感,无法满足岗位要求。
(三)数控设备短缺
因经费的制约,数控设备存在短缺的问题,类型单一,学校提供的设备、教材背离企业设备。但因数控系统种类的不同,编程手段和机床操作存在差异。权衡数控车床实训过程的安全性与设备损耗,一般都是在教师的监督下实现实训目标,学生实训时间紧张,在实习过程以及就业时无法完全掌握数控编程,在综合操作中也存在不足,使得学生表现出操作技能不高、综合职业能力低下、不熟练等问题,无法真正胜任现实岗位。
二、课程教学改革举措
(一)围绕岗位能力培养合理设计教学项目
以提升课程教学的有效性、实践性和可行性,让教学内容符合职业岗位要求、增强实践技能为原则,规范开展课程教学活动。参照数控技术岗位设立的具体的任职标准与职业岗位群,结合岗位需求,坚持学生的主体性,借助项目与任务,从学生自身的情况与当下的教学条件出发,重新设计课程内容,依托工作过程,科学设计教学内容,在实践教学活动中合理渗透理论教学。
(二)采用理论、实践综合性教学
数控车床编程与加工应用理论、实践集约化教学,可以同步开展教学工作,一边学习,一边实践,优化课堂教学,改善实践教学,强调动手操作能力以及职业素质的锻炼、培养,全面调动学习积极性,刺激学习欲望。
例如,在数控车削加工与仿真教学中,主要任务内容为:编制基础加工工艺;设计基础的加工程序;可利用仿真加工软件对相应程序进行校验;可合理安装工件,科学布设道具,规范开展数控车床对刀工序;合理导入加工工序实施自动加工;全面检验加工质量。参照任务要求,科学设计实施步骤。
1.编制加工工艺
教师公布项目任务,逐一发放项目任务书,认真讲解,而学生应深入研究阅读任务书、全面分析零件图,广泛查阅资料,规范填写相应的工艺卡片;
2.设计加工程序
教师应完整阐述数控编程格式、清晰讲授加工指标,学生则应以此为基础,规范设计加工程序;
3.仿真加工
教师应直观演示加工步骤,合理讲解,然后学生通过仿真加工软件开展虚拟加工,实施程序调试;
4.操作活动
教师直观演示操作规范,严格检查实际准备情况。而学生应规范安装道具、合理装设工件、认真对刀,最终实现零件自动加工;
5.零件检测
学生借助量具开展零件检测工作,规范填写相应的检测结果;
6.评价概括
教师应全面、系统评价小组操作实践,恰当填写考核结果明细单,通过讨论、分析和概括,得到改进意见,彻底清扫机床。
(三)编制完整的考核评价指标
在考核模式与方法上,深入研究教学目标控制以及过程管理的适宜方法,在原有笔试考核的基础上进行有效调整。依据项目进程逐步开展考核工作,达到教学项目的全面控制与动态管理。在课程考核中,灵活应用过程以及终结性考核,并依照适宜比例科学计入整体课程成绩中。
三、教学效果剖析
对数控车床编程与加工进行教学改革,不仅满足学生的实际学习特点,还强调操作技能锻炼与实训,具有一定的目的性和可行性,与现实岗位相符,学生既能学习理论知识,还可进行实习操作,在增强实践技能的同时,提升应用能力、培养团队协作能力、锻炼自学能力,促进综合素质的提高,教学效果十分明显。另外,该教学改革借助具体的机床操作可培养岗位操作技能,并可通过仿真加工增强学生的认识、开拓视野,使学生利用在校学习时间了解不同的数控系统,掌握各种机床类型。经由多年、长期的跟踪调查发现,实施教学改革后,学生自身的社会适应能力得到显著提升,就业质量大幅改善。
四、结束语
数控车床编程与加工在数控专业教学中占据着核心地位,内容较多,且具有实用性。在当下以及未来,我们应围绕岗位能力培养,结合教学实际,合理开展教学改革,积极创新,合理优化,切实提升数控人才质量。
【參考文献】
[1]陈文涛.以岗位能力培养为核心的数控车床编程与加工教学改革[J].长春教育学院学报,2014.29(18):134-135
[2]孟宝星.数控车床加工编程与操作教学改革实践[J].科技信息,2013(31):803.808
编程能力 篇6
一、改变课堂教学设计, 激发学生学习兴趣
学生开始接触计算机语言时感到新奇, 随着课程不断深入, 学生易产生枯燥无味的感觉。为把学生的好奇转化为学习兴趣, 笔者在授课时改变过去先给出定义和规则的讲授办法, 在教学设计上采用以问题形式推出教学内容, 在课前详细分析教学内容, 将教学内容转化为学生感兴趣的实际问题, 以问题为载体引出教学内容, 吸引学生注意力, 引导学生主动探讨解决问题的办法。比如在讲逻辑表达式时, 突破以往教学方式, 不再以理论灌输的形式讲授, 而是直接提出有趣的逻辑推理问题, 问题一提出就吸引了学生的注意力, 学生主动参与并积极探索。
教师在进行教学设计时, 应把枯燥无味的语法知识融入生动实例中, 让学生在探索中学习, 这样学生更乐于接受。
二、合理调整教学内容, 积极构建不同算法
C语言教材比较注重逻辑推理, 强调理论及抽象思维过程, 但在教学实践过程中却不适应中职学生的特点, 教学往往事倍功半, 效果不理想。
针对中职学生的认知特点, 笔者在该课程的教学过程中, 合理调整教学内容, 不是从语法规则入手, 而是针对教学内容, 引入不同的实例, 先让学生体验生活中是如何解决这样的问题, 引导学生和教师一起构建算法, 并让学生构建不同的算法, 比较这些算法之间的优劣, 并根据分析对算法进行优化。学生在对算法的构建、优化练习过程中不断总结、完善, 无形之中熟悉了语法规则, 同时提高了学生构建算法的能力。例如, 在分析排序法时, 可请学生上台演示如何按高矮顺序排队, 让学生去体会各种不同排序方法, 给学生以直观感受, 有助于学生探索如何构建算法。
算法是解题的方法和步骤, 程序设计的实质就是构造解决问题的算法。教师在教学中应引导学生构建算法, 让学生在一个个生动的实例中体验不同的算法, 有效拓展学生的编程思维。
三、改进课堂教学方法, 引导学生动手编程
传统的教学方法一般以“教师讲, 学生听”为主, 学生只是被动地接受知识, 很难引导学生真正动手编制程序。
笔者改变原来机械式传授知识的方法, 根据学生的认知规律, 遵循先易后难;先具体后抽象的原则, 通过各种教学方式和手段综合使用, 让学生带着问题听课, 引导学生积极思维, 发现问题, 提出问题, 并逐步解决问题。教师在讲解程序设计实例时, 从分析问题入手, 给学生一个比较实际的切入点, 引导学生主动探索, 找出解决问题的方法, 构建算法, 鼓励学生大胆动手编制程序。并充分利用多媒体设备展示学生的成果, 给予评价和激励, 让学生感受编程的全过程。在整个教学过程中, 可将学生分成小组进行体验、探索, 教师起引导作用, 所有的任务由学生来完成。
在教学过程中, 以学生为中心, 根据内容需要与学生情况灵活地采用多种教学方法和手段进行教学, 学生在课堂上真正成为“主体”, 教师扮演“主导”角色, 学生在比较融洽的学习氛围下, 积极主动参与到编程活动中, 有效地提高了编程能力。
四、加强上机实验环节, 理论与实践相结合
《C语言程序设计》是一门实践性很强的课程, 只有通过上机实践, 学生才能真正理解消化课堂上的教学内容, 纠正原来理解上的偏差, 加深对C语言的了解。
笔者在整个c语言程序设计课程教学中, 合理安排课堂教学和上机实践时间, 精心安排上机实践内容, 选择由浅到深, 由易到难, 练习实践基本算法和趣味游戏类相结合的程序。通过上机实践, 教师不但能及时发现学生在学习中存在的问题, 而且可以培养学生利用计算机解决实际问题的能力。例如C语言中关于值传递、地址传递的实例, 通过上机调试, 观察变量的变化过程, 加深对传值、传址方式的理解。在每次上机实验课中, 笔者及时对学生的优秀程序予以讲评, 分类纳入“实验示范库”, 通过开放的实验教学环境和校园网实现资源共享, 供学生学习借鉴;而且让学生自己动手探索网络资源, 丰富原有的知识结构, 这对学生编程能力的提高起着重要作用。
通过学生的上机实践, 将语言知识和程序设计串成两条相互呼应的主线, 加深了对语言的全面理解和掌握, 帮助学生真正掌握程序设计的思想和方法, 运用编程语言解决实际问题, 培养了学生综合应用语言的能力。
在《C语言程序设计》这门课程的教学实践过程中, 笔者以学生为中心, 以算法为核心, 调动学生的学习积极性, 充分挖掘学生的编程潜力, 学生的编程能力普遍得到提高。教育部长周济谈到, 职业教育教学要不断推进教学内容和教学方法的改革和创新。根据职业教育的特点, 在新课程理念的指导下, 笔者将不断探索, 更好地实现《C语言程序设计》编程教学从面向学科理论知识到面向解决实际问题的转变, 有效地将编程思想训练和编程技能训练融为一体。
摘要:本文针对中职学生学习《C语言程序设计》课程时编程困难的问题, 结合现代教育理论, 从培养和提高学生编程能力的角度出发, 对该课程在教学设计、教学内容、教学方法和上机实践等方面作了一定的探索和实践。
关键词:中职,C语言,编程能力,教学,探索
参考文献
[1].陈旭远 张捷《:新课程实用课堂教学艺术》, 东北师范大学出版社, 2004年版
[2].沈军《:C程序设计语言课程的教学新思路》, 电气电子教学学报, 2000年4期
编程能力 篇7
关键词:儿童编程能力,游戏化学习,Scratch
引言
程序设计教学在儿童逻辑思维的培养、创新实践能力及解决问题能力提升方面具有不可估量的作用。在基础教育领域,儿童编程教育没有得到足够的重视,儿童对编程方面的知识了解甚少。游戏是儿童生活学习活动的重要组成部分[1]。随着寓教于乐学习方式的倡导,基于游戏化学习的儿童编程教学模式逐渐进入计算机教育的视野。儿童在游戏的氛围中进行编程学习,符合儿童的年龄特点及认知情况,体现儿童学习的主体性,能激发儿童学习兴趣,培养儿童的编程能力和实践能力,提升儿童的技术素养和工程素养,切实推进STEAM教育。本研究利用Scratch平台可视化及模块化的优点,对已经封装好的程序模块进行自由的拼接,儿童运用程序设计的思维来解决问题,从而提高儿童编程能力[2],以实现预期功能。
相关研究
信息与交流技能、分析和解决问题的能力、处理人际关系的能力等新的知识和技能逐步深入K12教育体系,重视培养儿童编程能力已成为国内外教育研究的热点。在国外,美国Code.org组织强调要让每个孩子都有机会学习编程;英国为了提升儿童对计算机科学的兴趣,提倡儿童从5岁开始学习编程[3];芬兰启动新项目为儿童学习计算机编程提供机会等[4]。在中国,为推进STEAM教育和培养儿童编程能力,教育研究者在计算机教育及编程方面进行了大量研究,这些研究大多集中在儿童编程工具的应用层面,而且大多是借助Scratch可视化编程工具开展程序设计教学,以提高儿童学习程序设计的兴趣。朱丽彬等将大卫·库伯的体验学习圈理论应用于Scratch程序设计教学中,有效地激发了学生学习编程的兴趣[5];袁庆从Scratch究竟能够为学生带来什么出发,表明Scratch在提升学生问题解决能力、创新能力、合作能力、编程能力等方面具有巨大促进作用[6];凌秋虹为培养学生用程序设计的思维进行思考,提高学生解决问题的能力,将Scratch作为编程教学平台引入课堂[2]。通过以上国内外儿童编程研究现状分析发现,儿童编程能力的培养得到很多国家的重视,国内也展开此方面的研究。
面向儿童编程能力的游戏化学习模式构建
1.儿童编程能力分析
儿童编程能力,即儿童为实现某种预期的效果而使用程序设计语言编程的能力。为了使计算机能够理解人的意图,人类需要将解决问题的思路、方法和手段以计算机能够理解的形式呈现,使得计算机能够根据人的思想去工作,以实现某种功能及任务。
美国为应对21世纪的挑战,提出了“21世纪技能”教育改革的新思想,提议将“21世纪技能”与K12教育体系紧密结合,为基础教育人才的培养提供新的研究范式。面向21世纪的技能被概括为以下几种类型:信息与交流技能、分析与解决问题的能力、生活与职业技能[7]等。这几种技能被认为是21世纪教育改革的基础条件。
结合儿童编程能力的特点和“21世纪技能”,本研究对儿童编程能力的构成要素进行了归纳总结,具体如图1所示。儿童编程能力主要包括基本能力和高阶能力两个部分。其中基本能力主要包括观察、比较、分析/判断、加工信息的能力、动手实践能力、合作意识、创造性思维能力等;高阶能力主要包括算法编程能力、将程序模块化能力、将编程问题数学模型化的能力以及调试程序能力。
(1)基本能力
基本能力是指儿童需要具备处理信息的能力,根据问题的需要,观察信息、比较信息、分析判断信息、加工信息,其中观察和比较信息是儿童能够利用信息的前提;分析信息的能力要求儿童对教师提供的信息进行鉴别、遴选、分析和判断,自觉抵制和消除垃圾信息的干扰和侵蚀,找出有用信息并加以整理;加工信息是组织信息源传递的信息并展示的过程,这是检验儿童信息处理能力的最佳体现。基本能力另一主要能力是解决问题的能力,这项能力是儿童进行学习活动时必备的一项能力,解决问题的过程是儿童进行知识建构和智力发展的过程;动手实践能力倡导儿童积极地动手、动脑,大胆地去思索、探讨,儿童不再是被动接受知识的容器;合作意识使儿童优势互补,提高解决问题的效率;创造性思维能力倡导儿童在已有的经验基础上发现新事物、创造新方法、解决新问题,形成一种良好的思维品质。
(2)高阶能力
算法编程能力:包括常见算法的掌握和算法改进创新的能力,这是从根本上提高编程水平的有效措施。
将程序模块化的能力:化繁就简,化整为零,提高程序的复用率。在设计游戏时应考虑到模块之间的逻辑关系。
将编程问题数学模型化的能力:要善于理清程序中各数据间的关系,找出相互间的关系,建立数学模型,提升儿童的抽象概括能力及逻辑思维能力。
调试程序的能力:编写程序过程中,经常会遇到未知的错误。在发生错误时快速准确发现问题、分析问题、解决问题,是每个儿童在编程活动中应具备的基本技能。
2.面向儿童编程能力的游戏化学习模型构建
北京大学的尚俊杰副教授认为:“游戏化学习有两种理解,一种是在玩游戏的过程中达到学习的目的,另一种是将头脑中的想法设计成游戏,在这个过程中进行学习活动。”[8]游戏中的“学习性因素”,如情境、问题求解、竞争、关卡、挑战以及玩家与情境间的交互等,对游戏参与者的思维、认知、积极性等方面都起着不可忽视的作用[9]。美国新媒体联盟地平线报告(2016年基教版)把“游戏和游戏化”列为未来一年以内将被广泛应用的学习技术。简言之,游戏化学习就是游戏的机制在教育领域的一种实践形式[10]。
儿童编程能力的培养应该融合在具体的游戏化学习中才能取得成效。编程学习枯燥乏味,儿童在学习的过程中容易丧失学习的兴趣,编程能力的培养也就无从谈起。在对儿童学习特点及认知能力深入分析的基础上,笔者选择游戏化学习作为支持情景学习的方式。游戏化学习,作为儿童学习的一种方式,不仅能够提高儿童的学习热情,而且还可以培养其问题解决的能力。在游戏化学习课堂中,不再以教师讲授为中心,而是以学习者的自主发现和自我体验为主。游戏化学习有两种形式,一种是从玩游戏中学习;另一种是设计游戏,将自己的创意想法转变成游戏[11]。本研究采用儿童设计游戏的方式来开展游戏化学习,构建了面向儿童编程能力的游戏化学习模型,具体如图2所示。
面向儿童编程能力的游戏化学习模型中,儿童、教师和工具三者之间相互影响作用。该学习模型是以游戏化编程学习工具的支持为基础,主要包括学生探究学习、教师辅助指导。
首先,由教师确定学习主题,选择适合儿童进行游戏化编程的游戏。在此过程中,教师需要对学习者进行分析,制定学习目标,调动儿童的学习兴趣;随后,教师提出游戏任务并设置相关问题。与此同时,儿童也在不断地观察问题,在脑海里形成所要探究问题的雏形,在教师的引导下,使问题清晰化,并逐渐形成自己的解题思路。
其次,儿童设计游戏过程中,主要包括问题引入、学习探究、游戏编写、成果展示四个环节。在问题引入环节,儿童主要是对游戏的情景、角色、任务进行构想和设计;在任务及好奇心的驱使下,积极进行自主探究和合作探究,形成解决问题的步骤及方法;在游戏编写过程中,儿童需要进行游戏设计,制作并进行调试;成果展示环节,根据教师和其他儿童的意见或建议,对自己的成果不断进行改错及优化。在设计游戏这一关键环节中,教师须在活动中对儿童进行辅助支持。儿童在探究的过程中对某一知识点理解很难时,教师就需要对问题进行适当的调整。此外,在儿童设计游戏的过程中,教师要对儿童进行学习跟踪及评价。
最后,儿童针对本次的游戏活动设计进行总结反思。在探究性学习活动中,由于儿童能力的差异,有的儿童可能顺利地完成了这个过程,而有的儿童则需要进行反馈修订、发现问题、积极寻找问题的解决方案。教师也要进行总结反思,综合评价学习者在学习活动中的表现,进行知识点总结,并积极引导学生寻找创新解决方案。在整个学习过程中,儿童通过对游戏的分析、设计、实现、优化和分享,螺旋上升循环迭代,加深对编程思维的理解,不断提高自身的编程能力。
儿童编程学习活动案例
在儿童编程学习工具的选择上,笔者选用美国麻省理工学院(MIT)研发的Scratch工具来开展编程活动的学习。选此工具是基于儿童的年龄特点及认知规律来考虑。由于儿童的逻辑思维能力在不断地发展中,相对来讲并不成熟,那么使用成人化的程序设计语言去编程是有一定难度的,尤其是国内的孩子,更是受到来自英语、数学、自然语言以及逻辑思维等多重因素的限制[12]。Scratch工具巧妙地绕开这些困难,利用Scratch平台进行可视化交互操作。下面以“吃鱼游戏”为情景,基于Scratch进行游戏设计,如表1所示。
结束语
通过对儿童编程能力现状以及Scratch游戏化编程应用的梳理,笔者认为,游戏化学习对于儿童编程能力的培养具有极其重要的促进作用。通过利用适合儿童编程的工具,结合儿童的认知特点,开展学习活动,能有效培养儿童编程能力。研究表明,儿童编程能力的提高不仅需要教师的引导,更需要儿童在兴趣的吸引下,不断地进行动手实践。总体而言,这种学习活动设计能够将游戏化学习理论运用到课堂中,不仅有助于儿童编程能力的培养,还有助于提升儿童解决实际问题的能力。
参考文献
[1]王小英.学前儿童的游戏与学习:内在的连结性[J].学前教育研究,2013(7):3-7.
[2]凌秋虹.Scratch在小学信息技术课堂中的应用与实践[J].中国电化教育,2012(11):113-116+129.
[3]姚鹏阁,颜磊,杨阳,郭光武,郭玉翠.树莓派教育应用:儿童编程能力培养的新途径[J].现代教育技术,2015(10):113-118.
[4]陶媛.芬兰启动新项目为儿童学习计算机编程提供机会[J].世界教育信息,2014(5):77.
[5]朱丽彬,金炳尧.Scratch程序设计课教学实践研究--基于体验学习圈的视角[J].现代教育技术,2013(7):30-33.
[6]袁庆.将Scratch引入小学信息技术课堂[J].中国教育信息化,2014(20):85-86.
[7]张义兵.美国的“21世纪技能”内涵解读--兼析对我国基础教育改革的启示[J].比较教育研究,2012(5):86-90.
[8]尚俊杰,庄绍勇,李芳乐,李浩文.游戏化学习行为特征之个案研究及其对教育游戏设计的启示[J].中国电化教育,2008(2):65-71.
[9]陶侃.电脑游戏中“学习性因素”的价值及对网络教育的启示[J].电化教育研究,2006(9):44-47.
[10]鲍雪莹,赵宇翔.游戏化学习的研究进展及展望[J].电化教育研究,2015(8):45-52.
[11]尚俊杰.游戏化是什么?[J].中国信息技术教育,2015(8):10-10.
编程能力 篇8
关键词:计算机编程,教学效果,C语言编程
在计算机中,C语言是计算机程序中一种通用的语言程序。计算机专业的学生能够掌握C语言,有助于学习计算机其他语言程序。不少已经掌握C语言的学生在进一步学习计算机其他程序中,觉得语言编程的学习无从下手。因此,有不少的学生为了应付学校的考试采取死记硬背的形式,这对于一门应用型的课程而言是一种致命性错误。学生采取死记硬背的方式应付学校的考试,这不仅仅是学生自身原因造成,其主要原因在于教师的教学方面上。教师在C语言编程教学中,应注意对学生C语言编程能力的培养。教师在教学过程中注重培养学生的C语言程序,不仅有助于提高学生的学习兴趣,还能够提高教学质量。笔者就教学中如何培养学生C语言编程展开讨论。
1 教学中培养学生 C 语言编程应注意 的问题
现今各高校都开设了计算机专业学习的课程,计算机专业学习不仅是社会发展的必然选择,也是社会对人才培养的普遍要求。高校在普及学生计算理论知识学习的前提下,有必要培养学生计算机的各项技能。学生计算机各项技能的的掌握, 有助于其后期的求职。教师在计算机C语言编程教学中,应注意下两个问题。
1.1 教学中强调学生 C 语言的重要性
C语言教学在教学之初会存在一定的难度,但是任何学习在学习的过程中都会遇到各种困难。因此,教师在C语言教学中,应向学生强调学习C语言能够做些什么、在C语言学习之初应让学生对C语言的知识有个大概的了解、让学生知道为什么要学习C语言 [1]。教师在教学中,能够让学生带着明确的学习任务,不仅可以驱动学生的学习还能够有效避免学生盲目学习。学生学习C语言程序设计课程开始阶段,对C语言的认知范围少,导致其在学习之初不甚明白C语言程序学习的构建。因此,不少学生在学习C语言程序时普遍以来视觉上的判断效果,认为计算机语言程序的学习只需掌握Visual FoxPro和Visual Basic等程序就可以 [2]。并且由于MS-DOS环境下的C语言编程缺乏一定的灵活性,学生在学习过程中很少应用该程序。因此,针对前文论述,教师在教学中,应具有针对性的让学生了解C语言, 让学生明确C语言在计算机教学中的重要性。学生在教师指导性的教学中,逐渐明白C语言编程的广泛应用,有助于学好计算机其他语言程序。教师的强调作用有利于学生学习过程中学习目的的掌握。
1.2 利用 VC 程序教学,激发学生学 习兴趣
Visual+ +6.0简称VC或VC6.0. 在计算机C语言课程教学中,算是一种新程序的应用。VC程序是微软公司开发的一种新程序,新程序较旧模式具有一定的灵活性。VC作为一个开发的主流平台在学习中具有多种优势。但是,要想对VC很好的掌握却有一定的难度。教师在教学C语言编程的教学中,应用VC的两种模式能够有效提高教学质量。VC程序的两种模式包括WIN API方式以及MFC方式。VC程序的新模式,能够在教学中激发学生的学习兴趣。
2 教学中提高学生 C 语言编程能力的 有效措施
提高学生C语言编程能力具有重要作用。教师应当在教学中采取恰当方式, 提高学生C语言编程能力。笔者认为,教师在教学中可以采取以下几种措施,将有助于学生C语言编程能力的的提高。
2.1 教学中突出教学重点,明确学生 学习任务
知识的学习,首先应当让学习者明白所学内容的重点,尽可能吸取所授知识的精华。学生学习C语言,教师应在教学中, 应当突出教学的重点,让学生明确C语言的学习任务。教师在教学之初,让学生明白学习C语言的关键因素应当是灵活掌握计算机系统中的系统数量、32个关键字以及常用的库函数和其他的知识结构。学生掌握这些关键性的知识并不是教师讲授一堂课就可以掌握的,教师在教学中可以根据所授课的内容确定各个功能的关键部分以及教课的先后顺序。教学过程的循序渐进性有助于学生对关键性知识 的掌握。例如,教师在讲授signed和long等程序整理数据时,可以举例说明一些实用型的数据程序,如float和double,使用相关的选择型结构进行语句控制 [5]。教师在教学中,还应注意对知识点的“重复”。所谓教学中的重复,指的是教师在教学中对于重点知识内容的讲解可以对学生反复讲解,加深学生对知识点的印象,有助于学生对知识点的掌握 [4]。
2.2 采用现代教学方法,提高教质量
现今,多种现代技术已经广泛的应用于高效的课堂教学中,例如多媒体在教学中的运用已经代替了板书形式的讲课模式。采用现代化的教学模式,不仅可以培养学生积极主动的学习,还有助于教师有针对性的寻找多种教学方法进行教学。计算机专业课程的学习,教师应当充分使用多媒体教学设备,多媒体教学对于计算机专业课程的学习具有一定的优越性。教师在教学中可以根据教学的实际情况对教学内容作相应的调整。利用多媒体教学教 师可以在基础教材上对知识点进行相应的扩充,让学生更好地掌握知识,并能够把相关的知识结构相互连接。现代教学方法,在学生能够听的基础上,更形象直观的接受知识。
2.3 教学中强调新概念的同时弄清相 似概念
每一门课程的知识中,都会包含多种相似概念、新概念和相同概念。教师在教学中应注意强调学生对新概念的理解,同时弄清相似概念。相关概念能够清晰地掌握,有助于学生对知识结构的清晰把握。教师在教学中,应学会点出相同概念、着重强调新概念、比较相似概念。例如,在C语言中相同概念就有循环结构与分支结构,相似概念有指针与指针运算,新概念在C语言教学中就有比较多。因此,教师在教学中应强调新概念的同时弄清相似概念。
2.4 借助计算机网络,加强学生自主 学习能力
计算机教学,教师应学会利用网络平台促进学生自主学习能力。课堂上的学习对于学生各项技能的提高具有一定的局限性。教师在教学中,可以利用网络平台, 将相关重要的知识与C语言编程的研究让学生自主掌握。网络平台的有效利用, 不仅可以加强教师与学生的之间的交流, 还能够有效促进学生自主学习能力。学生能够在不受时间、不受地域限制的情况下更好地学习。
3 结语
编程能力 篇9
1. 培养学生编程能力注意解决的问题
1.1 首先即要强调学习C语言的重要性
万事开头难, 这对于学习也是一样的。学习任何知识, 首要的是对该知识有个大体的了解, 为什么要学, 学会能做什么。带着任务驱动学习, 可以避免盲目从学的弊端。对于初学C语言程序设计课程的人员来说, 往往对C语言的认知极少或不知, 迷惘到底能用其来做什么。而依赖视觉上判断也觉得只要学习Visual FoxPro, Visual Basic等可视化语言就行了, 对于在MS-DOS环境下编程的C语言觉得它太过时, 操作不方便, 故学生在学习时缺少主动性。针对这些最基本的问题, 作为教师在教学伊始, 必须为C语言“正名”, 明确其在计算机编程领域中的主要地位, 告知它是目前世界上使用最为广泛的计算机语言之一, 是一种介于汇编语言与高级语言之间的编程语言。如果学好C程序设计可以为今后更好地学习C++、JAVA、VFP、VB、ASP等语言打下一个很好的基础。让学生带着兴趣与好奇来开始C语言的学习。
1.2 诱导与激发学生的学习兴趣
目前, 有不少学生只是以为C语言只能在DOS下编辑与运行的东西, 加上理解各种命令、语法又极其枯燥与乏味, 提不起学习C语言的兴趣。解决这个问题, 首先要改变传统的DOS下的C语言编程界面, 查找可以在WINDOWS下运行的C程序。通过多方的查找, 现在我们学院的C语言教学编程软件已是“WIN-TC”, 它能够支持鼠标的操作, 可以实现复制与粘贴等命令, 便于初学者使用, 也使得界面不再“古老”。再者, 准备几个良好的用C语言开发的简单实例, 引用案例教学方法, 先于讲授的给予学生直观的了解, 挑起学的兴趣, 从而激发学生的能动性与挑战性, 逐步的加强对C语言的学习兴趣。
2. 教学中培养学生C语言编程能力的方法
2.1 突出重点, 让学生明确学习任务
要想学好知识, 都要明确该知识的精髓所在, 汲取尽可能多的深度内容, 才能结合自身的理解程度加以运用。学习C语言亦如此, 开始关键是要熟练掌握并灵活运用好诸如系统提供的32个关键字、常用的库函数、系统变量、及重要的结构控制语句。不是必须一下子就记住这些个看似没有任何规律的符号。教师可根据授课内容的先后顺序和功能给关键字分类, 让学生有渐进性的记好记住这些关键字。比如说int、long和signed用于说明整型数据, float和double用于说明实型数据, 而由if和else可构成选择结构的控制语句, 在循环结构控制语句中可用for、while和do关键字。教师还要必要的“重复”, 即在讲解相关的知识点时把与之有关联的讲过的内容反复讲解, 目的就是为了加深学生的认识。久而久之, 单调的关键字等英文符号就变得容易接受并能熟练掌握了。其次, 必须让学生了解并掌握各个章节知识内容的相关性与独特性, 讲授课程时更要全课程的给出重点章节与内容。像C语言中的指针章节, 就是要重点与详细讲解并练习的内容之一。指针的学习有着针对之前内容的重复与延伸的方面, 讲授时采用比对方法, 将同一个题目用不同的方法进行编程, 上机调试, 以开放式的讨论方式, 诱导学生说出不同方法的各自利与弊, 突出指针编程的优点。
2.2 整合授课内容, 利用现代教学方法提高教学质量
现在, 多媒体教学已经走进了各大高等院校的课堂中, 其有的已经代替了传统的板书授课教学模式。恰当的运用多媒体教具实施教学, 能够培养学生主动学习的能力。教师设计的适合于本教学内容和教学对象的多媒体课件, 给学生提供直观的知识素材, 将授课形式提升为“过程式教学”, 可以达到更好的教学效果。对于计算机专业的教学来说, 更应该充分利用多媒体教室的优越性。我们授课教师, 要充分的备好授课内容。根据情况, 要对教材内容作适当的调整, 有的地方可以省去或简化的便删掉或简单介绍, 而有的知识内容需要必要的扩充讲解及深度说明的就要在教材的基础上扩充教学内容。适当的调整知识点及授课顺序, 增加知识点之间的联系, 这样可以直接把知识转化成能力。教师先授课内容整合好之后, 就要利用相关的软件制作出精良的教学课件, 课件的制作不求表面花俏, 重在内容丰富、操作得当, 能够在教师授课时给予良好的帮助, 提高教学效果。使学生在听的同时能够“看明白”, 从而取得事半功倍的效果。
2.3 注重课堂练习, 发挥学生的能动性
C语言是一门实践性及操作性很强的学科, 只是听、读、看是远远不够的, 上机实践及程序调试是巩固理论知识, 加强实际编程能力相当重要的一个教学环节。结合多年的C语言教学工作, 越发觉得此课程应该采用边讲边练的授课方式, 在微机室实施整体教学环节。这样, 避免了学生在听理论课程时的枯燥无味, 最大限度的辅助课堂内容的当堂“消化”。教师可以利用现代多媒体教学手段辅助理论教学的讲授, 之后给予学生充分的上机实践, 先编写教师给定的程序, 便于更好的理解授课内容, 然后根据情况, 开放式的让学生自行设计题目进行编程练习, 对于出现的难点及时给予指正。这样, 会取得很好的教学效果。
2.4 借助网络教学平台的优良资源, 促进学生自学的能力
授课教师根据学生对于知识点的实际掌握情况, 考虑课堂时间的局限性, 利用网络教学平台将课程的学习在课外时间延续着, 扩展着。教师可以把相关的知识点借助网络提供给学生, 经典的实例源程序一并上载到网络, 让学生可以在课下继续对C语言课程的学习与研究, 也可以让学生之间进行交流。让学习不受时间与地域的限制。促进了学生的自学能力, 从而提高了编程能力。
当然, 要想实现提高学生的C语言编程能力还要做得更多。包括教师授课时知识点的分析与讲解的准确性与明确性, 授课方法的科学性与艺术性。学生首先不讨厌, 才能继续性的喜欢与提高, 所以, 作为教师必须先于学生的学而学, 能在教学实践中勇于探索、勇于实践、善于总结, 吸取成功经验, 不断改进教学方法, 提供给学生一个丰富的课堂教学。再则, 学生作为知识的授于对象, 要持有谦虚与不倦的态度去学习, 不断的上机练习, 不懂的问题及时提问, 教师与学生两者相互配合, 才能取得最佳的教学效果。只要认真对待C语言的授课与学习, 就一定能提高学生的编程能力。
参考文献
[1]浩强C语言程序设计教程[M]北京清华大学出版社2007.
[2]李博多媒体C语言中存在的问题及解决措施[J]才智2009.8
[3]李炜计算机高级语言程序设计的C语言改革与时间[J]安徽师范大学学报自然科学版2003.26 (2)
编程小技巧 篇10
程序设计
在我们刚开始学习程序设计的时候,要编写一个程序,总是先进行一番构思,然后就一边写代码一边调试。这种方法一般只适用于非常小的程序,根据软件工程的特点,如果对所有程序都还按这种方法进行设计,是不合理的。
其实,设计程序就像我们盖高楼大厦,首先要设计图纸,然后动工。所以,对于个人编写程序来说,应遵循以下步骤:
1、问题分析:对我们要使用程序设计手段去解决的问题进行系统地分析,了解程序是做什么的,要达到一种什么样的效果等等。
2、结构设计:也就是对程序的整体框架进行设计,设计出我们需要使用的模块等等,并画出流程图。
3、用户界面设计:在此,我们要设计出用于与用户交互的输入输出界面。
4、代码设计:在这个步骤中,我们要进行代码的编写。
5、调试:对程序中正在发生或可能发生的各种错误进行处理。
6、维护:通俗地说,维护就是对程序进行升级,对原有错误进行修改。
对于以上几个步骤,我想大多数人会认为代码设计最为重要,但如果程序的结构尚未清楚,我们在编写代码的时候就会发生混乱。一个程序性能的好坏,主要还是取决于它的结构是否合理。因此,在程序设计中,我们要尽可能注意这一点,这样才能使我们的程序更加完善。
设计环境
一个良好的编程环境可以使我们在编写程序时,不至于造成各种资源的紊乱,还可以避免资源的丢失。建议大家要在放源程序的目录下建立“Programs”文件夹;然后再以你要编写的程序名和版本为名建立一个文件夹,用于存放整个源程序以及各种资源;最后,分别建立几个文件夹,“Documents”:用于存放程序文档,包括流程图等;“Resource”:用于存放图片、声音、影片等资源;“Debug”:用于存放调试的程序;“Release”:用于存放最终释放的程序。
例如:我们要制作一个英语学习软件,名为“English”,版本为1.0,那么我们的编程环境中应存在以下文件夹:
[DRIVE]:…ProgramsEnglish1Debug
[DRIVE]:…ProgramsEnglish1Documents
[DRIVE]:…ProgramsEnglish1Resource
[DRIVE]:…ProgramsEnglish1Release