高级语言程序设计篇1
摘要:本文通过对高校高级程序设计语言课程设置的调查,在分析高级程序设计语言在教学中不足的基础上,对高级语言课程进行了课程改革和整合,提出了将面向对象程序设计作为程序设计课程的入门语言。
关键词:高级语言程序设计;面向对象;面向过程;课程整合
中***分类号:G642
文献标识码:B
1高级程序设计课程的现状
程序设计课程作为大学计算机专业的核心课程,以培养掌握正确的程序设计方法与思想为目的。通过对该课程的学习,学生不仅要掌握高级语言程序设计的知识,更重要的是要掌握在实践中应用程序设计的思想和方法,进而养成***思考的习惯和利用计算机解决实际问题的能力,并为后续的计算机课程,如数据结构、操作系统、软件工程等打下良好的基础。该课程内容变化多、更新速度快,历经Basic、FORTRAN、Pascal、C等语言,最终形成以C++和Java为代表的面向对象的语言,成为程序设计的主流语言。因此,程序设计语言课程的教学、学生掌握程序设计语言的程度将直接影响到计算机在其专业领域中的应用。通过调查研究,目前国内大部分高校程序设计语言课程设置情况如表1所示。
大部分高校认为C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。Java语言是一种纯面向对象程序设计语言,为了适应企业实际工作的需要,很多高校将Java作为选修课开设。
2高级语言程序设计教学中的问题
2.1从学生角度分析
从表1中我们可以看出,每门程序设计课程都包含了数据类型、运算符与表达式、语句,其内容是基本相同的,而老师在讲授这几门课程的时候都要将这些内容进行重复讲授,这样不仅浪费了教学时间,也无法使学生在有限的学时内领会该语言的精髓,对程序设计语言的掌握只是蜻蜓点水,没有一门精通。这样就会使学生产生厌学情绪。由此可见,目前高校对于程序设计课程的设置不利于学生个性的发展,也很难培养出知识面广、动手能力强、综合素质高的专业学生。
2.2从认知心理学角度分析
建构主义认为,教学不能无视学习者的已有知识经验,简单强硬地从外部对学习者实施知识的“填灌”,而是应当把学习者原有的知识经验作为新知识的生长点,引导学习者从原有的知识经验中,生长新的知识经验。学习者已有的知识经验是学习的充分条件,一些习惯了用结构化方法设计程序、再学习面向对象的学生反映他们设计出来的程序总是不像“面向对象的”,尽管他们也设法使用了类来组织程序。其原因是已有的经验先入为主,以后在接受新的思想就比较难了,也就是说过去获得的知识对新知识的学习起阻碍作用,使新知识的学习发生困难,即负迁移。所以从结构化方法到面向对象方法的转变并不像从Basic到Pascal语言、或从Pascal到C语言的转变那样容易。
2.3从应用角度分析
面向过程程序设计是通过不断在程序的控制结构中增加细节来开发程序,可重用性较差,主要是为大型的工程计算或者为了完成某个任务而求出结果。而面向对象编程技术降低了软件开发的复杂度,能够开发出具有高可靠性的、可重用和易维护的软件,提高软件开发的效率,它对信息科学、软件工程、人工智能、认知科学及系统工程等学科都将产生深远的影响。
3 课程整合的设想
3.1减少重复的课程内容
为了让学生更好地学习高级语言程序设计课程,各种语言中重复、类似的知识点只需在入门语言中作详细的讲解,在以后的课程中可以略讲或者以复习的形式进行,例如在每门程序设计课程中都有控制语句,这些语句的讲解可以利用讲解程序的形式进行复习,这样学生会有更多的时间接受新的知识,激发学生的学习兴趣及创新精神。
3.2注重课程内容的实用性
目前,国内高校传统课程较多,体现新知识、新内容的课程较少。国外高校非常重视知识更新,随时将新的知识内容融入教学之中。我国在这方面明显滞后,传统的课程内容要继承,最主要的是发扬创新。国外高校的课程设置时刻考虑到社会的需求, 进行社会调查科学预测,确定所开课程。如美国一些高校开设的视像与多媒体、影像处理就是根据美国好莱坞影视公司对人才的需要而开设的。因而,国内高校在高级语言程序设计的课程设置上应注重课程的实用性和先进性,所开的课程应充分的考虑到社会的实际需要。
3.3面向对象程序设计作为入门语言
建构主义认为,在学习过程中,我们很希望把学习某一知识与技能的效果,能够顺利地运用到和这一种知识与技能相类似的其他新知识与技能的领域中,从而产生连贯性的长期效果。先讲授面向对象的程序设计思想,后讲授面向过程的方法与技巧,就好像是先见森林,后见树木。让学生先学会将人类的自然思维方式用于程序设计,建立系统与全局的观念。然后,在实践环节和后续课程中,不断学习各种算法,训练编程技巧。因而有必要从一开始就让学生采用面向对象思维方式去解决实际问题,并让学生以面向对象的程序设计语言作为基本工具开展后续课程的学习。
3.4合理设置程序设计课程
程序设计课程是计算机专业学生必须掌握的知识和技能,能否较好地使用程序设计课程是将直接影响后续课程的学习和毕业后的实际工作能力,这样就需要对程序设计课程进行合理的设置,经过分析研究,合理的课程设置如***1所示。
C++和Java都是面向对象语言,C++是一种大型语言,其功能、概念和语法规定都比较复杂,要深入掌握需要花较多的时间,尤其是要有较丰富的实践经验。Java则是完全的面向对象语言,它句法更清晰,规模更小,更易学,从根本上解决了C++的固有缺陷。所以应将Java作为入门语言。
C++是C语言的超集,用C++编成的主要是软件专业人员,学校里计算机专业的程序设计课程任务是进行程序设计的基本训练,因此,对于当前的大多数学生来说,应先掌握好C语言程序设计,有了C语言的基础再学习C++就不会太难。
4结束语
程序设计语言课程的教学目的不能只停留在教什么语言,学生会什么语言的层次上,所以对于培养计算机专业人才的程序设计课程,必须进行科学的课程设置,以适应新世纪人才培养的需要。这样,计算机科学与技术专业的学生才能在程序设计语言种类繁多、新语言不断涌现的情况下,使自己立于不败之地。
参考文献
[1] 叶乃文,喻国宝. 面向对象程序设计[M]. 北京:清华大学出版社,2004.
[2] 殷兆麟. Java语言程序设计[M]. 北京:高等教育出版社,2003.
[3] 李文***,李师贤,周小聪. C++作为计算机专业入门语言的实践与探讨[J]. 计算机科学,1999,(4).
[4] 孟威. 关于选择程序设计语言的一点想法[J]. 计算机教育,2006,(7).
[5] 陈卫东,高攀. 计算机高级语言教学的若干问题思考[J]. 福建电脑,2007,(8).
[6] 李秉章,徐亚平,罗烨,黄海***. 以提高能力为目标进行计算机专业课程教学[J]. 计算机教育,2006,(12).
高级语言程序设计篇2
(一)传统教学模式、教学方法与程序设计
的学科特点不相适应多媒体课件以其生动性和方便性在高校计算机教学过程中被广泛应用。然而程序设计是逻辑性和实践性很强的一门课程,仅仅依靠投影大屏幕和多媒体课件的教学思路无法适应程序设计灵活多变的学科特点,不能对学生创造性思维和自学能力的培养起到积极的作用。还有一些教师过分依赖电子课件,教师变“照本宣科”为“照课件宣科”,容易挫伤学生的学习积极性。另外由于播放电子课件信息量大、速度快,学生没有得到思考的空间,学习效果并不理想,而且学生无法做到边听课边做笔记,印象较浅,容易遗忘。
(二)学生的动手实践能力较弱
很多高校在教学过程中更多地注重程序设计语言理论知识的学习而忽视了工程技能的培养。这样就会导致教师和学生偏重于编程语言语法的教学而对计算思维的培养和工程实践重视不够,导致重语法轻算法,实际工程开发能力薄弱。这就要求教师需要布置大量既包含基本知识点又有一定创新性和拓展性的上机实验,才能帮助学生实现从知识到技能的转换,巩固所学的理论知识。
二、程序设计教学方法改革的意义
不断探讨研究和推广新的教学方式,将更有效的新教学方式应用于计算机教学,是不断提高教学水平的好方法。程序设计课程的特点是理论与实践相辅相成,理论是基础,实践是手段,应用是目的。很多学生上课能听懂,但是自己动手编程时感到无所适从。传统的“在学中用”的教学方法,其重点往往局限于讲解基本概念、语句格式、语法等内容,学生往往会考试但解决实际问题的能力较差。若采用“在做中学”的教学方法,以一个应用实例为前导,例如讲授讲解程序设计时以找最大(小)值、素数、排序、求阶乘、求一元二次方程的根等案例形式导入知识点,这样学生就比较容易接受和掌握所学的知识和内容,实践技能也在做中得到了锻炼和培养。教学方法是在教学过程中教师和学生为了实现共同的教学目标,完成共同的教学任务,运用的行为方式与手段的总称。教学方法既是一门科学又是一门艺术,良好的教学教学方法对于学习兴趣的激发和学习效果有着明显的作用,尤其是程序设计教学方法对于培养工程实践能力和计算思维起着重要的作用。具体体现在:一是教师的教法不仅关系到教学效果,同时也影响着学生的学习方法,采用什么样的教学方法对于培养学生的思维模式和知识结构也具有重要的影响。二是程序设计教学法的研究与探索能够促进本学科教师的教学水平与教学能力,提高教学质量。三是程序设计教学方法的改进能够引发学生的学习兴趣和学习成就感,促进多种教学资源的合理使用,取得最佳教学效果。
三、程序设计常用教学方法
程序设计课程包括讲授法、翻转教学法、案例教学法、任务驱动教学法、演示教学法、情景模拟教学、基于问题的教学法、游戏教学法等。下面主要介绍3种常用程序设计教学方法。
(一)案例教学法
案例教学是根据教学目的和教学内容的要求,通过引入并分析各种案例来开展教学活动的教学方法。案例教学法教学过程是:案例设计—案例分析与讨论—案例实现—归纳总结知识点。案例教学法与传统的举例说明有着本质区别。传统的举例说明一般是用来验证教师讲授理论知识的正确性,举例是为理论服务的。而案例教学法最突出的特点是讲课开始于实例,从实例中提出问题,通过分析问题、发现规律、提炼理论,再从理论回到实践,应用理论去指导实践。在程序设计中首先引入案例,例如在选择结构这一章,设计一个猜数游戏,产生一个随机数,输入一个整数,与之比较,提示是大了、小了还是猜中了,这个案例涉及三个分支处理;基于同一个猜数案例,加深难度,引入循环,产生一个随机数,循环输入一个整数与之比较,提示大了、小了还是猜中了,直到猜中为止,涉及的if多分支语句、while循环语句、随机数函数rand在案例中也一并掌握了。另外,一般计算机理论课程教学采用的方式是先理论,后实际;先抽象,后具体;先一般,后个别。其实,对程序设计课程可以适当采用这样的方式:从实际到理论,从具体到抽象,从个别到一般,从零碎到系统。这样的教学方式更加符合人们对客观事物的认知发展规律。
(二)任务驱动教学法
任务驱动法适合实施探究式教学,与简单的案例教学不同,它是采用项目化教学方式,即教师不是围绕知识点去设计每个单独的案例,而是针对课程教学内容设计一个项目,这个项目由若干模块组成,并能够覆盖课程的不同理论知识。任务驱动教学法有助于培养学生分析、解决问题的能力以及动手能力。任务驱动法的教学过程主要有(1)创设情景、提出任务;(2)分析任务、发现问题;(3)明确思路、把握重点;(4)自主探究、解决任务;(5)检查结果、总结经验。任务驱动教学法对教师的业务水平提出了更高要求,教师不仅要转变教学观念,而且对课程需要有很深的理解[8],不能单纯按学科体系安排教学内容,而是根据解决问题的思路,跳跃式地结合多种知识。软件开发是多种技术的综合体现,仅仅通过案例教学局部讲清楚每个知识点,学生的综合应用能力仍然不强。此时,教师通过创设、分析与解决任务必然能激发学习兴趣,取得满意的教学效果。在C语言程序设计课程中以计算学生成绩平均分为例,首先用一维数组和循环结构计算全班50人某一门课程的平均分,继续增加问题的复杂度,计算50个学生8门课程的平均分,这时需要采用50行8列的二维数组,再引出新问题和新任务,编写函数计算出每个学生的平均分,并把每位学生的平均分带回主函数输出,此时就要采用数组名或指针变量作函数参数,传递整个实参数组给函数进行处理,并引出函数如何带回多个返回值的问题。任务驱动法循序渐进、由浅入深地引入新知识点,在解决问题的过程中旧知识在此过程中也得到了巩固。
(三)演示教学法
演示教学法就是借助投影仪或网络教学管理软件等,直观地通过教师的示范性操作进行学习。这种教学方法是学习计算机软件使用方法和操作步骤的一种重要且而行之有效的教学方法,在程序设计教学中同样非常有用。教学中光是依靠PPT课件来分析和讲解程序和算法是远远不够的,而是要当堂编程并演示程序运行结果,让学生直观地看到程序运行的过程和效果。实践证明这种方法非常生动,能够有效地激发学生的学习兴趣,并且在现场编程过程中,高级语言程序设计的知识点、语法、算法也在这一过程中一并得到掌握,另外通过编译,分析和查找语法错误和逻辑错误,可以提高学生的分析能力,实现计算思维的培养。以C语言指针变量作函数参数为例,演示教学法可以分4步实施:(1)分析指针变量作函数参数的4种一般形式。(2)设计一个案例,例如编制一个函数fun,实现将一个数组的数组元素逆序交换,在主函数中输入数组元素,调用函数,最后在主函数中输出逆序交换后的数组元素。(3)现场编程分别演示实参、形参同为数组名;实参为数组名,形参为指针变量;实参为指针变量,形参为数组名;实参形式同为指针变量这4种情况。(4)归纳总结知识点,让学生举一反三编程实现其他功能的函数。
四、新型程序设计教学方法简介
从全球来看,***教育已呈席卷之势。***课程模式无疑将引发“学习的***”,给高等教育人才培养和教学方式带来深刻变化。
(一)慕课教学法
“慕课”这一大规模***课程始于2011年,有勇敢之城(Udacity)、课程时代(Coursera)与教育***(edX)三大供应商。2013年7月上海交通大学加盟MOOCs三大平台之一的课程时代Coursera,成为加入Coursera的第一所中国内地高校,和耶鲁、MIT、斯坦福等世界一流大学共建、共享全球最大***课程网络。“慕课”(MOOCs),顾名思义,“M”代表Massive(大规模),与传统课程只有几十个或几百个学生不同,一门MOOCs课程多达上万人;第二个字母“O”代表Open(开放),以兴趣导向,凡是想学习的,都可以进来学,不分国籍,只需一个邮箱,就可注册参与;第三个字母“O”代表Online(***),学习在网上完成,不受时空限制,第四个字母“C”代表Course,即课程的意思[7]。MOOC以连通主义理论和网络化学习的开放教育学为基础。课程的范围不仅覆盖了广泛的科技学科,例如数学、统计、计算机科学、自然科学和工程学,也包括了社会科学和人文学科。在“慕课”的世界里,视频课程被切割成10min甚至更小的“微课程”,由许多个小问题穿插其中连贯而成,就像游戏里的通关设置,只有答对才能继续听课。利用“慕课”的平台,可以获取全球的优质课程,实现更大范围的资源共享。除了传统课堂上人们所惯常使用的录像资料、阅读材料和练习题外,“慕课”还会为网友提供互动的论坛,在师生之间搭建一个交流的平台。“慕课”不同于网络公开课,互动性更强,“慕课”的出现,为教学设计提供了一种改革的可能———教师可以将***视频作为教学的线上环节,要求学生在课堂外先“听课”,课堂内侧重深入的分享、探讨和问题解决,真正实现“翻转课堂”。这一模式将促进教师对教学的反思,以及对教学模式的探索、研究,有助于推动教师角色转变,从一个讲授者、讲解者真正变为学习的激励者、启发者,学习也将变得更加有效。“慕课”课程所带来的是挑战、思考和实践,而不仅是课程的变化。在程序设计课程中将来也可以引入“慕课”模式,利用现代网络技术,开发针对不同知识点的程序设计教学视频,提供***测试题、上机练习题,程序阅读题、***提交与批改实验报告等,通过论坛实现师生之间、学生之间的与交流与互动,通过全方位的教学方式改变教学方法,共同提高教学质量。
(二)翻转教学法
利用视频来实施教学在多年以前人们就进行过探索,当今网络技术发达,计算机教学也可以通过网络向外扩展,如开展网络教学和将教学视频上传网络等,供学生在校外学习。如2006年创立的可汗学院、2009年创立的点对点大学、2010年创立的人人学院等。他们都是与慕课相类似的组织。美国的耶鲁等大学已经开始进行这样的尝试,并且已经获得很好的效果。所谓翻转课堂,就是教师创建视频,学生在家中或课外观看视频中教师的讲解,回到课堂上师生面对面交流和完成作业的这样一种教学形态。“翻转课堂”特点有:第一,教学视频短小精悍,通过网络的视频,具有暂停、回放等多种功能,可以自我控制,有利于学生的自主学习。第二,教学信息清晰明确,把内容集中在屏幕上,配合讲解的画外音。每一个视频都针对一个特定的问题,有较强的针对性,查找起来也比较方便;视频的长度控制在在学生注意力能比较集中的时间范围内,符合学生身心发展特征。第三,重新建构学习流程。老师提供了视频,在课前对学生进行“信息传递”,在课堂上通过互动来完成“吸收内化”,教师在课堂上给予有效的辅导,教师更多的责任是去理解学生的问题和引导学生去运用知识,同学之间的相互交流更有助于促进学生知识的吸收内化过程。第四,复习检测方便快捷,学生观看了教学视频之后,是否理解了学习的内容,视频后面紧跟着的四到五个小问题,可以帮助学生及时进行检测,并对自己的学习情况作出判断。由于程序设计知识点繁杂,概念抽象,视频教学和翻转教学也特别适合程序设计的教学。有效实施翻转教学法的前提是根据教学内容和教学大纲,划分出各个章节的知识点,如if语句、switch语句、for循环语句、while循环语句、数组、函数、指针等,将每个知识及其典型案例用屏幕录像软件录制成10min左右的微视频,上课前提前给学生在课外观看,上课时通过师生互动辅导学生完成上机编程作业,解答学生在编程中遇到的问题。先看录像后讲课,这是“翻转课堂”的教学视频与传统的教学录像最大的不同之处。一个最显著的变化将是,翻转课堂,从以教师为中心真正转变为以学生为中心,这实际上是一种传统与现代的结合体,但其效果远好于传统教学。
五、程序设计教学方法的合理选择与思考
课堂教学中并非***地应用一种教学方法,而是在不同的教学阶段,根据教学内容,教学对象的不同,选用适合的教学方法进行教学,让学生在“做中学”,使每一位学生收到最好的学习效果。采用讲授法讲解时,还要布置一些课堂或课后练习,避免光听不练,理论与实践脱节。例如介绍完递归函数的思想后,再布置编程题用递归函数实现将十进制整数转换成八、十六进制,这样既使用了编程技术又掌握了数制转换的方法,可谓一举两得。三种基本的程序结构、数组、函数等概念通常是通过案例教学法来讲解,在采用“案例教学”法教学时还要注重知识的脉络,讲清楚知识的结构和教学主线。期末应当布置课程大作业,例如编写学生信息管理系统,让学生将各章的知识融合在一起,体现链表、结构体、文件等章节知识的综合应用。指针是C语言的重点和难点。数组、指针、函数三者又是密切联系的。多种“分散跳跃式”的知识特别适合采用“任务驱动法”,设计一个任务,在解决任务的过程中综合运用数组、指针、函数等,使学生抓住用指针作函数参数,传递数组元素这一教学主线,就可以突破指针这一教学难点。慕课、微课程、翻转课程等***课程模式,以及线上、线下结合的课程模式无疑将引发“学习的***”,给高等教育人才培养和教学方式带来深刻变化。程序设计课程如何运用这一模式,改变教学方法,提高教学质量,需要更多的思考和实践。以“慕课”冲击为契机,加快大学教学、管理的根本变革,实现两者的融合才是更好的姿态。计算机技术更新极快,学生的自学能力才是最重要的能力,在程序设计的教学中不能只满足于教会学生编程技能,还要注重创新能力的培养,创新能力本质是提高学生创造性地分析、解决问题的能力。因此教师还要教给学生归纳总结、触类旁通的学习方法。例如,编程语言都有顺序、选择、循环三种基本程序结构,都有数据类型、运算符与表达式、数组、函数等概念;教会学生归纳和总结,在多门编程课程中触类旁通,将会使学生在将来的工作中立于不败之地。
六、结束语
高级语言程序设计篇3
(黄淮学院 信息工程学院,河南 驻马店 463000)
摘 要:以应用为导向并结合就业需求确定新的课程教学内容,引入翻转课堂教学方法,结合新教学模式提出针对性的网络课程资源,阐述简单有效的教学考核方法。
关键词 :应用型;高级语言程序设计;课程转型;翻转课堂
基金项目:河南省社科联、省经团联调研课题(SKL-2014-2423);黄淮学院高等教育教学改革研究资助项目(2014XJGLX0101、2014XJGLX0402)。
第一作者简介:刘会超,男,讲师,研究方向为智能计算,huichao_liu@126。
1 背 景
在向应用型技术大学转型发展过程中,黄淮学院不断探索、积极实践,办学定位逐渐明确,教学改革方向也越来越清晰[1]。在应用型技术大学办学定位的引导下,信息工程学院的高级语言程序设计课程开始了新的转型发展历程。课程建设并不是一帆风顺的,一开始便面临众多难题[2],主要有:①没有教学团队,无法为课程建设提供持续支持;②教学思想陈旧,教师“教”和学生“学”不协调,教学效果较差;③教学内容“形而上”,重在系统理论知识的讲授,忽略知识的实用性以及学生掌握运用知识的基本规律;④课程教学资源缺乏,现有资源形式呆板、内容不完善,无法满足新的教学要求;⑤教学方法、手段单一,教师的课堂讲授、学生的上机练习等教学环节程式化,不注重实效;⑥课程考核的引导功能存在偏离,平时成绩加期末考试的考核方式过于强调对知识的掌握,无法衡量学生的知识运用和能力培养情况。
针对以上种种问题,高级语言程序设计课程组从源头抓起,进行了一系列改革[3],包括确立应用型人才培养的导向性要求,成立专门的教学团队,修订新的教学大纲并精选教学内容,通过培训逐步引导教学思想的转变并采用多样化的教学方法,结合教学需求开发新的课程资源网站,确定灵活有效的考核方式等。通过一系列改革,高级语言程序设计课程的教学体系逐步成熟。尽管有些改革还没有完全到位,但良好的教学效果已逐步显现。
2 课程转型建设过程
2.1 教学团队的成立与运行
为了持续推进高级语言程序设计课程的改革和建设,由教研室牵头,以该课程近3年的一线主讲教师和辅导教师共同组成课程教学团队(简称团队)。团队成员涵盖老中青3个年龄段,以中青年教师为主。团队组织管理以教授、副教授为主,讲师、助教为辅,以实现教授、副教授对青年教师的“传帮带”作用[4]。同时,团队鼓励成员通过外出学习、网络***学习、企业实践、企业考察、参加会议、指导学生团队等方式提高自身业务水平与实践技能。
团队制定了相应的规章制度并协调了各自的分工。团队成员每周开一次“碰头会”,会上每位成员汇报本周的工作,并对后续工作做出相应计划。汇报结束后每位成员可以对其他成员的工作进行讨论并提出意见或建议。同时,每位成员的汇报都会记录在案,以备后用。另外,团队也会根据阶段性工作的需要,不定期对工作进行检查。
通过这种团队运作方式,青年教师的教学技能和教学水平在其他教师的指导下得到大幅提高,在教学改革方面也有了新的认识和想法。
2.2 教学思想的转变
思想是行动的指南。高级语言程序设计课程的转型必先改变传统的教学观念。教学过程中教和学是辩证统一的[5]。教师是教学过程的引导者,是决定教学效果的外因;学生是教学过程的主体,是教学成效的内因。内因决定外因,外因影响内因。唯有双方有机结合才能使课程转型真正落到实处。这些原理一般教育工作者都有所了解,但真正能够贯彻实施却非易事。另一方面,学生对自己主体地位的认识也比较模糊。实践中,在大学里无法理解学习的意义、敷衍学习的学生还有很多。因此,教学思想的转变并不仅是教师的问题,还存在一个教学双方的角色认同问题。
在以往的教学改革研究中,着眼点多放在课程教学内容、教学方法上,常忽略学生这一中心环节。所以,在团队召开的课程转型会议上,我们反复强调“教师主导、学生为本”的观点,要求教学思想的转变要包括教师的“教”和学生的“学”两个层面。
从教师“教”的方面来说,教师要做好教学的导演。有时教师是演员学生是观众,但更重要的是教师要善于当观众让学生当演员。教师要从思想上把课堂交还给学生,教师在每个教学环节把相应的“剧本”交给学习小组,让他们明白任务的意义、关联和实施要求等,引导他们自主学习。教师在这个过程中不能旁观,要及时给予指导,做好检查和评价。
从学生“学”的角度来说,学生不能是学习的被动接受者,而应积极主动地学习。为了顺利完成教学任务,学生必须“演”好自身的角色。在课中要积极配合教师的课堂组织,主动思考、讨论、完成练习任务。对于教师布置的课外任务,学生要认真完成。遇到困难的地方要进行标记并在课堂上提出。另一方面,仅靠学生自身的努力实现主动学习并不十分可靠,教师还要善于管理和营造氛围。要管理整个教学过程并形成必要的“规矩”,充分利用教学评价手段;还要发挥并利用优秀学生的带头作用,通过学习小组、互助学习等方式,形成大家积极学习的氛围。
转变教学思想,教师要及时和学生沟通,告诉学生双方的任务、要求及实施方式等,征求学生的意见,争取在认识上达成一致。一般情况下学生对教师的改革举措都能理解和支持。
2.3 教学内容的取舍
团队依据学生现有的知识基础,考虑语言的通用性并结合行业开发及就业需求,决定选择C语言作为课程主讲语言。C语言内容非常复杂,数据类型繁多,并且与计算机硬件结合较为紧密。因此,团队对教学内容进行了大刀阔斧的取舍与重组,抛弃了传统教学模式下一个个知识点的分散讲解,将教学内容重组整合为入门基础、知识提升和综合运用3个模块。入门基础包括认识C语言、安装并熟悉集成开发环境、选择结构、循环结构4部分内容;知识提升部分包括函数、数组、指针、结构体4部分内容;综合运用包括文件、经典算法和实际系统的设计与实现3部分。每个模块内部知识点相互衔接,环环相套;后续模块是对前导模块的深入应用与提升。在组织教学内容时,对关键知识点的讲解分为PPT制作和视频录制两部分。在介绍知识点时选取与生活贴切的实例,如介绍选择结构时以阶梯电价的计算为例,练习和作业以C语言的经典实例、生活实例、ACM大赛实例等为内容,以满足不同程度项目小组的学习需要。
在教学内容实施过程中,将教学内容分为三大块:课前自主学习、课中练习和课后作业。课前自主学习内容包括理论知识和课前练习题两部分,在理论知识中要讲明本次知识与前一知识之间的关联、本知识的内容、易出现的错误等;课前练习是针对基本知识点的练习,难度相对较小。课中练习内容在课堂教学时完成,包括练习的布置、完成和评价3部分。课后作业内容主要包括知识总结和习题两部分,知识总结要求学生根据个人感受写出对本次课的总结,习题要求项目小组上机运行以备下次课检查、讨论。
2.4 课程资源的开发与使用
由于课前需要学生自主学习一些内容,因此学生需要查阅相关的资料。虽然当前使用互联网比较便利,但要在网络上找到与教师布置内容相适应的学习资料仍比较费时间,因此,需要团队成员有针对性地开发一些课程资源。同时,要把教学资源建设与深化教学改革,推进专业建设、课程建设以及建立教学工作长效机制等方面的创新探索有机结合。把资源的建设重点由单一媒体资源转向多维教学资源建设上来,以基本资源、拓展资源建设为重要“抓手”,认真实施精品课程建设,以拉动课程品质及课程建设能力的总体提升。
课程资源开发的内容主要有基本资源建设和拓展资源建设两部分。基本资源建设包括课程概况和教学核心资源两方面,课程概况包括教学大纲、教学计划、教学团队的组建与分工等;教学核心资源依据三大模块的划分从必读文献、教学案例、教学课件、教学视频、练习、作业等方面着手进行建设,其中必读文献、教学课件和教学视频主要用于课前;教学案例和练习主要用于课中;作业主要是课后使用。拓展资源包括职业标准、专题讲座、单元模块自测、案例库、实训项目等。团队成员经过一年多的收集、整理和制作,基本完成了课程资源的开发建设,实现了课程资源上网以满足学生随时随地访问课程资源的需求。***1展示了课程资源网站上某课程信息。
2.5 教学方法的转变
传统的高级语言程序设计课程一般将理论课安排在多媒体教室中,教师采用讲授法并结合一些实例讲解,学生被动地坐着听。这种课堂学生玩手机现象非常普遍,学生戏称这是“浪费流量”的课堂。
针对这些情况,高级语言程序设计课程的教学决定采用翻转课堂这一新的教学方法[5],将高级语言程序设计的教学“搬”到具有相应配套设备的翻转课堂教室中进行。该教室的教学设备除具有传统教室的多媒体设施外,还有可移动的桌和凳,至少3人一组的台式电脑等。学生第一次课时分成3人一组的项目小组,每个小组推选一名组长,2名成员。教师以项目小组为单位进行管理,小组的学习由组长和组员协商完成。一个教学班按60人算,有20个小组,教师有精力照顾到每一个小组。
翻转课堂的教学分课前、课中、课后3个阶段。课前主要是阅读必读文献、观看视频、完成教学课件中的习题等。课前任务是学生自主学习的重要阶段,因此,学生必须认真对待,教师也要对课前任务的完成情况给予检查。课中主要对练习题的完成情况进行检查和评价、组织问题讨论等。对于一些难点问题可花少量时间进行讲解,也可对个别学生进行针对性的指导。课后主要是作业,由学生课后完成以供下次课检查并讨论。
通过这种新型教学方法的使用,学生不但有效掌握了课程的内容,同时也学会了自主学习,这对学生的终生学习非常有意义。
2.6 考核方式的改革
传统的考核方式一般是平时成绩占30%、期末考试占70%。平时成绩主要来源于学生的出勤和作业上交情况,无法真正反映学生平时的学习情况[6],所以最终的课程评价仍落在了期末试卷上,这显然有失公平且不科学。高级语言程序设计课程团队通过走访学生、查阅相关资料并结合课程采用的翻转教学法,确定了具有课程特色的考核方式。
课程考核仍采用百分制的评分办法,但考核的内容包括课中练习、课后作业和期末考试3部分,各自占比为4∶2∶4。课中练习成绩、课后作业成绩一般是按完成作业的数量进行计分。教师在课堂中只对每个小组的完成情况进行统计,并不针对每个学生。小组要完成相应题目必须大家通力合作。否则,不管小组中哪位同学缺席,最终都将导致小组完成数量不多。课程结束时,教师对每小组本学期课中练习完成的总量和课后作业完成的总量进行统计,并计算出小组的最终成绩。小组成绩按每个组员的最高成绩,组长为组员评判具体成绩。如果有组员不满意自己的成绩,可以参加现场测试,完成测试的成员其个人成绩等于小组成绩。期末考试只有一张试卷,考查理论知识的掌握和运用情况。试题的内容基本类似于平常上机内容,结合生活实际出题。
在本课程的考核方案中,对成绩的计算简单方便,可以对那些“平时不用功,考前十分钟”的突击现象进行有效的预防。新方案不再对学生的出勤情况进行考核,因为在每次课中练习完成数量的统计中已经涵盖了相关信息。学生以竞争的心态参与学习,积极性自然较高。
3 结 语
在高级语言程序设计课程的转型发展过程中,教师和学生都有不同程度的提升。教师为了适应课程的转型,必须学习新的教学方法、了解行业对本课程的需求、熟悉本课程对后续学生发展的影响、熟练掌握本课程的知识结构。然后将翻转课堂教学方法和具体的企业需求相结合,采用较为生动有趣的案例实施,达到预期的教学效果。最后,通过学生学习效果的反馈,教师要总结经验教训,为进一步有效开展教学奠定基础。
对于学生来说,通过本课程改革转型,不仅掌握了知识,并且对知识的运用能力进一步提高。应用技能显著提升,职业素质逐步养成。在2013年河南省第六届ACM大赛中有两个团队获得银奖、三个团队获得铜奖。在2014年第五届“蓝桥杯”全国软件专业人才设计与创业大赛中,有两名同学进入全国总决赛并获得三等奖。同时,学生毕业后薪资待遇普遍有大幅提高,从事本专业的学生人数逐年增加。此外,学生学会了自主学习的方法,终生受益。
参考文献:
[1] 郭静, 邢玉升. 美、德应用型大学教育模式及对我国的启示[J]. 黑龙江教育学院学报, 2014(10): 51-53.
[2] 刘丽梅, 张英良. 建设应用型课程实现新建本科院校转型[J]. 河北大学学报: 哲学社会科学版, 2014(5): 72-76.
[3] 耿红琴, 刘海峰, 黄国兴. 黄淮学院软件工程专业建设纪实[J]. 计算机教育, 2013(21): 2-4.
[4] 邓小妮. 高职院校专业“双带头型”教学团队基本范畴辨析[J]. 职业技术教育, 2014(10): 55-58.
[5] 董纯才. 正确处理教和学的关系问题[J]. 华东师范大学学报: 自然科学版,1983(2): 3-4.
[6] 张金磊, 王颖, 张宝辉. 翻转课堂教学模式研究[J]. 远程教育杂志, 2012(4): 46-51.
高级语言程序设计篇4
关键词:高级语言;职业素质;教学设计
中***分类号:G642 文献标识码:A
“高级语言程序设计”是计算机软件相关专业中很重要的职业技能课,是一门理论性、实践性和实用性都很强的课程。通过教学,不仅要让学生掌握软件开发的有关理论,更重要的是培养学生的实战技能和职业素质,使学生一毕业就能够在软件公司找到合适的岗位并能够胜任。这在以培养应用型人才为目标的高职院校更为明显。笔者多年从事“高级语言程序设计”课程的教学及软件开发,对如何在日常教学中培养学生的职业素质有些粗浅的认识,下面以VB语言为例,从教学方法、课堂教学设计方面进行深入讨论。
1程序员应具有的职业素质
(1) 与人协作能力
这是程序员应该具备的最基本的,也是最重要的安身立命之本。软件项目开发往往不可能是由一个人完成的,而是由一个团队共同完成的,这就需要每个人既要会编写程序,还应该有全局意识,自己的工作要考虑与大局相一致,没有协作精神是不可想象的。
(2) 独自解决困难的能力
任何一本教科书都不可能囊括程序设计语言的所有内容,在一个具体的软件任务中肯定会遇到特定的困难,因此程序员必须具有自己解决困难的能力。一般情况下,可以通过查看微软msdn及csdn手册、网络搜索、到一些有影响力的站点同其他程序员交流来解决困难,如编程中国、编程爱好者等网站。
(3) 良好的代码编写习惯
这些习惯包括变量声明使用、变量命名简明扼要、代码标注、捕获代码异常、注重代码复用、加强测试环节等。如果在软件开发中忽略这些好的习惯,那么软件中存在的漏洞会不易发现,软件也不易于维护。
(4) 善于总结与积累素材
建立自己的资料库,把一些实用的程序代码收集起来,这些代码可以是自己编写的,也可以是网上***下来的。并且每次完成一个研发任务,应当有目的地跟踪该程序的应用状况和用户反馈,找到不足,这样逐步提高才可以尽快成长起来,才可以在接受新任务时有的放矢。
2案例教学与项目化教学法相结合的教学过程
高职学生的程序设计课程采用案例教学法,这个观点多年来已达成共识[1]。近年来也有学者提出在程序设计语言教学中采用项目化教学法,把整个的教学内容组织成一个项目,以对项目的不断完善为线索组织教学。
笔者认为高职VB程序设计教学,应采取案例教学与项目化教学相结合的教学方法,实施“整体-局部-整体”的学习模式。在最初的日常教学中,采用案例教学法传授基本知识,案例教学可以增强学生学习的兴趣,而且因涉及新知识较少而不会让学生感到难以接受,符合先具体后抽象、由易到难的认知规律。学期末,采用项目化教学法,通过一个面向应用的小型项目,不仅能将知识点进行系统总结,还可以让学生体验到软件开发的步骤与氛围,培养工程的概念和把握全局的能力和素质。
2.1采取案例教学,注重习惯养成
案例教学时每堂课首先展示一个程序范例,该范例包括了当天要讲的新控件、新语句,然后讲解实现这一程序的基本思路,提出算法,以完成“任务”为主导。在案例教学过程中应注重:
(1) 采用“整体-局部”的教学思路,不论多么简单的一个案例,都应以系统设计为起点,以完成案例的过程为线索展开教学,把“程序设计方法”这一核心内容贯穿于教学的始终,使学生在学习过程中建立系统和全局的概念。
(2) 案例围绕“趣味性和实用性”,要培养学生的学习兴趣,案例的趣味性和实用性尤其重要,使趣味性贯穿于教学始终,这样学生一开始就能体会到课程的趣味性和实用性,进而激发学生的学习兴趣。
(3) 每个案例的设计要通盘考虑,用户的需求、功能的思想、界面的设计、容错的考虑、代码的复用、系统的测试等都必须考虑到,注意案例代码的规范化,同时要求编写规范代码。
(4) 要及时归纳、做好小结。归纳可以是一个控件使用的归纳,也可以是对一种结构、一个模块的归纳,可以使用文字概括,也可以使用***示总结,要求学生整理积累归纳总结的结果,并鼓励学生自己做好归纳。
(5) 有意识地培养学生的异向思维,如一个案例是否只有书上的一种解法,书上的解法是否是最优化等等。要求学生通过网络搜索、相互讨论的方式完善案例,辅助学生查阅多种资料来解决完善案例过程中遇到的困难[2]。
2.2实际项目开发,体验开发过程
在这一阶段,以小组合作讨论的形式展开教学,由学生***完成项目开发,教师的任务由传授转变为指导。这种方式不仅是对所学知识的巩固总结,也能提供一个逼真的环境让学生体验程序员的工作过程。
项目任务不能太难,也不能太易。任务最好能较多地使用学生平时积累的素材,可以是一个学籍管理软件,可以是比较简单的游戏,也可以是一个实用的工资管理系统或者学生自主命题[3]。对已确定的项目任务,首先要求学生搜索网络,查找类似的源代码进行修改完善,如果搜索不到的话再进行自主创新。教师应协助学生选好搜索关键词,以便得到更恰当的结果,并指导学生从众多结果中选择自己想要的。在完成任务的过程中,本着由易到难、由简到繁的原则,将一些难题逐步分解,循序渐进地完成。小组内的学生要进行交流、讨论、沟通共同完成项目开发,小组间可通过相互测试来寻找不足,互相学习,培养学生团结合作精神,提高与人协作沟通的能力。遇到困难和未接触过的知识点,可通过查找书本、搜索网络等方式来解决,使学习的内容更多、更深、知识面更广,提高自学和解决困难的能力。
3教学设计举例-“多重窗体制作”案例
3.1 教学目标
(1) 知识目标:掌握窗体的加载(Load)、卸载(Unload)语句,学会窗体的添加、多重窗体程序的执行与保存。
(2) 能力目标:提出问题、解决问题的探索能力,通过msdn搜索资料的学习能力。
3.2教学过程
(1) 功能需求的提出
演示三重窗体操作实例,分析功能,提出功能需求
(2) 仿制体验,逐步探索
(3) 窗体的加载、卸载、显示、隐藏
尝试窗体切换,失败,引出问题:在多重窗体程序中,如何打开、关闭、显示或隐藏指定窗体?通过示范让学生跟随教师应用Load、Unload、Cls、Move、Show、Hide语句对指定窗体打开、关闭、显示或隐藏,实现第一、第二窗体的切换,探索窗体加载、卸载、显示、隐藏的方法,使学生掌握Load、Unload、Cls、Move、Show、Hide语句的应用。
3.3 探索与实践
组织学生通过小组合作完成第三窗体的添加、打开、关闭、显示或隐藏,实现各窗体之间的调用。探索Load、Unload、Cls、Move、Show、Hide语句的用法及功能,研究Show两种模式的功能特点及Load和Hide的区别。并探索多重窗体工程的保存与启动,研究多重窗体的“窗体保存”与“工程保存”特点,研究如何改变多窗体中的启动窗体。指导学生完成多重窗体完整项目的制作。
3.4总结与交流
组织全班交流编程思路与得失,着重讨论各自的编程策略、过程和对相关语句的理解,总结多重窗体制作的步骤与方法。
结束语:21世纪的教育要着眼于社会发展的实际需求和人才市场的实际需求,在程序设计教学实践中,教师要在教学方法上不断探索,努力提高学生的学习兴趣和专业素质,真正做到学以致用,使计算机程序设计课程的教学能够适应现代信息化人才培养的需要。
参考文献
[1] 周晓宏. 程序设计课程内容体系改革模式漫议[J]. 职业教育研究,2007,(5):73-74.
[2] 王方杰. VB教学方法探索[J]. 计算机教育,2007,(14):91-92.
Training Professional Quality in VB Teaching Activity
DU Shao-jie
(Dept. of Computer Binzhou Vocational College,Shandong 256624 China)
高级语言程序设计篇5
关键词:汇编语言程序设计;高级语言程序设计;比较教学法
“汇编语言程序设计”是计算机相关专业的一门重要课程,目前国内大部分院校的相关专业都有开设。从时间上看,“汇编语言程序设计”一般开设在大学二年级,从课程的衔接上看,则一般开设在“高级语言程序设计”和“计算机组成原理”之后。
汇编语言也好,高级语言也好,它们都只不过是程序设计的工具,因此对于程序的基本功能和程序设计的基本问题,它们都有相应的实现机制,而且在很多方面都是相通的,尤其是在程序设计的基本思想方法上。但汇编语言和高级语言毕竟是两种不同的语言类别。从源程序的基本单位――语句的层面看,高级语言语句的功能远比汇编语言语句即各种指令和伪指令的功能要强大。此外即便是同样的问题,如数据安排、数据处理、流程控制、子程序结构等,它们的实现机制也不一样。
效率最高的教学方法首推比较教学法(或叫类比教学法),也就是将新的陌生的东西和旧的熟悉的东西做比较,找出它们之间相同的地方和不同的地方,然后进行差异化的学习,重在存同求异,这样就会事半功倍。
因此,笔者在多年从事“汇编语言程序设计”的教学中,特别注重以学生在学习高级语言程序设计课程时所获得的知识和体验为基础,将汇编语言和高级语言进行比较教学。
本文就是这一教学方法的经验总结。
1数据的组织安排
程序是用来加工处理数据的,因此程序设计工作离不开数据的组织安排。数据的组织安排就是指为程序加工处理的数据安排合适的空间并且组织好,以提高对数据加工处理的效率。从应用层面看,数据的组织安排通常包括3个方面:
(1)安排在哪?即空间位置问题。
(2)安排多大空间?即数据长度问题。
(3)存放什么样的数据?即数据类型问题。
在数据空间的组织安排方面,汇编语言和高级语言的一个重要差别是:高级语言提供的是直接面向应用的数据类型,如C语言中的基本类型――整型(int)、浮点型(float)、字符型(char),而整型又有长(long)、短(short)之分,浮点型又有单精度(single)和双精度(double)之分,此外还有有符号(signed)和无符号(unsigned)之分等。高级语言的数据类型是面向应用的,因此它们有两方面的含义:类型特点和长度大小,这就解决了上述3个问题中的后两个问题[1]。
在C语言中,数据除了有类型这个概念之外,还有类别之分,即存储类别问题,共有4种:static、auto、register和extern。从严格意义上讲,其中和数据空间的组织安排有关的只是前3种:static和auto对应的是内存空间,而register对应的则是寄存器空间,这又解决了上述3个问题中的第一个问题[1]。
与高级语言不同的是,汇编语言的数据类型是面向机器的,如MA***中的基本类型――DB、DW、DD、DQ、DT等,它们只有长度大小的含义,而且都是对应内存空间的,因此用它们定义的变量都属于内存变量。
在汇编语言中,由于可以直接引用各个寄存器,而且各个寄存器的空间大小都是确定的,因此这些寄存器实际上就相当于C语言中的寄存器变量。
总之,在汇编语言中,数据一般只有空间大小和位置之分,而不管这个空间中存放什么样的数据,即无类型之分。
因此,在用汇编语言设计程序时,对程序中的数据有一个面向应用的自我理解问题!这是在教学时应特别予以关注的!
2数据的加工处理
在数据的输入输出方面,汇编语言和高级语言也有重要差别。
以面向标准输入输出设备的数据输入输出为例,高级语言提供的也是直接面向应用的相关语句、函数和过程,如C语言中的fprintf、printf、sprintf、vprintf、vfprintf、vsprintf、fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar、fgets、fputs、pus、gets等,这些函数基本上满足了面向应用的各种类型数据的输入输出[1]。
汇编语言提供的则基本上是面向字符的中断调用,即通过调用相关的中断服务程序来实现数据的输入输出,如MA***中的常用的DOS提供的21H类中断服务程序的1、2、8、9、10号功能等。
总之,高级语言提供的一般是直接面向应用的输入输出机制,而汇编语言提供的则一般是面向系统的输入输出机制。因此在汇编语言程序设计的教学中,如何利用面向系统的输入输出机制通过编程实现面向应用的输入输出功能是我们的又一个重点。
在数据的内部加工处理方面,高级语言和汇编语言都提供一序列的运算符。
在C语言中,这些运算符包括为数据传送提供的赋值运算符“=”和为数据运算提供的算术运算符“+、-、*、/、%、++、--”、关系运算符“>、>=、
在MA***中,这些运算符包括算术运算符:“+、-、*、/、MOD”,逻辑运算符:“AND、OR、NOT、XOR”,关系运算符:“EQ、NE、LT、GT、LE、GE”,移位运算符:SHR和SHL等[2]。
值得注意的是,除了形式上的差别外,高级语言的运算符和汇编语言的运算符在功能上也是有差别的:高级语言的运算符往往可以用在包括常量和变量的各种数据之间,而汇编语言的运算符则往往只能用在常量之间,对变量的加工处理则是依靠相应的指令来实现的。
3流程控制问题
为了实现流程控制,高级语言都提供有两类基本语句:分支控制语句和循环控制语句,如C语言和PASCAL语言中的if语句、switch语句、for语句、while语句、do-while语句、case语句、repeat语句以及比较特别的goto语句等[1,3]。
汇编语言则提供有相应的流程控制类指令,如MA***中的无条件转移指令(JMP)、条件转移指令(JA、***、JAE、***E、JNZ、JZ、JG、JL、JGE、JLE、JO、JNO、JS、JNS、JC、JNC等)、循环控制指令(LOOP、LOOPZ、LOOPNZ)等[2,4-6]。
在功能上,汇编语言的转移类指令既可以用于分支控制,也可以用于循环控制,而循环类指令则自然主要用于循环控制。它们的实现机制在高级语言中也有体现,如C语言中的goto语句。
从功能上看,C语言中的goto语句主要有两种用法:
(1)goto标号;
(2)if条件goto标号。
前一种用法实现的正好是汇编语言中无条件转移指令的功能,而后一种用法实现的则正好是汇编语言中条件转移指令和循环控制指令的功能。
在用汇编语言写分支控制程序时尤其要注意的是,由于只能一个分支一个分支的纵向展开,因此除最后书写的分支外,前面的分支结尾处一般都应该有一条无条件转移指令以跳过后面的分支,避免执行不该执行的分支。
例如:输入一个字符,判断其是否为数字‘9’,若是,则输出字符‘Y’;否则,输出字符‘N’。这是一个简单的二分支问题,其汇编语言程序段如下:
MOV AH,1
INT 21H
CMP AL,‘9’
JZ YES ;开始分支
MOV DL,‘N’ ;第一个分支
JMP EXIT ;避免执行第二个分支
YES:MOV DL,‘Y’ ;第二个分支
EXIT:MOV AH,2 ;汇合点
INT 21H
汇编语言除了提供上述转移控制类指令和循环控制类指令以实现分支程序设计和循环程序设计外,还提供有子程序和中断服务程序的调用(CALL、INT)指令和返回(RET、IRET)指令以及比较特别的重复前缀指令(REP、REPZ、REPNZ)等。
汇编语言的子程序概念和高级语言中的子程序概念、函数概念以及过程概念是对应的,而中断服务程序概念则一般是汇编语言独有的。
如果仅从程序执行机制上看,子程序、函数、过程、中断服务程序的地位是一样的,只不过是在不同的语言环境中采用了不同的称呼而已。
主程序和子程序、函数、过程、中断服务程序之间的流程控制都是通过调用与返回实现的,差别是:在高级语言中,主程序和子程序、函数、过程之间的流程控制是通过直接引用子程序、函数或过程的名字(加上适当的参数)来实现的[1,3];而在汇编语言中,主程序和子程序、中断服务程序之间的流程控制是通过前面提到的专门的控制指令(CALL、RET、INT、IRET)来实现的。
4子程序问题
前已述及,汇编语言的子程序结构相当于高级语言中的子程序、函数和过程。
在采用子程序结构时,一个重要的问题就是参数传递。主程序在通过调用子程序为自己解决某些问题时,通常需要为子程序提供一些相关的数据,子程序在内部对这些数据做相应的加工处理后应该将处理结果返回给主程序,这就是所谓的参数传递问题。主程序提供给子程序的数据通常叫做入口参数,而子程序返回给主程序的数据则通常叫做出口参数。
汇编语言子程序的参数传递和高级语言中子程序、函数或过程的参数传递机制从本质上看是一致的。
需要做参数传递时,通常有两种选择:一种方法是直接传递所需要的数据,另一种方法是传递所需数据的位置信息即内存地址。第一种方法即通常所说的值传递,第二种方法即通常所说的地址传递。需要注意的是,传地址的目的也是为了传数据。
从表象即实现形式上看,汇编语言子程序的参数传递和高级语言子程序的参数传递却有着不小的差别。
在高级语言中,函数在定义时往往就有参数说明,如C语言的函数定义格式如下:
类型 函数名(形式参数表)
{
函数体
}
高级语言的函数在调用时需要同时提供参数,一般格式是:函数名(实际参数表)。而在汇编语言中,子程序在定义时不需要有关参数的说明,在调用时自然也就无需同时提供参数。
如在MA***中,子程序的定义格式为:
子程序名 PROC
子程序体
子程序名 ENDP
子程序的调用格式则为:CALL子程序名
由此可见,高级语言中函数的参数传递是显式进行的,较之汇编语言子程序中隐式进行的的参数传递问题要易于实现和理解接受一些。因此,汇编语言中的子程序的参数传递问题就是教学中的一个重点内容。
在汇编语言中,为了实现子程序的参数传递,不管是采用值传递还是采用地址传递,都需要由程序设计者事先安排好一个第三方空间。值传递时将所需要的数据本身放在这个事先安排好的空间中,而地址传递时则将存放所需要的数据位置信息即内存地址放在这个事先安排好的空间里。
在安排用于参数传递的第三方空间时,既可以安排寄存器,也可以安排内存单元,还可以安排堆栈。因此具体的参数传递方式灵活多样,而且各有各的优势,在实际应用中通常综合以上各种做法以求达到最佳效果[2,4-6]。
5结语
限于篇幅,以上仅就程序设计的几个主要方面作了比较论述,而且主要是从实现机制的角度来谈,因此细节的东西基本上都省却了。事实上,在其他方面,汇编语言和高级语言也具有一定的可比性。
实践证明,通过比较教学,一方面可以利用学生已有的知识和体验帮助他们更好地学习汇编语言的相关知识,即把他们在高级语言程序设计中获得的有关程序设计的基本思想方法和规律迁移到汇编语言程序设计的学习中来,进行差异化的学习,极大地提高学习效率;另一方面,可以让同学们通过比较,把以前在学习高级语言程序设计时遗留的一些问题甚至没有意识到的问题搞清楚,起到融会贯通、触类旁通的作用。
总之,通过比较教学,不仅可以提高学生的学习效果和效率,而且新旧知识可以相得益彰。
参考文献:
[1] 谭浩强. C程序设计[M]. 3版. 北京:清华大学出版社,2005.
[2] 曹加恒,苏光奎,许先斌,等. 新一代汇编语言程序设计[M]. 北京:高等教育出版社,2003.
[3] 郑启华. PASCAL程序设计[M]. 2版. 北京:清华大学出版社,1996.
[4] (美)欧文. Intel汇编语言程序设计[M]. 5版. 温玉杰,梅广宇,罗云彬,译. 北京:电子工业出版社,2007.
[5] 沈美明,沈冬婵. IBM-PC汇编语言程序设计[M]. 2版. 北京:清华大学出版社,2001.
[6] 钱晓捷. 新版汇编语言程序设计[M]. 北京:电子工业出版社,2006.
The Comparative Teaching Method of “Assemly Language”
XIONG Xiao-bing
(Computer School, Wuhan University, Wuhan 430079, China)
高级语言程序设计篇6
关键词:C语言;高职;单片机
中***分类号:G642 文献标识码:B
“C语言程序设计”是高职高专电子专业的专业必修课。传统教学以理论为主,以学科本位的逻辑体系来设计课程的教学内容。课程内容没有与高职电子专业的其他课程有机衔接,不符合高职高专技能培养的特点。学生在学习C语言之后,不能用之有效地解决实际问题,学生的学习积极性难以调动,因此有必要对该课程进行改革。
1 现状分析
目前高等学校都把“C语言程序设计”作为理工科非计算机专业的计算机基础教育课程,属于计算机基础教育课程的一部分。但课程设置并没有考虑与其他专业课程之间的关系,没有针对高职应用电子技术的专业特点,成了非计算机专业学生的“计算机通识教育”课程。
虽然许多学校对“C语言程序设计”课程从教学内容、教学手段、教学方法等方面进行了大胆的改革,把逻辑与编程解题思路(算法)放在主体地位,讲解如何分析问题和解决问题;但是受“在学校里牢固掌握基础知识,毕业后在实践中积累经验”这种传统的教学理念的影响,把培养学生阅读程序、设计程序的能力,分析问题、、解决问题的能力和逻辑思维能力作为教学目标。课堂上学到的也只是用C语言解决一些数学问题,所学内容和实际应用相脱节,认识不到“C语言程序设计”和自己专业之间的关系,学生在学习C语言之后,不能用C语言编写为本专业服务的应用软件。特别对高职高专电子专业学生来说,C语言的知识成了他们专业知识结构中的一个“孤岛”。
2 改革的必要性
C语言是影响深远的、传统的、优秀的面向过程的结构化程序设计语言。C语言功能丰富、表达能力强、使用灵活方便、应用面广、代码转换质量高。C语言方便进行模块化软件设计,还可以实现C语言和汇编语言的混合编程。C语言既具有高级语言的优点,又具有低级语言的许多特点,能像汇编语言那样直接利用CPU的硬件特性进行程序设计。既可以编写应用软件,又可以编写系统软件。和汇编语言相比,C高级语言程序设计快、可读性、可移植性和可维护性好。一般情况下,完成同样的任务,使用C高级语言比用汇编语言可提高工作效率5-10倍,在调试阶段更容易体会到这一点,因此C语言特别适合单片机的开发。嵌入式系统中使用的嵌入式操作系统绝大部分也都是以C高级语言为基础的,很多直接将源代码提供给使用者。目前在单片机应用领域,C高级语言越来越受到人们的重视。用C语言进行单片机程序设计已经成为单片机开发的一个主流,是单片机开发与应用的必然趋势。
单片机课程是应用电子技术及相关专业的一门重要的专业主干课,在专业基础课和其他专业课方面起着重要的桥梁作用。它涉及到的基础理论知识较广,应用范围广,是一门实践性、工程性很强的技术课程,在电子技术及相关专业课程中群中占有十分重要的地位。电子专业的学生普遍将单片机用于课程设计、毕业设计和电子产品设计大赛等许多实践环节。单片机应用也是学生将来在电子类公司或电子行业工作的最基本的技能。“单片机原理与应用”课程都是基于汇编语言的,高职高专学生很难应用汇编语言去搞程序设计,学生学到的单片机知识不能得到应用。
高等职业教育的培养目标是:培养既有一定理论基础又有较强实践能力,在生产服务第一线工作高层次的实用型、技术型人才,它不同于一般本科院校的学术型、工程型人才的培养目标。就高职应用电子技术专业而言,它培养强电弱电相结合,以弱电为主,并能熟练应用电气技术、计算机技术和控制技术等现代科学技术,具有较强实践能力的技术管理人才。强调应用性、实用性是高职教育的特色,教学内容突出基础理论知识的应用和实践能力培养的原则,以应用为目的,以“必需、够用”为度,加强针对性和实用性。
因此,高职应用电子专业的“C语言程序设计课程”应不同于本科相应专业,也应不同于高职其他专业。“C语言程序设计”课程的开设应紧扣本专业的特点,为本专业的培养目标服务。如果将“C语言程序设计”变成“单片机C语言程序设计”,学生通过本课程的学习掌握单片机C语言程序设计方法,达到***利用C语言编写单片机应用程序的目的。将C语言“知识孤岛”和单片机“知识孤岛”连接起来,结合所学其他专业知识,使学生学会应用单片机开发电子系统的基本方法。如果学生以后需要用C语言或其他高级语言开发通用计算机系统的应用软件或系统软件,有了“单片机C语言程序设计”的基础,可以触类旁通,很容易掌握其他高级程序设计语言。这也符合从特殊到一般,再从一般到特殊的认知规律。
3 课程改革设想:
3.1 课程内容的改革
把“C语言程序设计”置换为“单片机C语言程序设计”,放在“单片机原理与应用”课程之后开设,将“计算机基础教育”课程变成“单片机开发技能”课程。课程内容适用于C高级语言的初学者,包括数据类型、运算符和表达式、数组、指针和函数、程序的顺序结构、选择结构和循环结构、程序设计基本知识和单片机的C编程等内容。对C语言中较难或单片机程序不常使用的内容,比如多维数组、指向指针的指针、链表等进行删减。相关例题应本着“深入浅出,突出实用”的指导思想,难度应与高职高专学生的基础相适应,算法不要过于复杂。单片机的C语言编程部分主要应包括中断、定时器/计数器、串行口、键盘和显示等相关应用,适当包含少量可编程芯片的应用。所选内容应体现先进性、实用性和技能培养的特点,抛弃一些过时或不实用的内容,把提高学生的职业技能放在突出的重要位置。整门课程应将单片机和C语言有机结合起来,强调知识点在单片机程序设计中的应用,体现“单片机C语言”的特色,避免把课程内容分为“C语言程序设计”和“单片机C编程”两部分。
3.2 编译开发环境
以80C51系列为基础,开发环境选择德国KeilSoftware公司的Keil uVision集成开发环境(当前版本是uVision3)。这是一个基于Windows的开发平台,集成了编辑器、项目管理器、Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器和调试器,用户群极为庞大,符合教学特点的典型性。其中Cx51是专为80C51单片机设计的C语言编译器,生成的程序代码运行速度高,存储空间小。KeiluVision还提供了强大的项目管理功能,可以十分方便地进行结构化多模块程序设计,特别是Keil提供的纯软件模拟仿真功能(也支持硬件目标板***仿真),非常适合教学使用。Keil调试器支持断点管理和程序代码的多种 执行方式(全速、单步、执行到指定行等)。在调试状态下有寄存器窗口、存储器窗口、观察窗口和命令窗口,用于程序执调试过程中显示单片机寄存器、存储器、局部变量和观察点的状态和输入各种调试命令。Keil uVision的集成功能(Peripherals)菜单可以打开中断系统、I/O接口、串行口、定时器计数器等状态窗口,通过这些状态窗口可以观察软件仿真结果。
Keil uVision可以与PROTEUS整合构建单片机虚拟实验室。PROTEUS是目前世界上最先进最完善的嵌入式系统设计与仿真平台,可以实现数字电路、模拟电路及微控制器与外设组成的混合电路系统仿真、软件仿真、系统协同仿真和PCB设计等全部功能。由于PROTEUS软件包逼真、真实的协同仿真功能,得到了包括剑桥在内的众多大学用户的认可,作为电子学或嵌入式系统的课程教学、实验和水平考试平台。Keil uVision与PROTEUS通过设置联机调试单片机系统,在PROTEUS中完成单片机系统的电路原理***绘制后,在Keil uVision集成开发环境中进行程序设计、项目的创建、编译链接和调试,同时可在PROTEUS查看直观的结果(如键盘输入和LCD显示等)。
3.3 教学方式的改革
高职教学应该是基础和技能的教学同步进行,甚至先教技能再教理论,在不断实践中掌握技能,在技能学习中提高基础理论。在高级语言程序设计教学中,不能期望高职学生对每一个算法都理解。一些太复杂的算法、单片机应用系统中常用芯片的驱动程序,可以以函数库或软件包的形式直接提供给学生,供学生在程序设计中调用,降低理论教学难度。
确立以学生为中心的教学理念。从学生实际出发,以学生为本,采用多样化、层次化的教学方法,贯彻循序渐进、深入浅出的原则。学生没有高级语言程序设计的基础,在“单片机C语言程序设计”教学中要注意分散难点,缩小台阶。在内容体例的设计上以实用为主,抛弃过多的语法细节和非通用的或实际用途很少的语言特性,理出重点和教学主线;采用一体化教学方法,以程序样例为主实施教学。淡化语法教学,以程序设计带动基本语法的学习。
上机实验是掌握单片机C语言程序设计的必要手段。不能简单地认为上机实验只是辅的教学。程序设计的能力是在实际动手实践中练就的,通过上机操作和验证可进一步加深各种语句的理解,提高学生的编程能力。通过Keilu Vision与PROTEUS组成的联机调试环境,熟练使用Keilu Vision和PROTEUS软件对学生的深入学习有巨大的帮助。
高级语言程序设计篇7
关键词:汇编语言,C语言
单片机的开发离不开单片机的开发语言,对于一个开发者来说,选择适合的语言是非常重要的一个开发环节。
目前的单片机的编程语言主要有汇编和高级语言两种,每一种类型的单片机都有自己的汇编语言,软件可移植性不是很好。而高级语言有C 语言,PLM 语言,PASCAL 语言,BASIC语言等几种。BASIC 语言主要应用在MCS51 系列单片机上,但效果不是很理想,现在已经基本上不用。PLM 语言主要应用在MCS51 和MCS96 系列单片机中,对硬件的控制能力和代码效率都很好,PLM51语言是介于C语言和汇编语言之间的一种高级语言, 是由一种曾经用于大中型计算机的高级语言 PLM 语言移植来的。PLM 的程序书写格式相当灵活,其说明语句写在输入行的位置不受限制,而且程序的元素之间可以随意插入空格。PASCAL语言在MOTOROLA 单片机中有应用。C语言是现代单片机开发中较常用的高级语言,其程序的可读性,可移植性都很好,对硬件的控制能力也很强,唯一不足的是其代码效率较低,在程序量较大时需使用大容量的程序存储器。下边本文就主流的汇编语言与C语言的语言结构和特点进行研究。
首先是汇编语言的结构及特点。
汇编语言是一种采用助记符来编写程序的语言,它由操作符和操作数两个部分组成,其中操作数又分为源操作数和目的操作数。汇编语言比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。论文大全,汇编语言。。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
由于汇编语言中使用了助记符,用汇编语言编制的程序必须通过预先放入计算机的'汇编程序'的加工和翻译,才可以变成能被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。
其次是C语言的结构及特点。
C语言是一种通用的计算机程序设计语言,在国际上十分流行,它既可用来编写计算机的系统程序,也可用来编写一般的应用程序。以前计算机的系统软件主要使用汇编语言编写的,对于单片机应用系统来说更是如此。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用系统程序的周期长,而且调试和排错也比较困难。而一般效率高的高级语言难以实现汇编语言对于计算机硬件直接进行操作(如对内存地址的操作移位操作等)的功能。而C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,并且采用C语言编写的程序能够很容易地在不同类型的计算机之间进行移植,因此许多以前只能采用汇编语言来解决的问题现在可以改用C语言来解决。
C语言可以用来编写科学计算或其他应用程序,但它更适合于编写计算机的操作系统程序以及其他一些需要对机器硬件进行操作的场合,有的大型应用软件也采用C语言进行编写,这主要是因为C语言具有很好的可移植性和硬件控制能力,表达和运算能力也较强。
概括来说,C语言具有以下一些特点:
1.语言简洁紧凑,使用方便灵活 :C语言一共只有32个关键字,9个控制语句,主要用小写字母表示,压缩了一切不必要的成分;C语言程序书写形式自由,可以用简单的方法构造出复杂的数据类型和程序结构。
2.运算符丰富 :C语言把括号、赋值、强制类型转换等都作为运算符处理,从而使C的运算类型极其丰富,共有34 种运算符。C表达式类型多样化,灵活使用各种运算符可以实现其他高级语言难以实现的运算。
3.数据结构类型丰富 :C的数据结构类型丰富,根据需要可以采用:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等多种数据类型来实现复杂数据结构的运算,尤其是指针类型数据使用起来非常灵活多样。
4.可进行结构化程序设计 :C语言是以函数作为程序设计的基本单位的,用函数作为程序模块以实现程序的模块化,是结构化的理想语言。
5.语法限制不严格,程序设计自由度大 :C语言的语法规则不太严格,程序设计的自由度比较大,限制和灵活是一对矛盾。C语言放宽了语法检查,所以程序员应当仔细检查程序,而不要过分依赖C编译程序去查错。
6.C语言允许直接访问物理地址 :C语言允许直接访问物理地址,能进行位(bit )操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作,这样它可以对单片机的内部寄存器和I/O口进行操作,可以直接访问片内或片外存储器。
7.生成目标代码质量高 :众所周知,汇编语言程序目标代码的效率是最高的,但统计表明,C语言编 写的程序生成代码的效率仅比汇编语言低10~20%。
8.程序可移植性好 :汇编语言完全依赖于机器硬件,因而不具有可移植性,C语言是通过编译来得到可执行代码的。C语言的编译程序便于移植,基本上不作修改就能用于各种机器和操作系统。
尽管C语言具有许多的优点,但和其他任何一种程序设计语言一样,也有其自身的缺点。但总的来说,C语言的优点远远超过了它的缺点。论文大全,汇编语言。。
因此我们在使用中通常将汇编语言和C语言相结合,利用共同的优点来完成开发工作。那在C语言中如何使用汇编语言呢?这个问题在不同的编译器中,具体实现方法是不同的。不过在实现大方上也不过就是有两种,而且各种编译器的实现方法也是大同小异。论文大全,汇编语言。。通常的方法是:一、对C语言程序编译后形成的汇编程序进行手工修改与优化;二、在C语言程序中直接嵌人汇编语句;三、分别编写C语言程序和汇编语言程序,然后***编译成目标代码模块,再进行链接。第一种编程方式要求对汇编与C语言都极其熟悉,并且这样的编程方式对程序的可读性和扩展性的负面影响比较大,一般不建议使用。第二种方法适用于语句执行频率非常高,并且C编程与汇编编程效率差异较大的情况,例如进入中断的通用中断子程序等。第三种方式是混合编程最常用的方式之一,在这种方式下,C语言程序与汇编语言程序均可使用另一方定义的函数与变量。通过这样的方法就可以使二者结合起来,达到混合使用的目的。
以上就是本文对多种单片机的开发语言特点进行的研究。
参考文献:
[1]陈建铎.单片机原理于应用.北京:科学出版社,2005.2
[2]刘守义.单片机应用技术.西安:西安电子科技大学出版社,2007.8
[3]李平,杜涛,罗和平.单片机应用开发与实践.北京:机械工业出版社,2008.7
高级语言程序设计篇8
关键词:汇编语言 高级编程语言 历史 趋势
中***分类号:TP313 文献标识码:A 文章编号:1003-9082(2017)06-0002-02
一、编程语言的发展历程
自从1946年世界上第一台电子计算机问世,人类和机器的交流方式和语言就成为了软件工程师和计算机从业者的主要研究方向,更有效更简便的编程语言成为了软件工程师的新宠儿,伴随着计算机的飞速发展,计算机的硬件升级速度也越来越快,对编程语言的要求也日益严格。在过去的几十年,编程语言有了长足的发展,至今已经有四代语言问世。大量的编程语言为了满足不同领域的编程要求和软件功能,经历了被修改,被取代,被发展等过程,最终发展成了现在编程语言的多样化。尽管人们多次试***寻找一个能够适应所有编程环境的通用语言,但是却没有一次成功。程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。
1.机器语言
计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“0”和“1”组成的二进制数,所以说二进制的语言是计算机语言的本质。计算机发明之初,人们为了去控制计算机完成自己的任务或者项目,只能去编写“0”、“1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言。直观上看,机器语言十分晦涩难懂,其中的含义往往要通过查表或者手册才能理解,使用的时候非常痛苦,尤其当你需要修改已经完成的程序时,这种看起来无序的机器语言会让你无从下手,也很难找到程序的错误。而且,不同计算机的运行环境不同,指令方式操作方式也不尽相同,所以当你在这种机器语言就有了特定性,只能在特定的计算机上执行,而一旦换了机器就需要重新编程,这极大的降低了程序的使用和推广效率。但由于机器语言具有特定性,完美适配特定型号的计算机,故而运行效率远远高过其他语言。机器语言,也就是第一代编程语言。
2.汇编语言
通过我对机器语言的介绍,不难看出机器语言作为一种编程语言,灵活性较差可阅读性也很差,为了减轻机器语言带给软件工程师的不适应,人们对机器语言进行了升级和改进:用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便,这种语言就是我们所说的汇编语言,即第二代计算机语言。但是这时候,计算机的硬件还是那些硬件,所以计算机还是不认识那些字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数。因为汇编语言只是将机器语言做了简单编译,所以并没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。
3.高级语言
在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素――程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。在计算机还很稀缺的50年代,Q生了第一个高级编程语言。当时计算机的造价不菲,但是每天的计算量有有限,如何有效的利用计算机有限的计算能力成为了当时人们面对的问题。同时,因为资源的稀缺,计算机的运行效率也成为了那个年代工程师追寻的目标。为了更高效的使用计算机,人们设计出了高级编程语言,来满足人们对于高效简的编程语言的追求。用高级编程语言编写的程序需要经过翻译,翻译成机器所能识别的二进制数才能由计算机去执行。虽然,高级编程语言编写的程序需要一些时间去翻译代码,从而降低了计算机的执行效率,但是实践证明,高级编程语言为工程师带来的便利远远大于降低的执行效率。经过各软件工程师和专家的不懈努力,1954年,第一个完全意义的高级编程语言―FORTRAN问世了,他完全脱离了特定机器的局限性,是第一个通用性的编程语言。从第一个编程语言问世到现今,共有几百种高级编程语言出现,很多语言成为了编程语言发展道路上的里程碑,影响很大。比如:FORTRAN、BASIC、JAVA、C、C++、python等。高级编程语言也从早期的控制信号变成了现在的有结构有格式的程序编写工具,C++等语言的出现更是开启了面向对象编程语言的新章。同时伴随着软件编写效率的提高,软件开发也逐渐变成了有规模、有产业的商业项目。
二、高级编程语言、汇编语言和机器语言的区别
根据上面的简单介绍,我们可以说作为编程语言的一种划分,高级编程语言和低级语言构成了一般意义上的计算机语言。而高级编程语言又是和汇编语言对比而言。高级编程语言作为一种通用的编程语言,它的语言结构和计算机本身的硬件以及指令系统无关,它的可阅读性更强,能够方便的表达程序的功能,更好的描述使用的算法。同时,它更容易被初学者所掌握,很容易学习。而且容易学习掌握。但是高级编程语言因为是一种编译语言,所以他的运行速度比汇编程序要低,同时因为高级语言比较冗长,所以代码的执行速度也要慢一些。所以说汇编语言更适合编写一些需要高效率运行的程序或者对程序代码的长度又要求的程序,同时在直接控制硬件方面也能够起到很好的作用。
高级编程语言,作为用户层面的程工具,用户并不需要去了解硬件的结构,而是去用逻辑的语言去实现想要的目标,但是因为高级编程语言的架构高于汇编,所以不能编写直接访问硬件资源的系统程序,因次,高级编程语言必须要调用汇编语言编写的程序来访问硬件地址。
机器语言(machine language)就是一种指令集了,它是一串数据代码,也可以叫做机器码。他能够由硬件直接读取,同时硬件返回的数据也是这种二进制代码。机器语言是作为直接控制硬件的桥梁,连接这软件和硬件两个不同领域的技术。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言执行速度是上述语言中最快的,而且无需编译直接执行。用机器语言编写程序,编程人员不仅要对所有二进制数字所指代的指令烂熟于心,而且还要手动为程序分配存储空间以及输入和输入。所以这是一个十分复杂的过程,即使编写简单程序也好耗费大量的人力。而且不论是代码还是输出,全是“0”和“1”的数字串,在后期的阅读和维护也会非常困难,所以机器语言已经慢慢的推出了主流编程语言的领域。
三、汇编语言和高级编程语言的优缺点
1.汇编语言的优缺点
汇编语言作为机器语言之上的第二代编程语言,它也有很多优点:
1)可以轻松的读取存储器状态以及硬件I/O接口情况
2)编写的代码因为少了很多编译的环节,可以能够准备的被执行
3)作为一种低级语言,可扩展性很高
缺点:
1)因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长已经编写的困难
2)因为汇编仍然需要自己去调用存储器存储数据,很容易出现BUG而且调试起来也不容易
3)就算完成了一个程序,后期维护时候也需要耗费大量的时间。
4)因为机器的特殊性造成了代码兼容性差的缺陷。
2.高级编程语言的优点
因为高级编程语言很多,我们就拿C语言展开论述。C语言是一个面向过程的语言,用户根据自己的需求来调用函数或创建目标。因为明确的目标性以及理解容易,一个新手很容易去学习C语言。同时C语言因为发展的历史,拥有很多函数库,用户可以根据自身的需求在代码中加入头文件来调用这些函数来实现自己的功能,当然使用者也可以根据自己的喜好编写函数来在后续的代码中调用,关键字像if,else,return,main,end等这些简单易懂的单词也使得C语言记忆和理解起来更加容易。作为一个通用性很高的编程语言,C语言的可移植性是它出色的优点之一,你可以在任意一台电脑、一个设备上运行程序而不需要重新编译。
四、对未来编程语言的展望
通过上面的介绍,我们不难发现面向对象思想在编程设计中占有很重要的地位,同时现在编程语言的多元化也告诉我们,未来的语言发展不会是一枝独秀,也不会是单纯的语言发展,而是以完全面向对象的姿态你展现我们的现实世界。它将更容易被工程师学习和使用,人们完全可以通过简单的操作来完成复杂的编程。这就得出了未来语言发展的第一个趋势--面向对象,由计算机来提供现有的函数功能、封装结构。而工程师只需要去拿现成的函数来调用,大大提高了代码的利用率。同时简单性也成为未来追求的目标,如果一个有简单计算机知识的人只需学习一些基本的操作就能编写适合于各种情况的应用程序,这样创造和编写的成本将会大大降低。在互联网高速发展的今天,安全也将成为了代码编写中必不可少的因素,一个更安全更具有保密性的语言也是未来的需求。综上在这样一个“百花齐放百家争鸣”的编程语言环境,只有能真正给使用者带来便利的语言才会走的更远走的更好。
参考文献
[1]张t蕊,C++教学方法及学习方法的调研与分析,计算机教育第23期
[2]王文东,李竹林,尚建人,汇编语言与C语言的混合程序设计技术,计算机发展第十六卷第八期
[3]路士兵,浅谈计算机汇编语言的特点和学习方法,科技创新导报2014NO.20
高级语言程序设计篇9
关键词:C++程序设计语言;实践教学;建设
中***分类号: G641 文献标识码: A 文章编号: 1673-1069(2017)01-103-2
1 实践课程简介
本课程属于我校计算机类本科生的第一门专业基础实践课,课程内容包括C++语言程序设计的理论和实践两个部分。基础理论部分内容包括C语言程序设计的基本概念、C++面向对象程序设计、类、对象、继承、派生、多态、模板等概念。实践部分则包括C++语言程序设计的基本训练、类和模板的设计编程、几个算法的实现、简单应用等。
C++语言程序设计是计算机类本科生的一门程序设计语言基础课程,虽然现在大多数程序员使用Java语言做项目开发,但作为程序设计的入门语言,考虑到在培养程序员思维方式的转变过程中,既要兼顾理解计算机硬件和软件的结合,又要程序员从传统的数学逻辑思维方式继承并成功转型到计算机逻辑思维方式。目前也只有C或C++语言能够较好的满足这种需求。
本课程注重采用C++编程语言的最新国际标准[1],结合我们学校实验室硬件的情况,尽可能采用国际上正在流行的比较新的编程软件进行实践教学。使得课程的讲授内容始终跟踪C++程序设计语言的前沿性和先进性。积极学习和引入国内外同行的先进教学方法和教学案例。简单介绍C++语言程序设计的几个流派、现实的应用情况及未来发展趋势。
本课程强调学生在认真听课、阅读理解课本上的有关程序设计的概念、方法外,还要善于利用互联网的资源,特别是学习C++语言程序设计的几个***网站、几个行业大牛的网站上的知识。在理解理论的基础上展开实验验证,不断的修正自己的理解偏差,使自己学到的知识不断完善,形成体系,为后续课程的学习打下一个坚实的基础。在C++语言程序设计实践教学过程中,强调合作能力的培养,团队意识的形成。自2004年以来,本课程教学效果得到学生的一致肯定,锻炼和培养了学生的实践能力,比较好的完成了本门课程的教学任务。
2 实践教学目标
本课程的实践教学目标包括:学生通过本课程的学习、实践,让学生从中学生传统的数学思维方式转变为结合计算机软硬件特点和计算机逻辑的计算机思维模式去分析问题、编写程序、实现解决问题。通过C++语言程序设计课程的实践训练,了解什么是面向对象的设计思想,养成良好的程序设计风格。利用C++语言程序设计来解决一些实际问题;学会自顶向下,逐步细化,会把复杂问题拆解为几个更为简单的问题,利用面向对象技术进行设计和编程。培养团队协作和开放意识,为计算机类专业后续课程的学习打下一个良好的基础。
3 实践教学方法、手段(举例说明采用的各种教学方法及手段的使用目的、实施过程、实施效果)
①建立以转变传统数学逻辑思维方式为结合计算机软硬件特点的计算机逻辑思维方式为主线的,分层级、渐变式的实验教学体系。首先训练学生学习计算机编程的三种基本逻辑,数组等数据的组织方式,学会排序等几个简单常用算法、解决一些简单问题。然后学习把数据和定义在数据上的操作整合在一起引入类的概念、学会类的定义、理解继承、派生、多态、学会模板的定义和使用、学习文件的使用方法。使学生养成良好的程序设计风格、形成计算机逻辑思维模式。
②采用灵活多变的教学方法,加快提高学生的编程能力。实践教学过程中,针对一些具体的例题,先解决基本问题,然后分析对于一些语句进行适当修改和加入新的语句就可以解决类似的其他问题。设计、利用一些实验数据发现所设计的程序的关键性问题,然后引导学生去解决此类问题。因为本门课程是学生接触的第一门实践性课程,教学过程中引出的问题有些是当前阶段可以解决的,一些问题还要通过后续课程的学习提高能力后才能解决,不一定马上就要把问题解决掉、重点是培养学生继续学习的兴趣。激发学生自主学习的积极性、主动性和能动性。
鼓励学生自主组建C++语言程序设计兴趣小组去找协作课题、完成课程设计作业。实验课堂上也鼓励学生多走动、多交流。建立网上资料、技术分享机制、鼓励学生分享解决问题的方法,老师根据学生的分享情况,适当增加学生的平时成绩。
③逐步建立学校和社会的协同培养模式。在教学过程中,课外时间如有可能,适当组织部分学生走出校门,利用校友资源,组织参观企业、科研院所、地方***府等单位在计算机方面的应用情况。了解社会需求、拓展视野、激发学生学习本专业的积极性。形式多样的人才培养协同创新模式。教学团队通过学院与广州易数信息科技有限公司、广东省信息安全测评中心、广州杰赛科技股份有限公司、广州腾科网络技术有限公司等企事业单位建立了长期战略合作关系。这些都为创新型人才培养打下了坚实的基础。
4 实践教学考核方法
本课程的总评价分数包括平时考勤,平时作业,中段考试、期终前上机考试、课程设计与新技术资料翻译,期末考核六部分。分别占10%、10%、15%、15%、10%、40%。其中,平时作业主要是针对课程中每章节后,为巩固所学内容所布置的习题编程实现;课程设计则主要是训练学生的协作能力和解决实际问题的分析、设计、编程能力、要求提交一份相对完整的设计文档;英文资料翻译采用自主选择网络上国外近半年来计算机类的英文资料、鼓励组团分解翻译大块文件,要求每人翻译至少2个A4版面。期末考试通过闭卷方式考核程序设计的能力,期终考试占总成绩的40%。
5 实践教材
本课程的实践教材为本课程主持人及参与人员王玉山等所编著的《C++语言程序设计实践》,该教材现在只有电子稿,还没有正式出版。
6 实践教学环境和教学资源
本课程的实践教学环境为:①学习版的微软公司的Visual Studio Visual C++的集成开发环境。②Bloodshed Dev-C++(C++开发工具)V5.11.0中文免费版。③奇趣科技开发的跨平台C++***形用户界面应用程序开发框架Qt。
教学资源:
①课程概要:课程简介、教学大纲、课程特色、教学效果。
②***课堂:课程PPT。
③实验指导:实验指导书和实验报告。
④部分大作业选题目录。
⑤C++语言程序设计课程及研究常用、重要***列表。
7 实践教学效果
经过多年探索和实践,教学团队在人才培养模式、教学方法、实践教学改革、试验教材编写等方面取得了一定的成绩。团队成员发表相关教改论文10余篇,获得过2010年广东省千百十校级人才项目,主持广东外语外贸大学校教学研究课题“毕业设计管理系统”,2010年度、2012年度广东外语外贸大学优秀科研业绩奖二等奖,周咏梅和林华两位老师获得过年度优秀个人。教学团队成员具有丰富的教学改革实践经验和理论基础,保证了本门实践课的教学质量。
通过大作业与新技术资料翻译,提高了学生主动学习的积极性、培养了团结协作精神。提高了解决问题的能力。组织部分学生到相关企业参观、坚定同学们学习本专业的积极性。
指导学生积极开展科研实践和申报项目,获得成绩如下:
①在王玉山老师的指导下,软件系2015级大学一年级新生林泽聪等获得了广东省团委的攀登计划项目:个人健康档案,获得资助2万元。
②在周咏梅和蒋盛益老师指导下,彭金原等同学获得广东外语外贸大学校级大学生创新创业项目:网络舆情构建关键问题研究―以微博客为分析对象(2011年校级);黄确君等获得:面向高校***书馆的推荐系统(2012年校级)。
部级学科竞赛获奖情况:
Innc多媒体解析语言,2007年在天津举办的全国第10届挑战杯比赛3等奖,2004级软件工程专业,文羲畅。指导老师王玉山。该项目同时获得广东省2007年第九届挑战杯1等奖。
省级学科竞赛获奖情况:
①四灵象棋――基于互联网与移动设备联合开发,广东省第18届“高校杯”软件作品赛一等奖,2006级计算机专业:郭勇、刘荣科、何健,指导老师:林华、蒋盛益、吴彩虹、王玉山。
②基于Web3d的网上服装商城 , 第十七届广东省“文泰高校杯”软件设计(本科组)竞赛1等奖, 2004级软件工程专业学生,指导老师,王玉山。
泛珠三角安利杯大学生计算机作品赛:
2006级计算机专业,陈俊平,余雯. 基于C++语言程序设计的垃圾邮件识别系统, 泛珠三角大学生计算机作品赛广东赛区, 二等奖,2009。
2006级计算机专业学生,“任意达”――私人定制高校客车联盟系统,大学生计算机作品赛暨泛珠三角大学生计算机作品赛广东赛区选拔赛三等奖 , 指导教师林华。
8 实践课程特色及价值
《C++语言程序设计》作为大学计算机类1年级新生的第1门实践课程, 肩负着既要把学生从传统的数学思维方式向结合计算机软硬件特点的计算机思维方式转变,又要转变学生的应试教育模式学习方式向探索式、实证式、协同式、全球互联网求助式、开放式教育学习方式转变。还要求学会面向对象的程序设计思想方法,为后续课程的学习打下一个良好的基础。课程内容本身要求理论联系实际、在理解理论的基础上进行实践验证并不断修正、完善自己理论体系。学习本课程后,要求能够进行面向对象的类的设计,能够解决一些实际问题。本课程的特色和价值主要表现在:
①课程内容理论联系实际,所用软件实验工具、环境要符合时代需要、要采用最新的C++语言程序设计国际标准进行实验讲学,在试验中老师要善于对于同一个程序代码、进行适当变换就可以讲解、实验几个概念和方法,争取用较短的实验时间获得尽可能大的教学效果。
②对于实验内容的数量和深度做到适度,有时候甚至要把问题进行分解,让学生容易理解和实验操作,然后再把解决的问题整合串联、形成比较复杂的编程逻辑、达到锻炼能力、逐步提高水平的目的。也要让学生逐步学会对于程序提出各种修改方案进行实验、达到灵活运用。由于是大学新生的第一门实验课,要学习的基本概念、基础方法比较多,一些程序技巧和需要记住的语句段落要有适当重复训练。内容也要紧密联系实际,吸引学生投身于科技创新。让学生设计一些联系实际的程序,让学生具有的成就感,吸引学生更深入的学习C++语言程序设计。
③在保证基本实践教学的同时,要善于发现好的苗子,并适度引导他们开展四年的项目规划,利用课外时间进行深入研究,形成合作团队,为人才培养的连续性做出贡献。组织部分学生到企业参观实习,让学生早点了解行业需求,使得今后的学习更加贴近实际、符合社会需要。
高级语言程序设计篇10
关键词:汇编语言程序设计;教学改进
中***分类号:TP311文献标识码:A文章编号:1009-3044(2011)09-2111-02
Teaching Thinking of Assembly Language Programming Course
LUO Xing
(Hanshan Normal University, Hanshan 521041, China)
Abstract: This paper discusses the problem appear in teaching of assembly language programming course, propose some methods to improve student's ability to master the knowledge and learning interest. Discuss the assembly language teaching in Win32 platfrom in the last.
Key words: assembly language programming; teaching improvement
1 汇编语言程序设计课程教学现状
汇编语言程序设计作为一门计算机专业的课程,其存在的合理性在近年受到争议。有些人认为,汇编语言作为一种低级语言,指令繁多,难以掌握。另外,编程效率也不高,一个高级语言用一条语句实现的功能,在汇编语言中需要很多条指令才能实现。此外,汇编语言在时间上和空间上的优势由于高速CPU和大容量存储器的出现,也变得意义不大。
我认为学习汇编语言仍然具有重要意义。可以归纳如下:
1) 可以比较深入了解计算机硬件的底层工作原理,例如:CPU的工作模式,寄存器的概念,内存的寻址方式,中断的工作原理等。
2) 熟悉各种数据表示方法。如各种数制的转化,各种类型的数据在内存中的存储方式。学生在系统学习汇编语言程序设计这门课程后,对二进制,十进制以及十六进制相互间的转换应该非常熟练。对数据在内存中两种排列方式即大端方式(Big Endian,低地址存放高位字节)与小端方式(Little Endian,低地址存放低位字节)有清晰的理解。而这些相关的概念的牢固掌握对高级语言中的数据类型以及计算机网络编程的学习具有很大的帮助。
3) 通过汇编语言编程学习,可以促进对高级编程语言相关概念的理解。高级语言在编译的时候,一般都是先生成汇编代码,然后再生成的二进制代码。所以,通过对比分析汇编代码与高级语言代码的实现方式,对程序的执行效率,数据在内存中存放方式,堆栈的概念,函数的调用及参数传递的方式等都会有进一步的了解。
在教学中,我也遇到一些问题。一方面就是学生的积极性不高。主要原因包括:指令很多,难以记忆。对于几个大类的指令,如果每次课上一类,学生课后如果不进行主动复习,往往到下一次课的时候,就会忘记前面所学的内容或者发生混淆。另外,在学习汇编课程之前,他们已经学过一门高级语言,如C/C++等,汇编语言的学习方式与高级语言的学习方式有所不同,高级语言比较容易上机练习,也容易对程序运行结果验证,对于开发实用软件也相对容易,所以学生的兴趣比较大。而汇编语言一方面涉及到底层的硬件概念,比较难以理解,另一方面上机也比较困难,可以这么说,如果按照课本的顺序讲课,要到差不多讲完课,学生才可以上机完成一个功能比较完整的程序。
2 促进学生对知识的掌握
要解决这些问题,我认为要在学生的知识掌握方式以及学习兴趣的培养上下功夫。对于知识的掌握,除了每次新课内容讲完后,精心给学生布置作业习题之外。还应该注意到由于汇编语言的指令及相关的知识点很多,对于刚接触这门课程的学生一开始往往不大适应,容易混淆前面学过的内容,所以教师及时对所学过知识点进行比较和总结就很有必要。此外还应该定期对学生的学习效果进行检测,从过去的教学经验看,汇编语言这门课程是学生比较容易与教师的教学进度脱离的一门课程,不少学生在一开始由于在掌握知识遇到困难,问题越积越多,最终可能放弃听课。在检测的方法上,可以借助网上考试系统。教师可以自主出题,也可以让系统自动出题。通过分析学生的测试结果,教师可以及时调整教学进度,学生也会有一定的学习压力,使他们花更多时间查补缺漏的知识。
程序设计学习的最佳方法就是上机实践。汇编语言上机练习跟高级语言的上机练习相比,对于学生来说比较困难。一方面是由于一个完整的汇编程序涉及的知识点很多,而教材往往按知识点分类进行编排。所以学生要想在刚开始学习阶段,就编出完整的程序有一定的难度。另一方面,汇编程序的运行结果较难在屏幕上输出,汇编语言只有字符与字符串的输入输出,对于一道简单的算术运算题目,其结果的输出都要通过一大段的转换程序来实现。对于第一个问题,教师可以对教材内容进行选讲,把实验所涉及到的知识点先进行讲解。对于第二个问题, 我认为应该重点培养学生熟练使用调试工具的能力,通过掌握调试工具如DEBUG,CV等的使用,一方面学生可以直接观察程序的运行结果,另一方面,对于程序的逻辑错误也可以进行跟踪、分析以及解决。此外,由于汇编语言作为一种低级语言,编程都由一条条指令进行构造,所以相对繁琐,应尽早让学生应用模块化思路,掌握子程序及宏的使用方法。这样把一些常用功能做成模块,如输入输出功能,以后学生在编程的时候就可以直接调用这些模块,从而专注于实验的其它方面。
3 提高学生的学习积极性
对于如何提高学生的学习兴趣,我认为主要让学生意识到汇编语言的作用。一方面可以引入一些接口技术相关内容,使学生熟练掌握中断的概念以及I/O指令,然后上机编写中断程序,在中断控制器(8259A)进行验证,由于这些实验有按键输入,有屏幕输出,还能直接看到程序控制设备的效果,所以学生兴趣会比较大。此外,教师也可以适当拓展一些知识,如嵌入式编程相关概念,有兴趣的同学可以在课后自主进行学习。另外,由于不少学生对硬盘相关的问题感兴趣,比如硬盘数据的存放方式,数据的修复等。可以引导学生对这些问题进行思考,然后通过汇编语言提供的I/O指令和中断子功能,编程实现对硬盘的MBR,文件分配表等数据结构的读取,备份,修复等功能。教师通过布置一些学生比较感兴趣的课外作业,并适当提供协助,往往能提高学生的学习积极性。
另外,在汇编语言的学习过程中,教师应该有意识引导学生将汇编语言与高级语言的各个对应的部分进行比较。学生在学习汇编语言之前,通常已经学过一门高级语言,如C/C++等。高级语言在编译的时候,一般是先转换成汇编代码,所以它们具有相通性。大部分学生编写应用程序的时候是用高级语言,所以通过比较分析高级语言与低级语言在数据定义,程序流程控制,函数的定义及调用等的对应部分内容,对于学生更好的使用高级语言编写程序是很有帮助的。比如:汇编语言里有分段的概念,一般把变量定义到数据段,把代码定义的代码段。而C语言是把数据与代码都定义在一起,那么C语言编写的程序在编译成可执行文件后,它的全局变量,局部变量的空间是如何分配的。另外,对于动态内存分配,堆与栈的区别在哪里。还有函数的定义与调用,参数的传递顺序是如何的?这些疑问,都可以让学生编写简单的C语言程序,生成可执行文件后,然后通过调试工具进行反汇编进行分析。此外,在利用VC++,Dephi等IDE开发工具进行程序编写时,都会用到里面的调试功能。基本上调试功能都会包括反汇编与内存查看的功能,教师可以引导学生进行这方面的训练,使他们在以后编程时能熟练应用这个工具解决一些疑难问题,例如:内存非法访问,指针的非法引用等。
4 Win32平台下的汇编语言教学思考
目前很多高校在汇编程序设计教学中讲解的是8088/8086 CPU实模式环境,实际上是虚拟8086模式,因为真正的实模式工作DOS下,而现在汇编语言实验环境都是在windows 2000以上。由于现在大部分CPU都是32位以上,并且是工作上保护模式之上,此外这些CPU的寄存器类型以及寻址方式都已经发生较大变化。所以教师有必要对实模式与保护模式在逻辑地址转化为物理地址的方式的差异,还有16位与32位的指令在用法的不同点进行重点讲解。因为汇编语言现在的实际应用基本上采用工作于保护模式的Win32平台,在Windows操作系统控制下,汇编语言虽然不能再直接存取硬件,但是能通过调用系统提供的API函数完成各种功能。其实这里的API函数当于DOS下的中断调用,但是Window API函数无论从数量上、功能上还是易用性上都大大超过了DOS或BIOS的中断调用功能。所以现在在Win32平台下,汇编语言就像高级语言一样,可以方便的开发各种Windows应用程序。有些教师认为,既然在实模式讲解汇编语言很少涉及实用性,那就应该直接迁移到Win32汇编平台,讲解用汇编语言开发的Windows应用程序设计实例,从而提高学生积极性。我认为如果采用这种教学方法,可能会存在以下问题:首先由于上课时间有限,学生需要大量的时间才能熟练掌握各类指令,汇编语言的语法,程序结构等方面的知识。如果过多涉及Windows程序设计实例,对于不熟悉Windows编程机制的学生的来说,又多了一个不小的学习负担,这样子反而影响了汇编语言基础知识的掌握。另外,DOS下的实模式与Window下的保护模式下的编程在本质上并无很大的区别,只要学生熟练掌握各类指令用法,理解16位与32位的指令及寻址方式的区别,逻辑地址与物理地址转换机制等知识,他们就可以通过自主学习,较容易的掌握用汇编语言进行Win32应用程序的开发。对于教师,除了帮学生打好汇编语言的基础,可以适当以课外作业的形式,引入一些汇编语言在不同应用领域的简单实例,如加密与解密,软件的逆向工程等,这些课外作业的完成对学生汇编语言的应用能力的提高将会有不小的帮助。
5 结束语
汇编语言难教难学是教师与学生的共识,但是作为计算机科学中一门低级程序设计语言,通过对它的良好掌握,确实可以促进对计算机软硬件底层的了解,而这又能促进编程能力的提高。作为教师,在教学中应该不断尝新的教学方法,不断积累经验,只有这样,才能把这门课上好。
参考文献:
转载请注明出处学文网 » 高级语言程序设计10篇