前言:中文期刊网精心挑选了c程序设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
c程序设计范文1
>> C语言程序设计案例教学法研究 以程序案例为导向的《C语言程序设计》的教学研究 C语言程序设计教学探讨 C++程序设计浅析 C程序设计教学的新宠 高职院校《C++程序设计》 C语言程序设计教学研讨 《C程序设计》教学心得 浅议C语言程序设计教学 C程序设计课程教学探讨 C语言程序设计教学 浅谈C程序设计教学 C语言程序设计教学探索 “C++程序设计”课程改革 《C++程序设计》教材介绍 C程序设计教学初探 C程序设计教学探讨 《C语言程序设计》教学实践 C高效程序设计的技巧 C++程序设计教学探讨 常见问题解答 当前所在位置:l),其中罗列了一些优秀的开源C++项目。4) 开源中国社区(/ project/ lang/21/c)。
我们初步筛选出了以下8个开源项目:1) C++程序开发框架Qt;2)以3D方式显示函数曲面的K3DSurf;3)比Windows 自带的Notepad更优秀的Notepad++;4)游览宇宙星体的教育软件Celestia;5)能够检测C++程序中逻辑错误的CppCheck;6)能够快速浏览大型源代码系统的Source Navigator;7)能够显示Windows目录、逻辑盘使用情况的WinDirStat;8)能够显示与合并目录/文件差异的Winmerge。
2评估指标
我们依据以下指标对每个候选案例进行定量化评估。
2.1学生兴趣
从教育心理学角度看,如果学生对一个案例感兴趣,他们就会主动去学习与该题目相关的其他领域知识,也会更积极地去研究课程知识是如何被应用到该案例中去的。我们调查了南开大学软件学院114名本科一年级学生对这8个开源项目的兴趣程度。首先我们演示了这8个开源软件各自的功能,再让每个学生独立的填写一个问卷调查表。每个学生对一个项目感兴趣的程度用数字1~5表示,5表示最感兴趣,1表示最不感兴趣。最后我们将所有学生对一个项目的兴趣程度取均值。
2.2代码规模
作为本科生的课程设计或者实训项目,往往要求学生在1个学期之内的时间完成。如果案例本身代码太多,学生们将无法在有限的时间里完成案例的学习。另一方面,如果案例本身代码太少,将无法展示相关课程内容在实际项目中的应用情况。我们需要在二者之间进行折中,依据软件代码行数(LOC,Line of Code)以及软件中类型数量来评测一个项目的代码规模。
2.3代码质量
精确地评估一个软件系统的代码质量是比较困难的,这需要专家仔细研读软件的源代码、文档,理解并评估其软件系统设计,判读其可扩展性、可移植性、模块化的程度,评判其代码是否符合C++代码规范的要求,评测其运行时的性能、健壮程度等。8个候选题目的代码总量大约为53万行,进行人工的评估显然是不现实的。我们选择了以下两个子指标对一个软件项目的代码质量进行评估:
1) 代码中注释部分的比例。适当比例的注释可以提高代码的可读性,同时也表明了编程人员编写代码比较仔细、严谨。
2)LCOM度量(Lack of Cohesion of Methods)。好的内聚性(Cohesion)是一个高质量软件系统必须具备的。所谓内聚性,是指一个类的成员变量和成员函数之间的耦合程度。虽然有多个度量来评测内聚性,我们选择Henderson-Sellers提出的Lack of Cohesion of Methods (LCOM-HS) [7]。该值越大,表明一个类的内聚性越差;越小则表示内聚性越好。其取值范围为[0,2]。
2.4C++技术的应用
由于案例教学的目的是要求学生熟练应用C++以及相关面向对象技术进行软件开发,所以我们要求所选案例本身能够尽量全面的覆盖C++的各个方面。我们选择了3个子指标:
1) 一个项目所使用的名字空间(namespace)的个数。在一个中、大型软件项目中,合理使用名字空间可以有效避免名字冲突,提高软件系统的模块化程度。
2) 一个项目所使用的模板(template)的个数。C++除了具有所有面向对象编程的特性之外,现代的C++程序开始大量使用模板来实现泛型编程(Generic Programming)的思想。对模板的适度使用,可以使得一个相关模块更加通用,更易扩展,能够最大程度地达到代码复用的目的。
3) 继承。类的继承也可以达到代码复用的目的,也是C++程序设计中实现多态性的必要条件之一。
3评估工具及运用
有以下工具可以评测C++代码的规模与质量:
1)SourceAudit(),由Front EndART公司开发。
2)Telelogic 公司的logiscope。
3)CppDepend(),能够对C++程序进行60多个指标的测量,其中有些是关于代码结构的(如class、namespace的数量),有些是关于代码质量的(如程序注释比例、内聚性、项目稳定度等)。该工具还可以直观地显示程序模块、类、函数之间的依赖性。CppDepend将被分析程序的代码当做数据库来处理,允许用户使用一种代码查询语言(Code Query Language,CQL)来灵活地分析程序代码。由于该工具小巧(约8.6M字节)、灵活(支持CQL语言)、被允许在学术机构中免费使用,我们选择该工具来对课程案例进行评估。
部分评估指标在CppDepend生成的html格式的报告中可以直接找到,而有些评估指标需要用户创建CQL语句,提交给CppDepend完成查询。CQL和SQL相似,其格式为SELECT TOP FROM WHERE ORDER BY。如为了查询一个软件项目中有哪些函数的代码超过200行,可以使用下面的CQL语句。
SELECT METHODS WHERE NbLinesOfCode > 200 ORDER BY NbLinesOfCode DESC
其中METHODS表示代码中的函数,NbLinesOfCode表示函数体内的代码行数,DESC表示降序排列。
需要使用CQL语句计算的评估指标如下。为了查询一个C++项目中的继承数,我们使用下面的CQL语句。
SELECT TYPES WHERE NbBaseClass >0
其中TYPES表示一个C++项目中定义的类型,比如类、结构体、联合体等。
为了查询一个C++项目中内聚性较差的类的名称与数量,我们使用下面的CQL语句。
SELECT TYPES WHERE LCOMHS > 0.95 AND NbFields > 10 AND NbMethods >10 AND !IsGlobal ORDER BY LCOMHS DESC
其中LCOMHS表示Henderson-Sellers定义的LCOM度量,NbFields表示一个类的成员变量的数量,NbMethods表示一个类的成员函数的数量。
4评估结果
依据以上指标,我们对各个候选案例进行定量分析,结果如表1。由于整个Qt软件系统的总代码规模、复杂程度远远超过本科生的理解能力范围,我们选择了其核心模块QtCore以及经常被开发人员使用的QtGui作为评估对象。表中,LOC表示代码行数(Line Of Code),Types列显示的是各系统中类型的数量,Comm列显示的是注释行数量与总代码行的比值,LCOM列表示内聚性差的类在所有类型中的比例,NSpace表示namespace的数量,templates和inherits分别表示各系统所使用的模板与继承的数量。
从“学生兴趣”指标上看,学生们最感兴趣的是Qt软件包,这可能归因于该软件包的示例程序展现了Qt具有强大的图形/图像处理功能。学生们其次感兴趣的是K3DSurf,可能是被该软件所展现的精美的数学函数曲面所折服。学生们最不感兴趣的是Winmerge,这可能是由于在他们有限的软件开发经历中,尚未遇到要比较两个目录的问题。假如被调查对象是具有多年工作经验的程序员,他们可能对Winmerge更感兴趣,因为该工具可以快速地找出一个软件的两个开发版本的异同。
从“C++技术的应用”指标上看,Qt、Celestia和Winmerge都大量的使用了名字空间、模板、继承,表明这3款开源项目更适合作为课程案例来使用。由于学生们对Winmerge的兴趣较低,我们候选案例清单缩减为Qt和Celestia。
就Qt而言,即使我们只选择了其中的QtCore及QtGui模块,代码规模仍然高达22万行。因而,我们选择QtCore作为详细剖析的案例对象,而对QtGui只做粗粒度的剖析。这样,候选清单中的竞争者就成为了QtCore和Celestia。
总体上,QtCore和Celestia具有旗鼓相当的指标值,只是学生们对Qt的兴趣程度稍高,QtCore的注释比例最高。作为一个C++程序开发框架,QtCore的软件体系应该比较抽象,所以它所使用的模板数量要高于Celestia。
5结语
本文设计了一套定量化的评估指标,使用代码查询语言(Code Query Language,CQL)及代码分析工具CppDepend对8个开源项目进行了定量评估,给出了适合于课程C++程序设计的候选案例,可供各高校在相关课程的案例教学中参考。
注:本文得到南开大学教务处、软件学院“08 年教学改革专项”(2009-2~2010-12)的大力支持。
参考文献:
[1] Bruce Eckel. Thinking in C++[M]. 北京:机械工业出版社,2001.
[2] Stanley B Lippman,Josée LaJoie. C++ Primer[M]. 北京:人民邮电出版社,2005.
[3] Bjarne Stroustrup. The C++ Programming Language: Special Edition[M]. 北京:高等教育出版社,2001.
[4] Scott Meyers.Effective C++[M]. Greater Boston Area :Addison-Wesley Professional,2005.
[5] 陈艳华,余健,雷志军. Visual C++.NET课程设计案例精编[M]. 北京:清华大学出版社,2008.
c程序设计范文2
【关键词】C++程序设计;教学方法;教学改革
1.引言
在计算机课程中,“C++程序设计是计算机专业的一门必修基础课,该语言以其高效而又实用的特性:既可以进行过程化程序设计,又可进行面向对象的程序设计,因此逐步成为各高校程序设计课程中的主流。C++语言既是进行软件开发的直接工具,又是“数据结构”、“操作系统”、“编译原理”、等课程的先修课程,因此,在整个教学体系中占据十分重要的地位。
根据本人自身教学经验和讲授过程中出现的问题,在此进行分析和探讨,期望能进一步提高本课程的教学效果和教学质量。
2.存在的主要问题
(1)程序设计类课程一般以程序设计语言自身的体系为教学路线,侧重于编程语言的基本概念、基本语句和语法的详细讲解,而没有把逻辑与实际编程解题思路作为教学的主线。达不到培养学生分析问题和解决问题的实际能力的目的。学生面对的是一大堆语言符号,需要记忆的内容过多。在教学过程中学生们感觉学习相应的知识点(语法)并不困难,听老师讲解例题时也容易明白。
(2)实践性教学薄弱。只有在上机实践中学生才能真正学会如何编写程序和调试程序,才能更好地掌握程序设计的理论知识。可在C++语言实践教学中,由于课时有限、教学条件有限等没有把编程思路和程序调试放在首位,对学生分析问题和解决问题的能力训练不够;上机内容基本上都是立足于C++语言本身的一些语法规则,和实际开发应用脱节,无法激起学生的兴趣。
(3)学生学习差距较大。由于学生水平不一,并且部分学生学习自觉性较差,学生学习的效果相差十分明显,学生的编程能力逐渐下降,学生不原意写C++/MFC程序,而是写C#/JSP等网站程序设计。如果开展有效的教学研究,使大多数学生都能学懂C++程序设计的基本概念、掌握常用的语法及算法、能用C++编写通用程序,是值得研究的问题。
3.教学与实践改革的具体措施
3.1 以”深入浅出,边学边用”作为指导思想组织教学内容
对于枯燥的语言叙述,改用生动的比喻进行引导。比如,学生学习指针概念时,对”间接存取”难以理解,就借用比喻:将A房间的钥匙放在B房间里,若要取A房间里的物品,就需要先打开B房间,取出A钥匙,再打开A房间,取出A房间的物品,这就是“间接存取”。学生很快就能理解,也加深了指针的概念。变更教学形式,结合实际生活,组织教学内容以“提出问题--分析解决问题的方法--归纳出概念或一般规律”为线索,侧重学以致用。每堂课都安排简单实用的程序学习并编制,让学生全部可以接受,每堂课都有一点成就感,打消往届学生带给他们学习C++语言的畏难情绪。比如学生学习了输入输出函数的使用,就提出“简单的超市算账问题”,仅仅使用顺序结构程序设计方法就能解决;将问题加深一点,购物达到一定的金额商品会打折,金额不同折扣率不同,引入选择结构的程序设计方法,利用类似的方法逐步深入,培养学生分析解决问题的方法,边学边用,激发学生学习的兴趣。
3.2 加强实践教学环节
C++语言课程是一门实践性很强的课程,一定要动手多写设计、编写程序才能有所进步。在实践教学中必须做到循序渐进,对所学的每一部分内容都应该要求学生完成一定数量的实验内容。每部分的上机习题必须精心挑选,既要有基本的、较简单的题目,又要有一些具有挑战性的新颖有趣的题目。学生自己编写的程序一定要到机器上去实现,通过调试程序来修订语法错误,排除逻辑错误,进而提高编程能力,通过做一定量的习题,可以积累一定的经验,同时对程序设计的精髓会有所领悟,从而重视上机实验。
强调学以致用,展示学生能够理解而且又容易提起兴趣的用C++语言设计的软件以及往届学生的设计成果,给学生布置了几个专题,比如:设计班级成绩管理系统、简易的图书管理系统、简易的通讯录管理系统、小游戏等让学生利用课余时间去思考、收集资料,以教师为主导,以任务为主线,以学生为主体,过一段时间在课堂上组织学生发言和讨论一次,看看大家对这些问题的思考程度,提提建议,鼓励加引导,最后到完成。
通过一个阶段C++语言的学习,选拔出一批优秀的同学,单独培养,结合所学专业,加宽加快加深学习内容,使他们尽早切人实际应用,有条件的进入相关的开放实验室,参与计算机应用的小课题研究或参与大学生创新设计大赛等,培养学生中的学术带头人。在C语言教学中,培养学生的自学能力尤为重要,如果学生的学习完全依赖教师才能掌握,而没有一定的自学能力,其所学的知识很快就会被淘汰。对于多数学生,则把精力放在最基本、最常用的内容上,让他们学好基本功,掌握程序设计的方法,为后续课程的学习打下基础。
3.3 开展3年不间断的C++编程训练
仅靠一个学期的c++语言的学习是远远不够得,需要在后续课程中进行巩固提高。C++兼容C语言,C语言是C++的子集,我们把C语言和C++融合为一门课程,第一学期授课以C语言为主,第二学期讲授以C++为主,所有程序都以VC++为调式环境。经过这样的整合,知识内容显得很连贯,一气呵成,为第三学期的Windows程序设计课程奠定了基础。该课程利用MFC类库进行Windows应用程序开发。后继的数据结构、算法分析与设计、计算机网络原理、操作系统、编译原理等课程实践环节都利用C++语言进行开发,开展3年不间断的C++编程训练。
3.4 改革课程的考核方法
对学生学习情况的考核不应以停留“期末试卷”为中心的传统考试观念,应该进行改进,以此提高学生对知识的运用能力、自学能力、分析和解决问题的能力。
(1)加大平时成绩的考核。平时考核的方法有:课堂提问、作业与练习、阶段性测试、包括学生提出有价值的问题都给予记分。平时考核成绩占总成绩的比例为20%。加大平时成绩的考核,有利于全面测评学生能力。这样可以激励学生学习的积极性和主动性,并将这种积极与主动精神贯穿于课程学习的始终。
(2)加大上机考核。对C语言的掌握情况主要看上机的调试,要对上机过程和结果给学生进行考核,既要看结果,也要看过程。应鼓励学生在程序的设计上精简优化。上机考核成绩占总成绩的比例为20%。
3.5 应用现代化教学手段提高教学效率和效果
形式多样的教学手段课堂教学要应用现代化教育技术,使用多媒体进行课堂教学,给学生营造一个良好的程序设计环境。与传统教学方式相比,多媒体教学具有形象生动、图文并茂、交互性好、信息量大、减少文字书写等显著特点,对课程中难以理解的抽象内容,可以给予直观展示和动态模拟,达到既能辅助教师形象地讲授课程中的难点和重点的目的,又能激发学生学习的兴趣,从而提高教学效率和教学效果。并且,把讲授法、练习法、实验法、演示法和网络技术结合起来,将课程中抽象的、难以理解的教学内容,进行形象化,这样就更利于学生理解与记忆。
4.结束语
本文针对笔者在连续几年“高级语言程序设计C++”教学过程中出现的问题,进行了思考和探索,并将所提出的方案在教学活动中实施,较好地激发了学生的兴趣,调动了学生的学习积极性,培养学生的自学能力,提高学生的编程思想和解决实际问题的能力,取得了很好的教学效果。
参考文献
[1]张庆岚.提高《C程序设计》课程教学质量的探讨[J].福建电脑,2009(1).
[2]朱站立.面向对象程序设计与C++语言[M].西安电子科技大学出版社,2009.
c程序设计范文3
关键词:高职;C#;教学设计;异常处理
中图分类号:TP312
C#(读做 "C sharp")是微软公司的一种精确、简单、功能强大的面向对象的、运行于.NET平台之上的高级程序设计语言,由于其跨平台能力强、安全性高、语句灵活易操作等特点,使其成为.NET开发的首选语言。
《C#程序设计》是我校计算机应用技术专业一门实践性很强的专业技术课程,它要求学生不但要学好理论基础知识,而且更要掌握实际操作技能,从而具备独立编程能力。
1 教学设计
1.1 教学思路说明
(1)学生特点分析。本专业学生具有一定的计算机实践操作能力,自我学习能力较好,但学习缺乏主动性、积极性。
(2)职业岗位任务分析及学生应该养成的职业素养分析。本专业的学生必须掌握一定的专业基础知识,具备良好的动手实践能力,具备一定的自我学习、自我探索、自我创新的能力以及团队协作精神和吃苦耐劳的品质。
(3)教授班级的教学现状,存在的不足、主观及客观因素
本班学生为高职二年级学生,所学专业理论知识比较扎实,实践能力也较出色,整体班风较好,但是学习方面缺乏主动性、积极性,需要教师的积极、有目的的引导与督促。
(4)本课程教学改革总体思路
按照课程要求和学生特点梳理知识和技能模块,用实际过程来引导学生完成知识体系的构建和职业能力的提高,采用任务驱动教学法教学,注重知识性与技能性的统一,培养应用技能、合作精神,培养学生学习兴趣。整个教学过程体现了教师主导、学生主体的教学思想,突出学生在“做中学”的学习策略和与之相适应的教师在“做中教”教学策略。
(5)采取何种教学方法以调动学生的积极性,提高学生学习的参与度。1)案例教学法,选用的案例真实、易懂;2)工作任务驱动;3)开放式教学方法,激发学生创造性,以学生为主体,充分发挥学生主观能动性;
(6)其他需要说明的问题:1)课后利用学校网站上精品课程《C#程序设计》复习巩固本课所学知识点;2)课后利用教材、网络拓展学习异常类的相关知识。
1.3 课堂内容的反馈(课后完成)
为了便于教师了解学生对本课知识的掌握情况,请学生如实填写反馈表
课程 《C#程序设计》 单元《异常处理》 班级 姓名
2 结束语
一节课设计的成功与否,我认为主要有以下几个因素:
(1)教师是否能够根据课程标准中培养目标,提炼出本节课程清晰的知识目标、能力目标和情感目标。
(2)教师是否能够围绕第一点中的三个目标,选择学生易懂的案例来制定相关的训练项目,从而锻炼学生实践能力、后续课程的学习能力以及将来走上社会后的自学能力。
(3)学生是否能够围绕训练项目进行认真实践。
高职《C#程序设计》的教学,关键在于教师对教学内容(教什么)和教学方法(怎么教)进行合理的设计,但实际教学过程中,受教学目的、教学内容及学生情况等因素的影响,找不到任何一个普遍适用的教学模式或方法,教师唯一能做的就是根据实际情况设计教学过程。
参考文献:
[1]R.M加涅.教学设计原理[M].上海:华东师范大学出版,2005.
[2](美)佩特佐德.Microsoft C# Windows程序设计[M].北京:北京大学出版社.
[3]吴晓艳,刘洋.《C#语言程序设计》精品课程建设的探索[J].科技信息,2010(25).
c程序设计范文4
关键词:C程序设计;教学方式;实验教学
中图分类号:G642文献标识码:A文章编号:1009-3044(2008)11-20290-01
1 引言
C 程序设计功能丰富、表达能力强,既具有高级语言的优点,又具有低级语言的许多特点,在当今系统软件和部分应用软件的开发中具有很强的实用性。[1]C程序设计是计算机及相关专业中一门重要的计算机基础课程,也是《C++程序设计》、《数据结构》和《操作系统》等课程的前导课程。由于作为程序设计的入门课程,同时C语言牵涉到的概念比较复杂,规则繁多,使用灵活,容易出错,使不少初学者感到学习困难。这就要求教师深入探讨教学内容、方法及手段的改革,尤其是探索一套行之有效的教学方法。
2 明确教学目的、引导学生正确认识课程
C 程序设计主要培养学生正确的设计算法以及编程能力,熟练掌握程序设计的思想,培养学生结合所学知识解决实际问题的能力和正确的编程思维方式。但是《C程序设计》课程在学生心中没被引起足够的重视,对课程的理解普遍存在两个误区:一是在当今的软件领域,C语言已经无用武之地,想一步到位学C++、JAVA之类;二是程序设计对今后的学习和工作意义不大。[2]
针对这两个错误的看法,我们从两个方面有意识地引导学生正确对待C 程序设计:第一、强调算法,我们通过讲解一些常用的、经典的算法,使学生对学习C程序设计有更高层次的认识,认识到算法是程序的灵魂,只要有了算法,可以用不同的计算机语言来实现;第二、理论与实践相结合,收集一些与专业联系紧密的应用程序作为范例,同时可以例举一些因特网上的应用(例如:网站、网络游戏的开发),让学生清晰的认识到程序设计的重要作用。
3 注重教学改革,采用多样化的教学方式
实例式教学注重实例演示、动手实践,与计算机学科自身的实践性、操作性强的特点相一致。优秀的课堂教学应该以程序设计为主线, 寓概念于实例中, 将复杂枯燥的语法知识分解到每个生动、有趣、实用的程序实例中,避免一味地给学生讲解语句的功能和语法规则,使学生陷入到繁琐的语法规则之中。实例选取的适当与否直接影响学生的学习效果;选取时应注重基础知识与基本技能的训练,选取的实例既有基础性、典型性,又要尽量保持一定的趣味性。
在实例式教学活动中,我们不能只给学生一张n-s流程图,一个正确的程序和结果,而更应该展示给学生的是一个过程,一个思想,也就是怎么样去解决这个问题。我们的重点在于教会学生掌握方法,即帮助学生学会自己解决问题。我们首先介绍实际问题,针对问题进行分析,然后将实际问题抽象为数学模型(能否得到正确的数学模型就决定我们的程序能否得到正确的结果),接着我们介绍问题的解决办法(即算法和数据结构),最后使用C编程实现。在教学过程中,教师切忌采用灌输式教学,一味的自演自说,而是应该有意识地举一些例子,由浅入深、由易到难、循序渐进、逐步深入的介绍我们的知识点;通过与学生的不断互动,活跃、引导他们的思维,来启发学生发现问题、解决问题;将自身角色转变为学生主动学习的帮助者、促进者,培养学生独立思考能力。
这个过程的重点是介绍程序设计方法和思路,在分析程序和程序设计中让学生逐步熟悉基本的语法和语句。对于在程序中出现的新的语句或函数,我们据此实例对其进行讲解,不做详细深入讲解,进而来突出程序设计为主线、算法是教学重点。在学生掌握实例的算法以后,我们针对新出现的语句或函数给出若干问题作为课下作业,采用问题驱动法来引导学生对该语句或函数进行更深入学习,这样一方面,我们可以在有限的学时内,更好的讲授教学重点难点;另一方面,可以引导学生在课余时间充分发挥自己的思维,突出其在学习中的主体作用,培养其自学能力。
整个教学过程中强调在应用中学习,从而避免了枯燥、繁杂的理论说教,不仅能增进学生的学习兴趣和积极性,而且对提高学生综合分析和解决实际问题的能力也大有帮助。
4 强化实验教学,培养动手能力
C程序设计是一门理论与实践并重的课程。我们应该改变实验教学为理论教学的附属、实验仅仅是对理论的简单验证的观念,认识到学生只有通过实验环节才能在实践中真正的掌握C语言语法、语义,培养程序设计的能力。因此,我们要加大实验教学的力度,对实验教学的各个环节进行精心设计。
兴趣是激发学生主动学习C语言的关键,而加强实验教学,尽力提高实验内容的趣味性,利用学生在实验过程中产生的“求知欲”和“成就感”是激发学习兴趣的一种重要方式。精心设计实验内容,使其不但与理论教学同步,而且突出理论知识的重点与难点。实验内容包括三部分:一、验证型实验。该部分要求学生根据实验指导书中要求进行操作,题目有参考答案可以借鉴。主要通过对一些知识点的验证,来帮助学生掌握基本的知识点;二、简单的编程题与程序填空题。该部分内容主要针对所学的新概念、新语句,是对他们的简单的运用,尽量体现出教学重点与难点;三、程序改错。内容的选取主要针对学生容易疏忽、易犯错误的知识点,通过这些“反例”帮助学生扎实掌握知识点;四、编程题,该部分题目较复杂,具有一定难度,注重前后知识的衔接,需要综合运用前面章节的内容,要求学生综合所学的知识来达到知识的系统化[3]。同时,在设置实验内容时我们应该考虑到不同层次的学生,通过设置一部分选做题来引导学有余力的学生进一步学习。多种实验内容的结合, 即巩固了学生的理论基础,又可提高学生分析问题、解决问题的能力,从而使学生整体的动手能力有所提高。
在指导实验时,应让学生先独立解决问题,在学生不能独立完成时,教师应该先询问学生的解题思路,通过与学生进行讨论来引导学生、让学生自己发现问题,分析、解决问题,从而达到辅导的目的,而不是直接告诉学生正确的解题思路。
实践环节要注重学生调试程序能力的培养。基本调试技术是深入学习和取得实际编程能力的前提,可通过现场演示等手段,讲解C语言的编译环境及一些常用的调试技巧,例如通过单步执行、设置断点、观察变量的值等调试技巧来帮助学生理解程序的执行过程,增强程序的排错能力。教师需要对实验操作中遇到的问题和常犯的操作错误进行归纳总结,集中进行讲授,及时有效地清除学生学习过程中的障碍。
5 改革课程考核方式
课程考核采用笔试考试、实验考试及平时实验成绩相结合的方式。其中笔试考试占总成绩的50%,可采用类似计算机二级考试的C 语言部分作为考题,对学生掌握理论基础知识的程度进行全方位考查。实验考试占总成绩的40%,采用上机操作的考核方式,考察学生的编程能力、程序调试能力。平时实验成绩占总成绩的10%,考核依据为平时实验项目的完成情况。
课程的这种考核方式避免了学生埋头于书本,死记硬背知识点,忽视实际操作能力与应用能力的培养;使学生将精力集中于程序的设计与调试,有助于实际动手能力的培养。
6 结束语
C程序设计这门课程,作为程序设计的入门课程,起着重要的作用。教师要有效地组织教学,以“程序设计”为主线,灵活地运用多种方法进行课堂教学;注重学生程序设计能力的培养,抓好实践技术技能的训练;激发学生的学习兴趣,让学生主动、愉快地学习,这样才能取得良好的教学效果。
参考文献:
[1] 谭浩强.C程序设计[M](第三版)[M].北京:清华大学出版社,2005.
c程序设计范文5
关键词:C语言;程序设计;机考;分层教学;课程改革
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)34-8225-02
《C语言程序设计》课程的授课对象是计算机专业本科学生,为专业基础(必修)课,是学好后续各软件课程必要的基础。有别于已经掌握的汉语、英语语言,作为人与计算机交流的语言,C语言不但概念多、符号多、语法多、规则多,而且抽象、难懂,再加上需要有一定的理解力以及解决问题的清晰思路,有些学生在学习过程中会感觉到枯燥、繁杂、无趣。因此培养学生的学习兴趣、加强对课程的重视、提高实际编程能力、将理论与实际相结合,是教师必须解决的问题。
为了提高学习质量,从2010年秋季学期开始对《C语言程序设计》课程的教学过程、成绩考核进行了改革,由原来的纸质试卷考试变成全程上机考试。改革实施多年来,大部分学生增加了学习兴趣,有了编写程序的主动性和积极性,增加了专业学习的信心,提升了程序设计的能力。
考虑到学生在基础知识、智力因素、学习能力上的差异,为了更有效地实施“因材施教”,从2013年秋季学期开始实施分层教学。在讲完C语言基础知识、程序基本设计方法之后进行分层。通过考核,外加自愿的原则,将原来的教学班打乱,重新组合成两种班型――高层次、低层次班。分层之后,每个学生个体获取的知识趋于最大化,极大地提高了课堂学习效率。
1 传统教学与纸质考试存在的问题
传统的教学是按照指定教材,在课上将重点内容进行讲解,典型的问题、方法在TC/VC环境中进行演示,课后留给学生一定的纸质作业和上机编程作业。同样的讲授,理解力强的学生一听就懂;理解力弱的学生,老师需要讲多遍才有可能懂。传统的教学中,老师只能顾及大多数中等学生,照顾不到特殊的学生。降低了课堂效率,也可以说浪费了某一部分学生的时间。
由于期末考核采用的是纸质考试,只是从纸面上考核学生对C语言理论、编程方法的理解、掌握程度,更对学生的学习产生误导。部分学生也只重视理论,不重视实际动手编程。他们只满足于“纸上谈兵”,不考虑结果。因此,实际应用时,对上机环境不熟悉、编写的程序不能顺利通过,导致很多学生高分低能,在解决实际问题时,茫然无措。
2 机考及分层教学改革的探索
计算机专业课程的特点是实践性强,学生在掌握了基本语法后重点是上机实践,即在计算机上解决实际问题,这里包括问题的分析与抽象、程序的编写与调试。
常言道:“实践是检验真理的标准”。在学习C语言过程中,上机实践是巩固理论知识、增加理解力、提升编程能力的重要途径。为了提高教学质量,让学生真正打好专业基础,授课教师在教学内容、教学方法、教学组织、考试方式等多方面上进行了调整。
2.1 教学方法以及教学组织上的改革
为了使教学效果更好,将两个自然班作为一个授课班,教学内容统一要求。讲授时,由浅入深、循序渐进。在语言的基础上,重点放在程序设计的思想、方法、技巧的讲解,结合典型例题,培养学生分析、设计、解决问题的能力。通过精心设计实验题目、课后作业、调整考核比例、增加课后上机机时、多方位提供答疑指导等环节培养学生学习兴趣,使学生重视上机编程。
对学生作业题目进行精心设计,既覆盖知识点,又有趣味性,每个题目都像在讲一个故事,把要解决的问题融在故事中,学生在读故事的同时,不自觉地就会去想解决办法,增加了兴趣,提高了自主性,也锻炼了思维。
调整平时考核内容。平时考核的环节包括:上机小测试、期中机考、上机作业、考勤,每一个环节的成绩都会反映到平时成绩中。平时成绩的取得完全依赖自己的学习态度。
增加课后上机机时。由于考核重点是对实际动手能力的考核,光靠课内安排的上机时间显然不够,所以需增加学生课外自主上机实验时间,并配有指定人员辅导。
多方位提供答疑指导。所有任课教师把答疑时间错开,这样每周学生可以有多次答疑时间,对比原来教师只给自己学生答疑的做法,学生增加了学习解疑的机会。
2.2加强上机实验过程控制,促进考试改革
借助于“课程自动评测与抄袭检测系统”,老师和学生有了C语言作业部署、学习、检测的平台。通过这个平台,老师可以布置上机实验、安排考试、检查学生提交的作业。根据知识点,每章布置4-5道题,限定学生在规定时间内独立提交。老师可以随时查看学生提交的程序,及时与学生沟通、反馈。学生可以随时把自己编写的程序提交,系统对提交到服务器的程序自动判断对错,学生可以及时了解自己程序存在的问题,不断进行修改,直到能够顺利通过所有测试。
这一环节起到了巩固课本知识、增加独立思考、加强动手能力的作用。期末就是利用这个平台进行全程两个小时的考试,要求学生既有编程的能力,又有时间的紧迫感。
加强过程考核,增加平时机考次数。为了缓解期末机考时的紧张情绪,之前会安排1-2次的上机考试,成绩记入期评,其中期中考试的考试形式与期末一样,为全程两个小时的机考,随机组卷。学生可以尽早了解考试模式,并更加重视对本门课程实际动手能力的训练,学会调整心态。
为了满足不同层次学生的要求,在平台上配备了大量不同难度的习题,不受提交时间的限制。学生可以根据自身需求,随时编程测试。
2.3分层教学,提升学习效率
分层教学是根据学生不同基础、不同学习需求而实施教学的一种手段。是在承认学生差异、考虑学生兴趣的前提下,以发展的眼光看待学生,给每个学生提供符合他们发展的教学目标与方法,是同时提高所有学生能力的理想状态。经过调研,从三个方面进行分层教学。
1)学生分层。对学生能力考核的一个重要标准就是学生的学习成绩,但是在学习这门课之初,没有可依据的成绩。分层安排在讲完两周课,即学完了简单程序设计之后进行。学生根据自己当前对C语言的理解和接受程度,选择不同层次。在分层教学的实施过程中,这样的分层是暂时的、动态的。过一段时间,视学生的后期学习成绩、学生的具体情况,可递进或降层。这样更有利于学生个性化发展。
2)讲课分层。对不同层次的学生,采取不同课堂。在讲授编程思想、必备知识基础上,对高层次学生,拓宽和加深问题的难度,做到拔尖提高;对普通学生,在达到大纲要求的同时,考虑他们的接受能力,适度增加和加深知识,做到稳步推进。
3)实验分层。练习是对所学知识的巩固和消化。按照作业、实验题目的难易,对不同层次的学生提出不同要求。对普通学生布置基础题,进行强化训练;对高层次学生,以综合运用知识进行练习。要求学生多编程解决问题,以提高应用知识的能力。这样使得不同层次的学生得到不同程度的提高。
3 教学改革实践效果
实行考试改革后,学生的学习积极性有了明显提高。由于考试时间的有限性,增加了学生的紧迫感、主动性,在程序编写、调试程序的实际动手能力方面得到了重视并有所提高,为后续课程学习奠定了良好的基础。经过分层教学,满足了不同层次学生学习的需要,激励了各层次学生朝着有利于自己的方向努力,有利于学生个性能力的张扬,有利于学生综合素质的提高,更有利于优秀学生综合能力的发挥、较低层次学生潜在能力的开发。
3.1带动学风,促进后续课程的学习
大部分学生能够按时到课,勤于思考,互相研究,答疑的同学增多了。改变了不良学风,营造了良好学习氛围。由于课程期间比较重视学生结构化程序设计的方法,要求编写程序之前理清解题思路、做好算法设计,经过训练后,在后续的“程序设计专题训练”中,面对稍难一些的问题,学生也能逐步找到解决办法,编出程序,顺利通过测试。在小学期“学术工程实践”课程中,要求完成一个小型管理系统,有一定的难度。大部分学生能够顺利编写由多个结构体、多个文件、几十个函数组成的、2000-4000行代码的程序,并调试成功,完成管理。
3.2提升学生的程序设计能力和创新能力
竞赛是考核学生全面素质的一个平台,它要求学生具有扎实的理论基础、清晰的算法设计能力、娴熟的编程能力、良好的心理素质和快速的临场应变能力。
随着知识的积累,学生的能力和自信心不断增强。学生们更加渴求知识,渴望展示自己,参加竞赛的积极性提高了,人数也不断增多。在大二阶段,报名参加全国软件设计大赛的人数由09级的16人次(占09级学生人数14.04%)、10级的33人次(占10级学生人数26.19%),增加到11级的66人次(占11级学生人数51.56%)。全国获奖人数由09级的1人次(占09级学生人数0.88%),到10级的12人次(占10级学生人数9.52%),再到11级的17人次(占11级学生人数13.28%),获奖人数同比增多。
4 结论
总之,学习“高级程序设计语言”不仅要使得学生在程序表达和设计上得到培养,更重要的是在掌握解决问题的思想、方法和手段的同时,实际动手编程能力有所提高,从而增长设计程序的能力。因而,将“C程序设计”课程的考试改为上机考试是很有益的,可以改变不良的学风,营造良好学习氛围;可以加强学生对课程的重视,提高学生程序编写、调试等实际动手能力,提升学生的程序设计能力和创新能力,为后续课程学习、为培养合格的专业人才奠定良好的基础。
对“C程序设计”课程实施分层次教学也是必要的,可以针对不同层次学生的需求给予相应的学习指导,以达到学生全面发展的教学目标;可以激发不同层次学生学习的欲望,向着更高更深的知识海洋探索;可以鞭策任课教师积极思考、合理取舍,做到充分了解学生、合理安排进度,能够极大地提升老师的组织与应变能力。
参考文献:
[1] 李学会.C程序设计教学改革与实践[J].实验室科学,2010(4)33-34.
c程序设计范文6
关键词:程序设计;C++;教学改革
作者简介:李传珍(1980-),女,北京人,中国传媒大学信息工程学院,讲师;徐品(1958-),男,北京人,中国传媒大学信息工程学院,高级工程师。(北京 100024)
基金项目:本文系中国传媒大学优质示范建设课程项目(项目编号:yzkcx0915)的研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)28-0110-02
“C++程序设计”课程是中国传媒大学(以下简称“我校”)信息工程学院电气信息类大学生的必修课程。该课程以C++语言中的面向对象机制为主,主要介绍面向对象程序设计的方法和C++ 语言的基本概念。学生在学习过程中可以通过大量的程序实例和相关练习,逐步掌握C++的面向过程和面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能。
一、“C++程序设计”课程教学现状分析
在众多课程中,本课程有着独特的地位和作用。第一,本课程是我校C++软件课程设计的基础,也是很多专业实验课(如数字图像处理、多媒体技术原理等)的基础,更是计算机二级(C++)的基础。第二,许多高校对研究生的编程能力有一定的要求,而C++语言则是重要的工具之一。第三,就业市场对C++高级软件工程师的需求一直较大,并且熟悉C++语言的程序员更容易掌握其他语言。因此,熟练掌握C++程序设计语言,必然会为学生未来在毕业、深造、就业竞争中打下坚实基础。
尽管“C++程序设计”课程是一门非常基础且有重要价值的课程,但是由于课程抽象、学生缺乏学习兴趣、学习方法不当,以及非计算机类学生编程语言基础薄弱等问题,一些学生在学习过程中感觉吃力,无从下手。为了了解学生的学习现状,并有针对性地进行改善,笔者几年来针对课程教学和课程实验等环节设计了问卷调查,包括:
1.对未来的打算
在众多学生中,仅有41%的学生有意愿将来从事理工科类工作并继续深造、研究。大部分学生对未来的规划偏向于文科、艺术类专业。这与招生过程中的调剂、学校整体特点等因素直接相关。
2.课程内容是否有帮助
仅有40%的学生认为本课程会对其今后的发展有帮助,60%的学生甚至并不清楚本课程对后续相关课程的基础作用。
3.每周的自主上机时间
作为一门计算机语言类课程,实践的重要性不言而喻。64%的学生完全没有按照教师要求主动保证每周不少于2小时的自主实践时间。通过沟通,部分学生认为遇到困难难以解决是阻碍自主上机的重要因素。
4.实验方式
41%的学生表示希望在教师引导下独立完成;45%的学生表示希望在教师完全带领下完成实验;2%的学生表示对课程内容毫无兴趣,自然也不会独立完成实验;其余的学生则是因为无法解决实践中的问题而退缩。
从上述调查结果看,本课程面临的主要问题是:在部分学生完全没有学习主动性,学生C语言基础薄弱,且课时量不能增加的前提下,怎样有效地提高学习效率?在这种需求下,设立如下改革思路:提高学生的学习兴趣或至少是增强学生的学习动力;重点培养面向对象程序设计的思维,突出编程能力培养;增强与学生的课外互动;实践过程中循序渐进,有材料可依。针对以上改革思路,本课程在实际中做了一些尝试。
二、“C++程序设计”教学改革实践及效果
1.从“问题”到“程序”
兴趣是推动学习者求知的内在力量,[1]然而在C++语言基础学习中,很多学生对课程内容缺乏学习兴趣,或是在学习过程中兴趣逐渐消退。针对这个问题,笔者在课程中不仅修改了主要例题,将抽象的变量、对象更改为和现实事物对应的变量和对象,还在讲解过程中从具体问题着手,穿插后续课程的实例进行演示,引出重要的基础概念。这种做法能够达到多重效果:一是让学生提前体验到课程成果,激发学习兴趣;二是了解本课程基础内容和后续课程之间的关系,明晰课程的重要性;三是和实际问题结合,在实例讲解中培养面向对象程序设计的思维,教师“举一”,学生“反三”,增强学生解决实际问题的能力。
例如,很多教材给出的例题[2]与实际应用脱节,很多例题中采用“A”、“B”的类名,并没有体现其具体代表的含义,不能体现“类是对现实事物的抽象”这一思想。教师在课程中从实际的课程设计题目《“画图板”程序设计》引入,并且向学生强调演示的“画图板”是由学长独立完成的,并鼓励学生进行相关概念的学习和实训也努力做出类似的应用程序,向学生传递一种积极的期望。在实际教学中,首先确定画图板能画出直线、圆形、正方形等形状。在面向对象思想中,继承关系正是被用来描述这种“派生类是一种基类”的。明白了现实事物和C++语言中概念的对应关系,再辅以具体语法讲解,能让学生明确怎么从现实事物映射到具体的编程语言。为了进一步提高学生的抽象能力,需要反复列举实际问题,引导学生独立完成实例的分析和类的抽象,并在此基础上用C++语言描述上述抽象过程。
通过对学生的学习效果进行观察发现,教师可以帮助学生建立分析问题—解决问题—语言表达的过程,学生可以仿照该思维模式进行问题的分析和程序的编写,真正做到举一反三,并在面向对象程序设计思维能力和编程能力上均有所提高。同时,课程末期的问卷调查表明,看到学长的成果,70%以上的学生产生了积极的学习意愿。这表明该措施对学习者的心理产生了积极的影响,为后面的课程学习奠定了良好的基础。
2.增加网络互动,解决课外问题
从教学现状的分析看,部分学生认为课下遇到问题不能解决成为降低学习主动性的主要因素之一。因此,在日常教学活动中需要指导学生正确认识学习过程遇到的困难。本课程是一门计算机语言类课程,在学习方法上可将其和语言类课程(如英语等)做类比。这些课程均包括一定的词汇、语法,都是对现实问题的描述(只是描述时所用语言不同)。也就是说,想要熟练掌握C++语言,需要像学习一门外语一样,做好打持久战的心理准备。在这场持久战中,学生要正确面对遇到的困难,做到知难而上。但是面对困难的决心仅靠“不畏惧”的精神是不够的,还需要掌握克服困难的办法。因此,教师要在必要的时候给予及时的帮助,帮助学习者逐步建立学习的信心。
面对面交互是一种效果非常理想的模式,但是受限于学生和教师时间不能统一、部分学生不愿意面对教师等因素,面对面的交互只能在有限时间、特定的地点进行,大大降低了答疑解惑的时效性。随着计算机网络技术的飞速发展,利用网络进行教学和辅导教学已经成为当前教育技术和教学活动中的一种重要形式。2008年我校网络教学综合平台正式开通,本课程率先采用网络教学平台实现作业提交、问卷调查、材料、通知公告等教学环节。其中,“课程论坛”使辅导答疑不受时间和地点的限制,有效提高了学习者的学习积极性和学习效率。其优势还在于两点:一是学生的问题和教师的解答经过一定时间的积累,能够成为可重复利用的宝贵资源。例如,有些问题的浏览数量可达数十次,当学习者遇到和其他人同样的问题时,仅需浏览教师已做出的回复即可,避免了同样问题的重复回答和等待教师回复造成的时延;二是教师对学生的回复学生本人可重复查看,加强了对学生的心理暗示,并有可能产生“皮格马利翁”效应。[3]例如,教师在回复中会增加鼓励性的话语,这些话语落在字面上,能引起学习者大脑皮层的愉悦感,同时能激励起学生的自信、自觉、自强。许多学生在自主学习中受到挫折后,只要看到这些落在字面上的鼓励和“积极的期望”,不需要太多时间重新调整心态,也不需要再次得到教师的当面肯定,就会自己振作起来。
该项措施能够及时解决学生在自学过程或自主上机过程中出现的问题,尽可能地避免了“知难而退”现象的发生,阻止了部分学生的流失。同时,由于在网络交互中可以更多地解决C语言基础薄弱引起的问题,减少了因复习C语言内容造成的学时消耗,减轻了课时缺乏的紧迫感。针对该项改进措施进行问卷调查,95%的学生认为通过网络课程论坛可以与老师及时沟通,很有帮助;只有5%的学习者比较排斥网络交互,这可能是由于个体沟通习惯或提问方式不当造成的提问低效引起的,教师需注意引导学生有效提问。当然,这也对教师网络在线的时间提出了较高的要求。
3.实验改革,促进自主学习
在课程实验课时不足的情况下,指导学生自主进行上机练习,是对课程实验的有益补充,也是学生独立完成课程实验任务的锻炼机会。但是从实际情况看,大部分学生并没有像教师要求的那样,主动保证足够的课下自主实践时间。刚刚接触编程的人需要面对各种程序中的错误,如果能够较好地解决实际中的问题,能够大大激发他们的学习兴趣;反之,则会在一定程度上抑制学习的积极性。因此,需要在自主上机初期给予学生充分的书面指导,引导学生掌握必须的程序编写技巧和调试技巧。这种“授之以渔”的实验指导书,遵循了由浅入深、由易到难、由细致粗、循序渐进的指导原则。指导书中的部分内容在实验课中由辅导老师指导完成,剩余部分则布置学生课外时间自主完成。
在早期的自主上机和实验课程中,实验指导书尽可能详细地描述上机过程和上机过程中遇到的问题以及解决办法。只要学习者按部就班地遵循实验指导书的指导,就能轻松实现实验指导书要求的内容。在课程实验的后期,实验指导书中仅给予必要的实验提示,由学习者独立思考完成题目要求。在要求自主学习的截止日期之后,由教师在网络平台上实验题目的参考答案,供学生参考。实验指导书能帮助学习者在自主学习中快速掌握编程技巧,快速解决程序错误,并逐步训练其自行解决问题的能力。
从结果看,能够按照教师进行课下自主学习的学生在实验课中表现更突出,能够在规定时间内完成要求的内容,并且能够独立解决实践中出现的实际问题。从学生反馈情况看,大部分学习者能够接受和遵循实验指导书的指导,通过自主学习达到入门的要求,培养了解决问题的能力。对于小部分不能跟上的学生和不能完全体会实验指导书作用的同学,还需要在实验课程中着重辅导,引领其入门并学会使用实验指导书。
三、结论
本文对C++语言基础实际教学中出现的常见问题进行了分析,通过实例引入、增强课外网络互动、改革实验指导书等形式,在一定程度上激发了学习者的学习兴趣;并通过以实践为主的学习方法帮助学习者建立面向对象思维方式和提高编程能力;对于自主学习中遇到的问题,通过实验指导书让学生“有法可依”。这些方法能够解决实际中出现的部分问题,对“C++语言程序设计”教学有较好的促进作用。此外,在多年的教学中发现,因为学习者个体差异(包括学习基础、学习能力、学习动力等)十分明显,而那些所谓的“学困生”往往会对其他学生产生消极的影响,因此还需要继续探索怎样针对学习者的个体差异进行教学尝试。
参考文献:
[1]朱文彬,赵淑文.高等教育心理学[M].北京:首都师范大学出版社,2007.