前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇c语言程序设计论文范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:C语言;学生成绩管理系统;程序设计
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)04-0059-04
1 背景
如今各大高校均需要一个完整的系统来管理和保存学生的各门课成绩信息,以便后期使用,论文以河海大学文天学院的工科专业学生成绩为例,运用C语言程序设计和程序运行的环境,设计了一个简单的学生成绩管理系统,下面就来介绍该系统是如何构建的。
2 系统需求分析
2.1 系统功能划分
该系统主要功能如下:
1)学生基本信息和成绩的录入;
2)学生成绩的管理,如计算总分、排序、统计等功能。
2.2 系统功能结构设计
这个学生成绩管理系统中包含的学生信息有:学生的学号、姓名、性别、高数成绩、英语成绩、计算机成绩、三门功课总分,主要的功能模块如下:
1)输出学生基本信息并算出总分;
2)按照学号进行排序;
3)按照总分进行排序;
4)统计各门课程平均分;
5)统计男女学生人数;
6)按照姓名进行排序;
7)统计高数成绩优秀(大于等于80分)的人数,并输出符合条件的记录;
8)统计每门功课成绩都在80分以上,或总分在240分以上的人数,并输出符合条件的记录。
C语言中系统的每个功能由一个函数来实现,其系统功能模块层次结构图如下:
图1 学生成绩管理系统功能模块层次结构图
因为函数就是功能,所以对于图1的功能模块层次结构图,每个模块就对应C语言中的一个函数,该系统中所涉及的函导捌涔δ苋缦拢
1)int Menu();
主控菜单函数,有返回值,无参数。用菜单形式显示该系统能实现的所有功能,以供用户查看和使用。函数中的返回值为用户输入的序号code,为局部整型变量。
2)void Read(struct student stud[],int *n);
读入数据函数,无返回值,有参数。形式参数stud为结构体数组,由于调用此函数时实际参数为数组名,因此此处用数组接收;形式参数n为指针变量,由于实际参数为存放学生人数的整型变量的地址,因此n指向存放学生人数的整型变量,这样可以在读入学生信息的同时,还可以统计出学生的人数。
3)void Print(struct student *pstud,int n);
输出数据函数,无返回值,有参数。形式参数pstud为指针变量,指向存放学生信息的结构体数组,这样可以将相关变动信息返回给主调函数;形式参数n为整型变量,存放学生的人数。
4)void total_order(struct student *pstud,int n);
按总分排序函数,无返回值,有参数。形式参数同上。
5)void num_order(struct student *pstud,int n);
按学号排序函数,无返回值,有参数。形式参数同上。
6)void ave_count(struct student *pstud, int n);
统计各门课平均分函数,无返回值,有参数。形式参数同上。
7)void nn_count(struct student *pstud,int n);
统计男女学生人数函数,无返回值,有参数。形式参数同上。
8)void name_order(struct student *pstud,int n);
按姓名排序函数,无返回值,有参数。形式参数同上。
9)void gxyx(struct student *pstud,int n);
统计高数成绩优秀人数函数,无返回值,有参数。形式参数同上。
10)void mm(struct student *pstud,int n);
统计每门课分数不小于80分或总分在240分以上人数函数 ,无返回值,有参数。形式参数同上。
3 C语言程序设计
一个C语言源程序由若干个函数构成,且有且仅有一个主函数,主函数的名字只能是main,其他函数名字由用户自己定义,只要满足标识符的四大规则即可。一个程序总是从主函数开始执行,无论主函数在前还是在后,该系统中除了主函数外,还有十个函数,下面针对其中几个重要的函数进行程序设计。
3.1 主函数程序设计
为了方便读者更好地读懂该程序,部分地方加了注释,以上程序中/* */为注释,计算机并不执行。其中第四行的N为符号常量,表示该系统记录了10个学生信息,每个学生信息用结构体类型的数组来保存,该结构体类型包含4个子成员,每个成员又是另一种类型的数据,其中学号、姓名、性别均由字符数组存储,成绩由整型数组存储,这样就构成了struct student结构体类型,主函数中的第一条语句就是用这种类型定义了结构体数组stud,用来存放十个学生信息。接下来就在主函数中调用各个函数,实现相对应的功能。
3.2 用户自定义函数程序设计
3.2.1 主控菜单函数的设计
在屏幕中显示主控菜单,scanf为输入函数,需要输入一个整数,通过输入相对应的数字序号,可以实现相应的功能,例如输入1,即显示学生全部信息。
3.2.2 读入数据函数的设计
该系统是从文件中读取数据,10名学生的信息存储在文本文件studfile.txt中,如果想修改学生信息,直接在文件中修改即可,不用修改程序,这样既方便又快速,大大节省了时间。
3.2.3 按姓名排序函数的设计
以上程序使用冒泡的排序方法按姓名从小到大排序,系统直接将排序的结果输出到屏幕中,以供用户查看和使用。
4 系统界面
将以上程序输入到计算机C语言开发环境Microsoft Visual C++6.0中,经过编辑、编译、连接以后就可以运行了,运行界面如下:
1)系统菜单界面
当按下回车键,系统进入菜单模式,按照序号选择需要显示的信息。
2)@示学生信息界面
当按下序号1,系统进入显示全体学生信息界面,显示的同时计算出了3门课总分。
3)按学号排序界面
按下回车键继续进入菜单进行选择,当按下序号3,系统进入按学号从小到大排序的界面。
4)统计高数优秀的学生人数和记录
按下回车键继续进入菜单进行选择,当按下序号7,系统进入统计高数不低于80分的人数和记录。
5 结束语
论文主要介绍了学生成绩管理系统的设计与实现过程,分别从系统需求分析、系统程序设计和系统界面设计三个方面展示了系统的设计与实现,其中系统需求分析包括大体功能划分和具体功能结构设计,并设计了功能结构图,描述了各项功能,系统程序设计包括主函数和其他自定义函数的设计。该系统总共实现了八项功能,学生信息来源于文本文件,这样大大方便了学生信息的增删改查等功能。系统中所有功能使用到的方法,还可以实现更多的功能,拓展性能良好,便于各高校各专业使用。
参考文献:
[1] 胡枫. 《C语言程序设计》的案例式教学的设计[J]. 青海师范大学学报, 2010(4).
[2] 谭浩强. C程序设计[M]. 4版.北京: 清华大学出版社, 2010.
[3] 宫业芹. C语言程序设计网上教学系统的设计与实现[D]. 济南: 山东大学, 2012.
关键词:应用型本科;培养软件工程师;Java课程群;教学研究
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2014)19-4518-03
Java Programs Applied Undergraduate Teaching and Research Group for the Training of Software Engineers
YU Xiao
(Wuhan Technology And Business University Department of Information Engineering, Wuhan 430065, China)
Abstract: In this paper, application-oriented university training Java software engineers in the process of teaching a number of issues, analyzes how demand-oriented enterprise Java software engineers conduct group teaching curriculum design, including accurate positioning training applied talents teaching objectives, optimize Curriculum reconstruction and the accumulation of experience teaching curriculum system, integration and research.
Key words: Application-Oriented; Training of Software Engineers; Java Curriculum Group; Teaching and Research
1 应用型本科Java课程群的教学现状
随着计算机行业的发展进入到互联网时代,由于 Java语言在计算机软件开发尤其是支持网络编程方面的优势,大多数高校计算机科学与技术专业在培养计划中都设置了Java系列课程的培养方案。应用型本科大学作为第三类大学在进行Java系列课程教学改革中确定Java课程群体系的培养目标是非常重要的。因为应用型本科培养的软件类毕业生在就业中将会与研究性大学本科专科毕业生、职业技术专科学院和职业培训机构的学生进行竞争。为了适应软件行业对Java开发人才的需要,高校简单的开设一门Java语言程序设计是远远不够的[1]。现阶段,应用型本科大学的Java课程体系是参考研究性大学本科课程体系的标准而制定的,并没有突出应用性的特点,而学生在编程方面的能力培养远不及职业技术学院、职业培训机构的学生在实践编程能力的培养。
2 面向培养Java软件工程师课程教学的重要性
现阶段计算机应用软件的开发主要采用.Net平台和Java两大平台,这两个平台各有千秋[2]。在计算机类职业培训机构的课程体系中Java系列课程也是热门的课程。Java软件工程师的职位在目前就业市场中属于紧缺职位。面向培养IT企业需要的软件工程师,为企业输送急需对口人才是各大高校在进行Java课程群的教学建设中需要考虑的问题。但是,很多Java课程体系的教学与市场需求存在脱节的情况。另外,Java教学的知识落后于企业正在使用的技术。计算机行业是发展和更新知识非常快的行业,由于高校教师缺乏与企业交流而导致在Java教学过程中不能及时更新到最新的技术,使得学生在毕业时所学的知识过时。
3 面向培养软件工程师的Java课程群教学思路
3.1应用型本科大学在Java课程群教学改革中的优势
应用型本科大学比科研型本科大学在课程设置上允许更为灵活,所以在Java课程群教学中可采用多种培养方式相结合。例如,在实践教学环节可以加强校企合作。Java的实践课程可以由企业的讲师或软件培训机构的人员参与教学过程,在教学内容上,可以比研究性大学更偏重应用。也可以在高年级的实践教学中的有限课时内让学生直接在企业中实习。为实施素质教育,提高学生的专业技能,培养技术应用型人才,需要不断探索以变更落后的教学方法,改革传统的教学模式[3]。
应用型本科大学在教学过程中比职业培训机构更注重综合能力的培养。比如,应用型本科教学不仅教授的是Java语言,除此之外教学课程体系中还会设置有《数据库原理》、《计算机网络工程》、《操作系统原理》和《软件工程》等重要的理论性指导课程,使学生在计算机应用能力上更具全面性,为学生更好的在职业发展中成为软件工程师打好理论基础,而不仅仅只能成为程序员。
3.2 面向培养软件工程师的教学目标
应用型本科Java课程体系教学应将与Java技术紧密相关的多门课程整合起来形成课程群,以强化课程间的关系,理清课程间的衔接,避免课程内容的重复性。设计课程群中实践课程的递进关系。课程群的建设应紧密结合企业的需求,设计面向培养软件工程师所需的能力项目的定向案例或课题。进行Java课程群教学培养的目标应是面向企业需求的以应用型为主的强化实践编程能力的软件工程师。
3.3 Java课程群体系
根据现有Java技术相关的教学课程选择五门课程组成Java课程群,分别是Java语言程序设计、Java语言程序设计课程设计、Java Web程序设计、Java Web程序设计课程设计、Java技术毕业设计。课程群中前一门课程是后一门课程的基础,课程的难度是递进的由浅入深的介绍Java技术的应用。每门课程都有不同的教学培养的侧重点,如下表所示。
表1 Java课程群的培养与考核
[课程名\&能力培养侧重点说明\&考核方式\&Java语言程序设计\&Java语言基础、面向对象程序设计、图形用户界面编程、文件编程\&理论笔试与实践课程综合评分\&Java语言程序设计课程设计\&三个方向的综合应用程序开发:图形用户界面与文件流结合编程;图形用户界面与网络通信结合编程;图形用户界面与数据库结合编程\&答辩与课程设计论文综合评分\&Java Web程序设计\&JSP技术基础、JDBC、JSP进行动态网站开发\&理论笔试与实践课程综合评分\&Java Web程序设计课程设计\&使用JDBC数据库连接技术进行JSP动态网站开发的综合应用\&答辩与课程设计论文综合评分\&Java技术毕业设计\&使用EJB应用开发、Java API的使用及服务的应用进行小型实际应用项目的开发\&毕业设计答辩与毕业设计论文综合评分\&]
课程群的每门课程都分为理论教学环节、实践教学环节和考核环节组成。每门课程的评分标准根据课程的特点而定。程序设计课程以理论考试与实践课程的程序完成情况进行综合评分,课程设计课程以系统运行演示与答辩结合课程设计论文的综合评分,毕业设计环节需要通过本科毕业设计答辩和本科毕业论文的考核综合评分。
4 面向培养软件工程师Java课程群的教学研究
4.1 面向培养软件工程师Java课程群教学方法的研究
在应用型本科大学教学多年Java课程群的课程以后,根据教学实际情况在教学方法方面进行了归纳总结。在Java课程群教学中应以学生在学习该课程的实际情况为出发点,一方面强化面向对象编程思想,因为面向对象是软件工程的基础,为后续用Java工具进行软件工程与产品设计打基础;另外一方面应突出Java与C++的不同点和各种工具包,主要以图形用户界面与事件作为重难点。具体来说,课堂教学方法上尽量深入浅出而突出重难点,因为一般来说,开设《Java程序设计》课程是在大学本科已经开设了至少两门语言课程《C语言程序设计》、《C++语言程序设计》之后的高年级专业课,一部分内容希望学生在老师的引导下培养自学能力或在后续课程《软件工程》与《Java Web程序设计》课程中逐步强化细节。
4.2面向培养软件工程师Java课程群教学方式的研究
教师在本校应用型本科大学教学过程中与学生进行了多次交流,得到了学生宝贵的反馈,结合教师在不断教学探索与实验教学过程中的体会与思考,对进行培养面向软件工程师的Java课程群教学方式改革进行了总结,得到以下五个方面的改进措施。
1) 实践教学与课堂教学整合
学生反映理论教学在教室学习效率不高,建议安排在实验机房进行教学,理论教学后及时进行上机操作能更好的巩固知识,实现理论与实践的同步教学。课堂教学中的每个知识点在理论教学后布置上机的小实例作业,学生通过完成小实例作业就能很好的检测该知识点的掌握情况,将实践教学与课堂理论教学整合。整个教学全程安排在实验机房完成。
2) 分步式案例教学
Java课程群中的课程的每门课程开始列出该门课程的重要知识点。在教学过程中以一个综合应用案例为线索,涵盖该门课程大部分最重要的知识点应用。将这个综合案例分解成若干部分,整个教学过程中在不同的重要章节中逐步分别讲解案例的某个部分。最后,将分步骤讲解的案例部分组合在一起,完成整个案例的拼接运行与演示。这种分步式案例教学让学生对该门课程有一个完整的知识体系。分步式案例教学在培养学生综合应用能力方面取得了很好的效果,使学生从应用角度对该门课程每章的内在联系有了一个总体的了解。
3) 学生演讲与教师指导相结合
一般来说,学生在学习Java课程群的课程时已经具有了一定程序设计语言的基础,学生在现有的C语言或C++语言学习的基础上进行多种编程语言的对比,能更好更快的掌握Java课程群的新知识。关于Java语言基础和JSP语言基础部分,例如变量与常量、表达式与运算符等知识点,可以让学生进行课下自学,并在上课过程中由学生进行演讲,对比现已学过的语言,分析Java语言或JSP语言的不同点和相同点。教师在学生讲课中及时进行补充或更正学生知识点的讲解。学生演讲与教师指导相结合的方式适用于Java课程群中程序设计语言基础部分。这种教学方式在一方面锻炼了学生的表达能力,在另一方面让学生巩固了以往的知识点并学习了新的知识点。在一定程度上调动了学生的学习积极性和促使学生更加参与课程教学,增加教与学的互动。
4) 分组答辩式教学
学生的课程设计或教学演讲都可以采用分组的方式,例如一个班级30人,一般将该班级分为6个组,每组5人。因为企业大型项目开发都是以团队的方式进行的。在应用型本科Java课程群的课程设计类课程中以团队方式进行答辩,每组团队得到相同的分数等级。使学生更具有团队合作意识,增进团队合作能力进行编程,使学生在企业中作为软件工程师能更快适应软件开发团队。
5) 案例式扩展教学在实践教学过程中的应用
Java课程群中实践课程教学可以采用一个应用实例贯穿到每个实践环节。从课内小案例的添加功能就可以完成该门课程的大案例,再在这个大案例的基础上进行优化完善可以完成综合课程设计,然后添加高级应用功能可以达到毕业设计的要求。使实践课程体系中的所有课程共同使用一个应用实例使这些多门实践课程具有内在的连续性,又可以很好的扩展性,使一个应用实例不断进行加强与优化。
参考文献:
[1] 彭碧涛,罗海蛟,姜灵敏. Java课程群的规划与建设[J].福建电脑,2014(2):51.
【关键词】C语言;程序设计;教学改革
一、C语言程序设计教学工作的重要性
C语言是一门长盛不衰的程序设计语言,深受广大软件爱好者的喜爱。它功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,而且有着比较丰富的数据类型、运算符以及函数供以选用,又直接与内存打交道,使修改、编辑其他程序与文档变得轻松、简单,因此而广受业内人士的青睐。在中等职业学校,C语言程序设计作为一门高级语言程序设计课程,是各理工科专业的公共基础必修课。所以,开展好C语言程序设计的教学工作具有非常重要的理论意义和现实意义。
作为中职学校的C语言程序设计教师,我认为要想让学生学好这门课程,不仅要通过认真讲解课本知识让他们掌握教材内容,更重要的是通过上机实践增强和巩固他们的知识,达到活学活用的教学目标。要让学生在理论学习和基础实验的基础上,提高他们的实际操作能力,培养他们综合运用理论知识来分析和解决实际问题的能力、严谨的科学态度和良好的程序设计习惯,最终实现由知识向智能的初步转化。在课堂教学中,要把注重教师的教转向注重学生的学,要让学生充分参与、充分体验、充分感受C语言程序设计,通过自主合作探究和动手动脑实践操作熟练掌握编程技巧,将课本上的理论知识与动手实践有机地结合起来,既锻炼他们分析解决实际问题的能力,又提高他们适应实际、实践编程的能力。这是在传统教学中难以实现的,因此突破传统教学的禁锢和束缚,全面深化课堂教学改革,发挥现代课堂的生机与活力,激发学生的学习热情和求知欲望已经成为当代教师义不容辞而且迫在眉睫的重任。
二、推进C语言程序设计课堂教学改革的紧迫性
本人任教的重庆工商学校创建于1987年7月,1996年被认定为首批国家级重点中等职业学校,2002年被确定为中国――澳大利亚职教合作项目五所项目学校之一,先后获得全国职业教育先进单位、全国成人教育先进单位、全国中等职业学校德育工作先进集体等荣誉称号。经过27年的办学实践探索,我校已成为目前中国西部地区规模最大、综合办学实力最强的中等职业学校之一。但是,我校的C语言程序设计教学工作还存在一些亟待解决的问题,迫切需要我们一线教师更新观念、大胆创新,积极推进这门课程的课堂教学改革,点燃学生的学习热情,提升课堂教学实效。
从教师的角度来说,由于C语言程序设计是各理工科专业的公共基础必修课。因此涉及这门学科的专业较多,由于不同的专业根据实际情况制定了不同的人才培养方案,导致各专业在C语言程序设计课程上设置的学时数、考试性质等不尽相同,教学大纲也会根据人才培养方案中对该课程的不同安排再进行修订,这就为我们一线教师增加了教学工作需要不断变换的难度。为此,我们教师应该坚持学习,努力提高自身的教育教学理论水平,把不同专业的不同学时合理地分配到顺序、选择、循环三大基本结构和数组、指针、函数等教学内容当中去,并通过大胆尝试和积极摸索,全面推进课堂教学改革,培养学生对C语言程序设计的兴趣,激发他们的学习实践热情,提升课堂教学实效,让学生通过这门课程的学习切实掌握技能,全面增强能力。
从学生的角度来说,C语言程序设计课程既不算是文科,也不算是理科,因为文科就算一个论文再长,写100张纸也总有写完的时候;理科的数学题再难,只要套上了公式就能得出答案,1就是1,变成2就错了。但是计算机语言并不是这样,如果要写一个程序,你可能2天就做出来了,也有可能两个月都做不成。再加上这门课程概念繁杂、知识点多、内容枯燥、难度较大且实用性不强,很容易让学生产生畏难情绪和厌学情绪。而且由于教材对知识的介绍是分散的、循序渐进的,学生在学习过程中接触到的例题也大都比较简单,仅为说明某种特定算法而已。与之相反,我们在实际工作中将面临的问题会复杂得多。另外,C语言提供了大量实用函数和扩展功能,这些往往是学习过程中无法涵盖的。因此经常会出现这种情况:学生把课本上的知识掌握得滚瓜烂熟,但拿到一个设计却无从下手,这也会严重削弱学生的积极性。针对这种情况,唯有教师改革课堂教学手段,把理论与实践结合,把知识与能力并重,才能真正提升课堂教学实效,达成这门课程的教学目标。
三、C语言程序设计课堂教学改革的具体举措
1、改变“满堂灌”的教学方式,把注重教师的教转向注重学生的学
课堂上,我们要一改往日“满堂灌”的授课方式,通过提出问题,引导学生分析问题,让他们自己去找寻解决问题的方法;然后再给出源代码,分析源代码,引出新知识点,对知识点进行讲解;最终留给学生一个设计任务,让他们自主合作探究,通过小组讨论、齐心协力共同完成任务,达到巩固知识点的目的。这样的授课方式与“满堂灌”相比,更为形象直观,而且学生可以主动参与到问题的分析与讨论中来,把注重教师的教转向了注重学生的学,更有利于集中学生的注意力,更有利于发挥学生的主观能动性,课堂效率也就自然而然提高了。
2、把理论与实践结合,把知识与能力并重
这门课程具有较强的实践性,我们要给予学生足够的实践时间和活动空间,让他们通过上机实践巩固理论知识。我们要通过实验指导书的设计,让学生由读程序、分析程序、程序改错逐渐达到能够独立编写程序的水平。由于这门课程的实验内容繁多,加之课时安排有限,要想在课堂时间来分析和完成所有实验是不可能的。因此,我们要让学生明白理论与实践结合的重要性,让他们在实验之前主动对下节课的实验内容进行预习,提前完成分析程序运行结果、完成程序填空、找出程序中的错误、编写程序解决实际问题等。课堂上就只需将程序输入VC++6.0中进行运行,调试程序中的错误,找出错误原因即可。这样既可以提高课堂效率,也可以锻炼学生分析问题、解决问题的能力,实现知识与能力并重的育人目标。
论文摘要:“C程序设计”课程是电子类专业基础必修课,主要是为单片机编程服务,该课程的教学效果直接影响到后续单片机课程的学习。本文结合单片机系统开发的特点,探讨了C程序设计教学方法,为后续单片机课程的学习打下基础。
随着微电子技术的发展和广泛应用,基于单片机上的系统开发,C语言作为一种高级的编程语言,越来越受到人们的关注。现在,无论是嵌入式系统开发企业还是电子设计竞赛、毕业设计等,一般都以C语言为主要开发工具。结合单片机的系统资源,用C语言开发符合实际工程需要的单片机系统,对于编程者来说就有重要的意义。
1.C在单片机教学中的地位
C语言作为一种结构化的程序设计语言,它是程序开发工具中使用最广泛一门编程语言。C语言具有很强的功能性、结构性、可移植性。用C语言编写程序比汇编更符合人们的思考习惯,程序开发者可以摆脱与硬件不必要的接触,更专心地考虑程序的功能和算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。由于它具有良好的程序结构,适用于模块化程序设计,因此采用C语言设计单片机应用系统程序时,采用结构化的、自顶向下、逐步求精的程序设计方法,将功能模块化,由不同的模块完成不同的功能。这样可使整个应用系统程序结构清晰,易于调试和维护。
2.单片机教学现状
单片机技术是现代电子工程领域一门飞速发展的技术,是现代电子技术中的一项不可缺少的重要技术。随着技术的不断进步和日益普及,单片机技术已渗透到各个领域,影响着我们的日常生活和工作。因此电子技术及相关专业的学生学习单片机技术越来越成为社会发展的需求。当前,各大高校的电子、计算机类专业均开设单片机课程。
《单片机》是我院电子系一门实践性极强的专业主干课程,是我校电子系重点建设课程之一,是本专业学生的必修课程。为了提高我系单片机教学效果,我们对单片机教学进行了大胆改革,使用C语言开发单片机,且课程的设计打破了学科体系的框架,将单片机和C语言的相关知识和技能按“项目”进行整合,并将《C程序设计》课程列为电子类专业核心基础课程之一。因此,《C程序设计》课程教学效果的好坏,将直接影响学生后续专业课程的学习。
从近几年我系《C程序设计》课程的教学效果来看,学生普遍反映该课程的学习比较困难,课程的语法知识较多,理解和记忆都不太容易,即使记住了语法知识也不能灵活应用;不知道学习C语言究竟有何用处,学完C后不能很好地利用C进行单片机小型系统的开发,缺乏知识的灵活应用能力。因此,根据以往单片机教学所得经验,我觉得教师有必要在《C程序设计》课程的教学过程中在以下几个方面引起足够的重视,并在教学中加以改进,为后续单片机课程的学习打下坚实的基础。
3.《C程序设计》课程教学方法探索
3.1上好每堂课,激发学生的学习兴趣
语言程序设计教学被认为是一种需要师生双方改进的一门课程,因为大多数语言教材中通常先给出一般的语法格式,然后逐步讲解语法要点,再给出实例。这种顺序灌输会使学生失去学习的兴趣,所以我认为在课堂教学环节应采取以学生为主体、以教师为主导的教学模式,要求学生自己先看有关知识点,并识记。教师采取精讲实例,在这过程中引出相关知识点,然后再举一类似实例让学生自己分析,巩固知识点。教师应把主要精力放在算法的分析和各语句语法的具体应用上,同时培养学生自学能力,采取互动机制,迫使学生主动学习。
3.2注重演示,强化实验,提高实践操作能力
因为授课对象是一年级新生,所以教师多用通俗易懂的语言进行讲解,多举实例,使学生容易理解和消化。在教学过程中,尽量采用讲解、演示方法,如在讲解经典算法后,按照理论方法所述,用DEV C++软件进行编程演示,从而加深学生对教学内容的理解。
在教学过程中,教师应将理论知识与实验内容进行整合,根据教学内容并结合实际应用设置实验题目,让每个学生独立完成。遇到学生不能解决的问题,教师应利用多媒体进行演示解决问题的过程,从而加深学生对教学内容的理解并提高实践操作能力。 3.3培养良好的编程风格
3.3.1优化程序
由于在许多工业测控领域中的嵌入式系统都采用单片机开发,它们所需要的计算和控制工作日趋复杂,其中软件的设计是最复杂和困难的,工作量大,特别是对于控制系统,设计人员需要考虑单片机的软硬件资源分配,但是单片机系统是一种资源十分有限的系统。这主要表现在CPU和片内结构简单、程序存储器资源的不足。因此在用C语言进行单片机开发时,如何使用好这些有限的资源就显得十分重要。虽然C语言具有许多的优点,但是生成的代码相对要长,基本多占用存储空间20%—50%。因而,在“C程序设计”课程教学中,教师不仅要教会学生如何编写程序,而且应在教学过程中向学生灌输优化代码的思想,让学生从大一开始就有开发项目的一些经验。
3.3.2合理选用数据类型
C语言在程序开发中提供了的丰富的数据类型,尤其是关于用户界面开发和一些动画与图像技术的实现。但是在开发单片机系统时,我们要按照实际需要,合理地选用数据类型。C语言中有Char等少数的数据类型是机器语言直接支持的数据类型,用此类数据类型的语句所生成的代码较短,而其它的数据类型如整型、浮点型等数据要有一定的内部程序或内部函数的支持,相对来说较复杂的数据类型的语句生成的代码也复杂,不利于转化成单片机的代码。因此,在“C程序设计“教学过程中,要向学生适当说明选择合适数据类型的好处,并尽可能地减少程序中使用的数据类型的种类,为以后学生的单片机学习打好基础。
3.3.3灌输模块化程序设计思想
在普通微型计算机上进行C语言程序开发设计时,只需考虑程序功能实现,而不必考虑程序代码的长短。但是在单片机上进行C语言程序设计就必须考虑系统的硬件资源,要求设计的软件程序结构是合理、紧凑和高效的。同一任务,有时用主程序完成是合理的,但有时需子程序效率最高,占用资源最少;有时并不是程序的算法越简单、长度越短越好,由于有一些算法要调用一些内部的子程序和函数,生成的机器代码质量反而较低。不同的算法对程序代码效率影响很大。因此,在进行“C程序设计”教学时,教师应适当向学生灌输模块化程序设计的思想,在不影响程序功能实现的情况下可以采用一些优化算法,并且把程序分成若干个功能独立的模块,为学生今后的单片机项目开发做好铺垫。
4.结语
单片机系统采用C语言开发与设计,极大地促进了单片机在生产、生活各个领域的应用,提高了程序开发效率。因而,C语言学习效果的好坏,对今后单片机课程的学习具有深远的影响。除了讲解C语言的基本语法外,更重要的是改善教学方法,利用各种方法培养学生的学习兴趣,并向学生灌输良好的编程风格与编程方法,为今后的单片机课程的学习打下良好的基础。
参考文献
[1]向艳.“C程序设计”课程教学体系和模式探讨[J].计算机教育,2010,(3):112-114.
[2]董蕴宝,潘旭君.浅谈C语言在单片机中的程序设计[J].科技信息,2009,(13):59-67.
[3]张洪静.电类专业C语言教学探讨[J].电脑知识与技术,2010,(29):8280-8281.
[4]林益平,赵福建.单片机C语言课程教学的探索与实践[J].电气电子教学学报,2007,(2):104-106.
关键词:比较教学法;问题求解能力;关键笔记;程序设计课程
中图分类号:G434文献标识码:A文章编号文章编号:1672-7800(2013)012-0171-03
作者简介:沈涵飞(1978-),男,硕士,苏州工业园区服务外包职业学院讲师,研究方向为软件测试、云计算。
0引言
C语言和JAVA语言在TIOBE编程语言排行榜上长期占据前两名的位置,在计算机行业内有着广泛的应用。这两门课程也是教学难度较大的课程,是学生深入接触计算机学科领域知识的基础课程。搜索万方数据和中国知网10年来的论文,并没有发现探讨这两门程序设计课程之间内在联系的论文;目前主流的程序设计教材也极少对这两门语言进行比较。学生在学习这两门课程时,往往觉得内容繁杂,难于掌握。充分挖掘这两门课程的共同特性,比较这两门语言的语法和特性的不同之处,突出课程的重点,能够帮助学生更好地掌握课程内容。
JAVA程序设计大体可以分为面向过程的程序设计和面向对象的程序设计。面向过程的JAVA程序设计和C语言程序设计并没有本质区别,基本思想都是采用“自顶向下、逐步求精”的程序设计方法和“单入口单出口”的控制结构。
在这两门课程的多年教学实践中,通过讨论、分析和总结,确定了以程序设计为主线、重点是培养学生的程序设计能力和计算思维,也就是放在思路、算法、编程构思和程序实现上。在程序实现这个环节,通过运用比较教学法进行C语言和JAVA语言的语法和特性的教学,既有助于学生更好更快地掌握高级语言的语法和特性,也有助于学生体会语言只是表达工具,问题求解和计算思维的能力才是核心。
1程序设计教学中存在的问题
程序设计课程是计算机及相关专业的基础课程,教学难度较大。学生往往难以理解程序设计的思维方式,对教学内容似懂非懂,而掌握良好的程序设计方法则更加困难。如果以语言知识为主线组织教学内容,由于C语言和JAVA语言涉及的知识点非常多,很多学生在学完一门课程后,普遍认为程序设计难学,教学内容枯燥,缺乏主动探索问题的兴趣。
传统的课程教学较少提及这两门语言的共性,不能在已有的基础上去完成新知识的建构,大大增加了学生的学习负担,导致常用C语言编程的同学对JAVA语言产生生疏感,而常用JAVA语言的同学也不乐意使用C语言,不少同学对于学习两门语言显得有些无所适从,产生了畏难情绪,放弃了进一步学习程序设计的机会。
2比较教学法在程序设计课程中的应用
2.1程序设计课程能力培养目标
卡内基梅隆大学的周以真教授指出,“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为”[1]。2010年首届“九校联盟(C9)计算机基础教学课程研讨会”上,明确提出计算机基础教学的核心任务是计算思维能力的培养[2]。清华大学吴文虎教授提出,“以强调动手上机实践编程为切入点,以任务驱动的方式,通过实例讲授程序设计的基本概念和基本方法”[3]。
2.2比较教学法
比较教学法是教师在教学实践中,着重体现辨析并确定教学内容间异同关系的思维过程和方法。其本质特征在于“比较”、“对照”、“对比”、“参照”。即把彼此之间具有某种联系的教学内容放在一起,加以对比分析,以确定其异同关系,认识其本质差异。
从思维训练的角度看,比较数学法可分为两种类型:①求同比较——将相同的知识,或性质相似的材料放在一块加以比较,使学生利用新旧知识之间的联系,加深理解,增强记忆;②求异比较——事物之间存在差异,教师的责任就在于引导学生将这种差异揭示出来。
2.3比较教学法应用
程序设计课程的重点是培养问题求解能力,促成学生计算思维的形成,语句只是表达工具,编程思路才是重点和难点。JAVA语言在编程风格上非常接近于C/C++语言,这是比较教学法能用于C和JAVA程序设计教学的重要因素;在线评测系统能够同时支持这两种语言,为比较教学法的应用提供了实践平台。
3C语言和JAVA教学内容分析
C语言本质上是面向过程的设计语言,提倡结构化程序设计;JAVA语言本质上是面向对象的编程语言,但也支持面向过程的程序设计。C语言和JAVA语言在结构化程序设计方面存在大量的相同之处,如在基本数据类型、运算符、表达式、三种基本结构、数组、函数等方面,C语言和JAVA语言高度相似,采用比较教学法可以突出计算思维的本质,培养学生掌握结构化程序设计的基本方法,提升学生学习的效率,克服学生对于程序设计课程的畏难情绪。
在教学中,把原有的C语言和JAVA语言的教学内容进行了重新组织,包含3部分:C和JAVA共同的结构化程序设计(基本数据类型、运算符、表达式、三种基本结构、数组、函数等);C语言特有部分(字符串、指针、结构体等);JAVA特有部分(面向对象程序设计、图形界面程序设计、异常处理、多线程等)。
通过内容的重新组织,强调了结构化程序设计的概念,让学生真正体会到语句只是表达工具,问题求解能力的培养才是重点。
4C语言和JAVA比较教学要点
在C语言和JAVA的教学过程中,要有效地实施以问题求解能力培养为目标的比较教学,建议把握以下要点。
4.1以问题求解为中心
程序设计类课程的主要目标就是培养学生应用计算机(体现为编写程序)解决问题的能力。问题求解能力是在不断解决问题的过程中逐步得到提高和强化的,这就需要有一个平台能够支撑学生完成足够的练习。
在实践过程中,我们采用的是HUST Online Judge。这是由华中科技大学毕业生王良晶等开发并在2008年底以GPL协议进行开源的在线评测系统,该系统基于LAMP平台,提供了使用Ubuntu的LiveCD系统,用户无需安装即可使用其完整功能,并可以图形化方式完成系统安装,降低了使用门槛。基于此系统,我们创建了C/C++/JAVA程序自动评测系统,网址为http:///JudgeOnline。
我们精选了能够充分体现计算思维特点的大量题目放置在评测系统中,围绕这些问题展开教学,语言语法围绕问题逐步引入,强调语句只是表达工具,重点放在思路、算法、编程构思和程序实现上,让学生在做中学、学中做,通过实践感受和领悟计算机问题求解的基本方法和思维模式。
4.2以C语言为主,兼顾JAVA语言
对于同一个问题求解,既可以使用C语言也可以使用JAVA来解决。在教学过程中,还是需要有个主次,建议采用以C语言为主,兼顾JAVA语言。这样做主要有以下原因:①同样的程序,往往C语言的代码要简洁一些,更适合初学者上手;②C语言的开发工具(我们采用的是C-Free)更为小巧易用、界面简洁,适合初学者使用;而JAVA的常用开发工具Eclipse和Netbeans都较为庞大,尽管功能全面但在编写小规模程序方面并没有太多优势;③在结构化程序设计的资源上,无论是教材还是互联网资源,C语言要远远多于JAVA。
在学生能够较好地掌握C语言的前提下,鼓励学生将已有的C语言程序改写成JAVA语言来完成同样的任务,能更好地让学生体会到这两种语言的异同。
4.3精选语言语法和规则
结构化程序设计的教学要以程序设计为主线,结合实际案例来展开,将程序开发过程的相关内容贯穿和渗透到每个知识点的讲授中去,训练学生分析问题和解决问题的能力,让学生更多地上机编程,鼓励和引导探索式学习。
在以问题求解为中心的授课过程中,讲授的语法和规则要尽可能简单,不求面面俱到,够用就行, 细枝末节的东西可以不讲,要学生“抱西瓜”而不是“拣芝麻”。例如,在课程前期,int、double和char这3种基本数据类型就完全够用,不必将所有数据类型及其细节都呈现给学生,这样会使不少初学者无所适从。
4.4结构化程序划分
结构化程序设计采用了“单入口单出口”的模式:数据输入数据处理数据输出,根据该模式编写的程序也有利于提交到在线评测系统进行自动化检测。该类程序可以划分成4个部分:声明、输入、运算和输出。除了在数据的输入处理上存在差异外,在声明、运算和输出上,C语言和JAVA语言的差异非常小。
对于简单的数据输入,两种语言的输入处理都有固定的模式,在教学中提供了关键笔记,让学生在模板的基础上进行改动,这样就让两种语言在输入处理方面的差异实现了最小化。
对于数据的输出,JAVA语言教材中更多采用的是 System.out.println,使用这种表达方式会导致C语言和JAVA语言的输出部分代码存在较大的差异。建议在教学中采用C语言风格的printf,不但实现了在两种语言下代码的一致性,而且代码的可读性更好,更容易实现浮点数指定格式的输出。
求异比较可以更好地了解C语言和JAVA语言的差异。例如对于双精度浮点数输出采用 printf(“%.3f”, x) 而不是 printf(“%.3lf”, x),尽管C语言中两种方式都是正确的,但后者在JAVA语言环境下会产生异常。
C语言和JAVA语言非本质的差异可以通过一定的方法来弱化,从而突出共同点。例如从形式上看,C语言和JAVA语言的程序入口main函数差异较大,可以将程序框架设计成模板,让学生直接拿过来使用,学生只需填写程序的核心部分,这样更能突出C和JAVA的共同点。
5应用关键笔记(Key Note)提升学习效率
为配合在线评测系统在教学中的使用,提高学生解决问题的效率,克服学生的畏难情绪,突出教学重点,我们精心设计了关键笔记(Key Note)。从形式上看,关键笔记仅是一张正反面打印的A4纸,内容精简,在使用过程中可以根据学生的反馈进行快速调整后再次分发。
关键笔记的内容凝聚了C语言和JAVA(面向过程部分)的所有核心知识点、最常用代码和典型算法(如计数、统计、排序、数字分离、进制转换等)及在线评测系统的注意事项,次要内容只提供线索,在需要的时候,学生可以依据线索在互联网上查找,这也有助于培养学生的网络学习能力。
学生可以借助关键笔记,分别运用C语言和JAVA语言来完成在线评测系统中的所有练习。这种方式突出了语言知识的重点,强调了运用知识的能力,有助于培养学生的计算思维能力。教材在教学过程中更多地是起到参考书的作用,帮助学生完善对于语言的认识。
Scanner cin = new Scanner(System.in); // cin means console input
说明:C语言中的gets函数具有安全隐患,可以在课程后期提醒学生谨慎使用。
6对比教学法的教学效果
从2010年开始的3年时间里,程序设计课程的教学逐步从以语言知识为主线转向了以程序设计为主线,并在C语言和JAVA语言程序设计课程中采用了比较教学法。在采用新的教学方法后,学生的学习目标清晰,学习兴趣增强,学期期末的课程评价显示,学生对于程序设计课程的评价从原来的较为靠后的排名转变为跃居前列。
学生参加程序设计竞赛的人数和成绩也稳步提升。以蓝桥杯全国软件设计与开发大赛个人赛为例,参加人数从2011年的13人、2012年的32人提高到2013年的38人;参赛成绩也有很大的提升,近3年获得江苏省一等奖的人数分别为0、4、10人,2013年获得省一等奖的10人中有3人来自C/C++组,有7人来自JAVA组,JAVA组的成绩在全省高职院校中排名第一,这个成绩说明了在采用比较教学法后,JAVA程序设计的教学质量获得了显著提高。
7结语
在C语言和JAVA语言程序设计课程中以程序设计为主线展开教学,采用了比较教学法,并给学生提供了包含核心知识点、最常用代码的关键笔记用于在线评测系统中的问题求解,突出了课程的重点,培养了学生的计算思维,激发了学生的兴趣,提升了学生对于课程的满意度。实践表明,比较教学法的运用显著提升了程序设计课程尤其是JAVA的教学质量。
参考文献参考文献:
[1]JEANNETTE M putational Thinking[J].Communications of ACM,2006,49(3):33-35.