程序设计语言十篇

时间:2023-03-25 08:53:24

程序设计语言

程序设计语言篇1

高职计算机专业的培养目标,是使学生掌握计算机软件、硬件的基本理论、基本方法和基本技能,能够从事计算机软硬件维护、一般应用系统的开发设计及相关领域的应用技术工作。程序设计语言课程是高职计算机专业的核心课程,对其教学内容、教学方法的改进,已经成为高职院校普遍关注和重点研究的课题。

一、程序设计语言教学中存在的问题

l、教学课时少

与普通高校本科计算机专业相比,一方面,高职学生的学习基础相对较差,导致他们接受较慢,学习困难;另一方面,目前我国高职院校的学制一般是3年,计算机专业的程序设计语言的课时较少,这就导致了实际教学中存在理论课时和实践课时不够的情况。因此,教师只能传授最基础的程序设计知识,不能提高学生应用程序设计语言解决实际问题的能力。

2、学生的学习动力不足

有些学生认为学习程序设计语言既枯燥又无用,不如学习多媒体或网络的一些课程;有的学生是因为学习程序设计,需要较强的逻辑思维能力和一定的数学、英语基础,因而在学习程序设计时显得力不从心,不能掌握应用计算机解题的基本思维方式,对计算机程序设计产生畏惧感,就知难而退了。

3、实践环节不能满足高职教学的要求

计算机专业本身就是技术应用专业,而且高职院校是以提高实践能力为主的职业教育。然而,现今高职程序设计语言教材,存在的普遍问题就是实践性教学内容不足,没有体现教材的实用性和职业性,不能保证对学生实践能力的培养,不能体现高等技术应用型人才的培养要求,缺少高职教育特色。

4、教学方法落后、考核方式单一

高职程序设计语言课程一般采用的教学方法是教师课上讲授加学生实验的形式,教师在理论课上常常采用“填鸭式”教学,学生很少主动思维,编程题不能独立作答案。上机实验时学生仅仅是对书本上现有的一些实例进行编辑调试,一旦调试成功就完成任务。这种教学方法根本不能让学生掌握如何从一个实际问题人手分析问题、解决问题。单一的笔试考核方式也使教师和学生忽视实践课环节,舍本逐末。

二、解决程序设计语言教学存在问题的对策

l、调整教学安排,改进教学内容,适应高职人才培养目标要求

高职计算机教育必须突出“以培养技术应用型人才”为核心的教学思想,注重学生实践能力的培养。针对程序设计语言课程而言,主要包括三个方面。

一是在课程的设置上针对课时少和学生的特点,可以在学习程序设计之初,先开设一个结构化程序设计语言,如C语言、PASCAL或FORTRAN等。适当增加其课时,使教师足以引导学生独立应用计算机程序设计解决实际问题。计算机程序设计语言虽多,但程序设计的基本知识和方法相同,结构化程序设计语言易于理解和掌握,学生一旦通过它掌握了应用计算机解题的方法和技巧,就可以触类旁通,很轻松地学习其他程序设计语言。

二是针对高职程序设计语言课程普遍存在课时少的问题,教师要认真设计课堂知识结构,不必追求学科的系统性、完整性,使教学内容充分体现应用性的特点。对易学、易懂的知识及一些基本概念有针对性地讲解,对难记的、难懂的知识少讲,与今后运用无关的、理论性过强的不讲,突出重点,抓住关键,将重点放在实际工程应用中需要涉及的知识和通用性较强的编程应用上来。

三是教师在授课的同时,为学生传授良好的学习方法,提高学生的自主学习能力。计算机知识更新很快,尤其是软件的发展更是日新月异。学生在课堂上学到的知识与技能远跟不上社会发展的要求,教师必须使学生认识自主学习的重要性,培养学生学会学习。这样不但可以提高课堂学习的效率,而且可以使学生在新旧知识间构建起新的信息链接,形成新的知识与技能,终身受益。要精讲多练,因需施教。

2、采用多种方法,调动学生的学习积极性

首先要使学生充分认识到程序设计语言的重要性,如投其所好,向其讲解一些小动画制作、软件维护或网络应用的方法。其次,要帮助学生建立学好程序设计语言的自信,如在开课之初带领学生学习教材目录部分,说明进度和标记重点、难点章节,做科目介绍时给学生的压力适当,使其消除对计算机程序设计产生的畏惧感。对学生要以鼓励为主,多关注学生,了解学生的学习状况,有的放矢,并根据情况调整讲课内容、重点和进度。

3、解决实践性教学内容不足问题的措施

一方面在教材的选用上应尽量地选择带有大量实验内容的教材,以提高高职学生运用该程序设计语言进行编程和综合创新的能力。另一方面任课教师也可以根据学生的学习情况,自己设计实验课内容。而且,要加大实践教学的比重,提高学生的实践应用能力。具体来说可以设置两个实践环节,即课内实验与课程设计。程序设计语言课程的实践性较强,仅仅通过课内实验环节是很难达到预想目标的,为此在课程基本内容结束后应增加课程设计教学环节。

4、改进教学和考试方法

一是加强课堂互动,注重启发式教学。教师要在激发学生创新意识的基础上,加强培养学生发现问题、提出问题和解决问题的能力。在教学中可利用新旧知识的联系,提出需要解决的问题,并由易到难,设计一系列具有启发性的问题,引导学生一步步完善程序设计。

二是精心设计教学实例。零散实例可以加深学生对某些知识点的理解,但实例的内容不连贯,不利于学生从整体上掌握教学内容。因此,还要设计一个规模较大的、典型的、学生熟悉且感兴趣的核心实例贯穿于教学全过程。该实例从小到大,随章节的发展开而逐步成长,呈现为逐步进化的多个版本。例如,在visualBasic程序设计教学中,可以设计一个“学生成绩管理系统”作为核心实例,贯穿始终,从而加深对该程序设计语言的整体理解。

三是将软件工程的思想融合到程序设计语言课程的教学过程中。教师在教学中从一开始就明确应用于工程开发的教育目的,以工程实践的方式,将软件工程的基本观念与课程的全部内容糅合为—体传授给学生。

四是采用书面考试、上机考试、课程设计相结合的方式全面考核学生学习效果。书面考试可以侧重于对基本概念的理解和掌握方面,以考查学生对基础知识的掌握情况;上机考试可以让学生在规定的时间内对给定的设计题目编出程序,并在计算机上调试通过,以此考查学生的综合应用能力和快速编程能力;课程设计可将学生分成若干小组,每组布置一个稍大的有实际应用背景的程序设计题目,由小组成员分工完成,目的是考核学生运用程序设计语言解决实际问题的能力和协作编程的能力。

参考文献:

[1]叶幼林.对计算机C语言教学的探讨与研究[J].中南民族大学学报(人文社会科学版),2004,(4).

[2]解晨光.关于高职高专计算机教学改革的研究[J].教育探索,2006,(8).

[3]袁锋.谈VB程序设计教学方法改革的几个转变[J].中国成人教育,2004,(2).

程序设计语言篇2

关键词:C语言程序设计;精品课程;建设

中图分类号:G642.3 文献标志码:A 文章编号:1674-9324(2013)22-0232-02

《C语言程序设计》课程是计算机及计算机相关专业中一门重要的专业基础课程,它兼有汇编语言和高级语言的双重优点,在系统软件和部分应用软件的开发中具有较强的实用性,因而使其成为高等学校程序设计课程的首选语言,也为进一步学习其他高级程序设计语言打下坚实的基础。C语言作为大学新生的首门计算机程序设计语言课程,却逐渐成为学生普遍认为难学、厌学的课程,主要因为:一是学生初次接触编程语言,没有任何基础,就立刻接触到大量的新名词、新概念、新规则,让学生难以接受;二是传统的授课方式:是先介绍变量定义,再介绍语法规则,最后讲解实例,这样的教学内容组织与呈现形式、教学方式方法令学生感到枯燥无味,教学评价形式单一,评价难以起到及时、正面的强化与激励作用;三是只有50多个学时的课时,授课内容繁多,练习时间较短,实训教学的课时少,利用率不高,学生常常旧知识未巩固又要消化新内容,紧张的节奏使学生极易产生厌学心理。所以,教学过程中如何把理论与实践有机结合,调动学生学习的积极性,激发学生的学习兴趣,使学生能够初步接受并彻底学懂,养成良好编程思维,是《C语言程序设计》课程建设过程中面临的主要问题。为此,笔者所在学院启动了《C语言程序设计》精品课程建设工作,先后经历了以下三个阶段。

一、《C语言程序设计》精品课程建设

第一阶段:2006~2007年,《C语言程序设计》作为计算机相关专业的专业基础课的重要地位逐步确立,并根据实际工作需要修改了教学大纲和实训教学体系,充实了几名计算机相关专业毕业的年轻教师,师资队伍建设取得实质性进展。

第二阶段:2007~2009年,建设分层次的立体化全方位教学支撑环境。基本完成多媒体课件、实训指导书、网络课程、教学支撑资源库建设。

第三阶段:2009~2011年,本阶段课程建设的基本目标是继续完善课程教学体系,加大现代信息技术手段在教学中的应用,加强与学生的互动交流,加强学生实践动手能力的培养,继续提升教学质量和教学效果,本课程于2011年11月建成院级精品课程。

课程组通过长期的教学和科研积累以及加强与其他高职院校的《C语言程序设计》课程教学交流,引入了先进的教学模式和网络教学系统,大大拓展了教师的视野和教学思路,提升了学生的学习兴趣和自信心,基本达到了精品课程建设的目的,本文主要从以下几个方面探讨精品课程建设实践经验。根据专业岗位对学生能力的需求及行业发展的最新动态,并根据专业岗位群的人才培养目标,邀请企业专家和课程专家对课程体系、教学方法和手段等方面进行了改革试点研究。

基于工作过程的教学模式。课程前期将真实的开发案例简化为易于被学生接受的实例,讲授的目的主要是让学生夯实基础,熟悉开发工具的使用,课程完全以实际工作要求训练学生。

案例教学。课程摒弃“提出概念,解释概念,举例说明”的传统的教学方式,转变为以案例作为重要载体组织教学,通过案例“提出问题,介绍解决问题的方法,归纳必要的结论和概念”,从而使学生获取全面的知识。课程的案例教学采用滚动拓展的模式,首先精选出一个典型的但比较简单的案例,然后,在此基础上加以扩展,一次只加一个知识点,逐步形成一个知识链条,使学生在知识的逐步扩展中,慢慢地建立起自己的知识体系结构。课程案例的选取和改造,同时兼顾针对性、知识性和趣味性。比如在编程案例中嵌入学生自己关心的名字,加入颜色、图形等学生比较感兴趣的元素等,有效地调动了学生的学习兴趣。

任务驱动式教学模式。课程将整个教学过程分解为若干个任务,学生在环环相扣的任务驱动下完成学习和操作过程。例如,在教学过程中引入“学生成绩管理系统”的设计开发,在实训阶段要求学生独立设计“学生成绩管理系统”。让学生既有明确的学习任务和目标,并配备具体的编程案例帮助学生模仿和学习。在“任务驱动”的过程中,鼓励学生自主的发挥,自主的创新,并在随后的考核中,对学生的创新给以较高的评价和肯定。使学生不再感觉编程是一件深不可测的事情,收到了很好的教学效果。

理论与实训相结合。课程的理论与实践教学实现了有机结合。从教师的任务角色看,教师既是理论课教师,又是上机实训课教师,使理论课与实训课具有一定的连贯性。从教学内容的组织看,理论讲授后,紧接着是上机实训,使学生理论知识的掌握与实际操作技能的提高相互促进。为保证实践教学的效果,我们采用“课内实训+课外实训”相结合的办法,以弥补课内学时的不足。实训教学围绕本课程的重点和难点,从最初的熟悉编程环境,程序设计基本结构,编程思想及函数、数组到指针的运用等,精心设计了一系列上机实训项目。设计了10多个课外开放性创新实训项目,对学生综合应用能力的锻炼起到了积极的作用。

在考核方面,改变以往的单一纸质考试为全面综合能力考试,《C语言程序设计》作为一门实践性很强的课程,考核重点应该放在学生实际应用能力上,在考核内容上,应做到全面覆盖、合理分布。考核应该既有理论,又有上机编程,还包括平时表现,平时成绩占20%,理论成绩占30%,上机编程成绩占50%。这样才能考核出学生的真实水平。

二、课程建设的启示

通过近几年的建设,该课程取得了较好的成效,主要体现在以下几个方面:一是课程的教学和实践内容得到进一步的完善和优化,建立了多媒体网络教学平台,基本上实现了网上多媒体课件等教学资源共享、学生网上作业、网上答疑等;二是教师队伍的素质结构建设得到进一步提高,教师队伍素质是精品课程建设的保障,在精品课程建设过程中,通过教学内容的研究、教学方法的讨论、授课环节的监督,教师的教学水平得到显著提高,尤其是青年教师在这一过程中,通过传、帮、带得以迅速成长,教学态度更加严谨,为他们以后的教学工作打下了坚实的基础。

《C语言程序设计》是计算机及相关专业的专业基础课,在整个专业课程体系中具有承上启下的重要作用,对学生的后续专业课程学习及后期课程设计、毕业设计、生产实习,以及为走上工作岗位打下理论和实践基础都具有重要作用。为此,该课程通过课程组各位老师长期的教学实践探索与建设,被评为院级精品课程。课程组成员坚持用先进的教学理念来指导课程改革,不断完善理论教学体系和实践教学体系,并综合运用现代教育手段,使教学效果更上一层楼。当然,课程的建设是一个长期、漫长的过程,更重要的是要将建设的成果应用在实际教学中。

参考文献:

[1]樊明智.计算机基础教学改革的实践与思考[J].计算机教育,2010,(1).

程序设计语言篇3

摘要:本文通过对高校高级程序设计语言课程设置的调查,在分析高级程序设计语言在教学中不足的基础上,对高级语言课程进行了课程改革和整合,提出了将面向对象程序设计作为程序设计课程的入门语言。

关键词:高级语言程序设计;面向对象;面向过程;课程整合

中图分类号: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).

程序设计语言篇4

关键词:C语言程序设计;重修课程;教学方法

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)27-0167-02

近年随着高校招生规模的扩大,学生数量一直呈增长趋势。C语言程序设计作为理工科专业学生必修的基础课程,不及格的学生人数也在逐年增加。重修班的课程教学也是本科教学中重要的组成部分,在重修课程的教学工作中存在一些有别于普通课程教学的特点,需要任课教师采取针对性的措施,才能保证重修课程保时保质完成。

一、目前C语言重修课程存在的问题

1.教学方法与教学手段过于单调。从目前高校的教学情况看,一般现在大多以多媒体教学为主。当然,多媒体教学较以往黑板板书的讲授方式有了一定的进步,但这里边仍然存在一定的问题。第一,多媒体教学方法仍是以教师教授为主、学生听讲为辅的教学手段,启发式教学没有得到充分应用。而且许多教师过分注重PPT教学,强调体系的完整性而非学生的掌握情况。学生经常感到上课好像都听懂了,但是上机时对C语言语法不熟练,编写程序无从下手。第二,多媒体教学很难为学生建立编写程序的直观感受。教师PPT上的例子通常是可以正确运行并得到正确结果的例子程序。这就会使学生产生厌学心理,误认为只要将程序代码输入计算机,计算机就会正确地执行。当程序发生错误时,学生经常感到束手无策,挫伤了学生学习的积极性和热情。

2.学生的学习目的不明确。对于非计算机专业的学生,通常认为C语言程序设计与他们所学专业课相关性较小,而且在现实生活中很难应用,所以对C语言程序设计很难提起兴趣。另一部分同学认为学习C语言的目的只是为了通过计算机等级考试或重修考试,所以认为C语言学习的重点是语法知识而非上机实践,这部分同学学习非常认真,教材上做满了各种对知识点的解释和编程时应注意的误区,可就是不会编写程序,最多只能参照教材的例子编写,无法编写程序解决工程实际问题。还有部分同学认为C语言过时了,应当学习JAVA、C#等目前行业内普遍采用的高级程序设计语言。而且JAVA等高级语言相对来说简单易学,源代码可读性强,同时又有功能强大的编译器支持,利于迅速开发项目。

3.C语言本身的特点。C语言作为一门实用的编程语言,以其强大的编程功能,自由灵活的编程风格,获得了IT技术从业者的广泛青睐,但是这些有点恰恰成为了初学者的最大障碍。C语言程序语法复杂,调试苦难,尤其是对指针的使用,使初学者经常犯难以跟踪的编程错误。而且对于非计算机专业的学生,C语言程序设计往往在大一下学期或大二下学期开设。对于仅学习过大学计算机基础的非计算机专业学生来说,缺乏对计算机结构的全面了解,对于和计算机硬件尤其是和内存结合很紧密的概念,学生基本很难理解和掌握。

二、针对重修课程特点的教学措施

1.培养学生学习兴趣。对于选修C语言重修课的学生,应注意对其学习兴趣的培养。比如在课堂上可以给重修的学生讲一些计算机科学家的生平及小故事、计算机与数学等方面的内容,短则一两句话,长则三五分钟,既活跃课堂气氛,又能激发重修生对程序设计的兴趣。教师也可以在课堂中向学生讲述一些在生活中使用C语言编写的软件,如与学生生活密切相关的嵌入式系统软件,让非计算机专业的重修学生感到C语言程序设计与他们并不遥远。教师在重修课教学过程中,可以采取案例驱动、任务驱动、主题作业、课程设计等多种形式[1,2],增强学生的学习兴趣。

2.改进教学方法。在C语言程序设计重修课程的教学中,要充分利用多媒体课件,其内容应该有条理、重点突出、详略得当。多媒体课件应该注重演示与推理,而不是教材的翻版。同时,教师也可在课堂上现场使用编译软件编写程序,并对程序中的错误加以修改并讲解,也可以教师将程序的主体写好,邀请同学上讲台上编写关键代码段,一起完成程序的编写。如教师在讲解for循环体的知识点之后,可以编写如下图所示代码:

并请同学上讲台现场编写代码完成所需的功能。如果学生在编写过程出现了错误,教师应该在课堂上做出讲解并给出解决方法。这样既调动了重修生上课的积极性,活跃了课堂气氛,同时教师对学生编程时易发生的错误,现场给予了解答,减轻了学生学习程序设计的畏惧心理。

同时,应采用将多媒体教学工具(如Flash)c程序调试相结合的方法,将C语言程序设计中内容比较抽象、比较底层、不易理解的部分,如排序算法,用直观的形式展现给学生。

例如,在讲解选择排序算法时,可以将如下图所示的Flash与VC++6.0的调试窗口做对照:

教师可以通过Flas与程序代码的互动,逐步地将选择排序算法程序每一步操作,形象直观地演示给学生。

3.强调算法的重要性。算法设计是C语言程序设计的灵魂,编程成功的前提是要分析出正确的算法,因此在教学中必须将算法设计作为程序设计课程的先导和教学重点,以培养和提高学生分析和解决问题的能力。笔者曾以求取任意正整数平方根为例,分别讲解了泰勒展式法与牛顿迭代法,并编写程序为学生展示了选取不同时间复杂度的算法对求解问题造成的影响。对于非计算机专业的C语言的重修学生而言,能够分析与设计简单的算法是我对他们的基本要求。要时时向学生传输这样一个观点:程序设计语言无论多么强大,多么流行,都是一种工具,而程序设计的根本目的是为了解决生产生活实际中的问题,对于解决问题而言,算法才是最重要的。

总之,以上是本人在C语言程序设计重修课教学过程中的一些体会,不一定完全正确,还需要我们不断地去探索,取长补短,不断完善。

参考文献:

[1]常本勤.基于问题的学习模式在程序设计类课程教学中的应用[J].计算机教育,2010,(2).

[2]冯小强.C语言教学方法的探索[J].科技信息,2010,(28).

程序设计语言篇5

程序设计课程一直以来都是信息类专业的必学课程,而《C语言程序设计》又是很重要的一门专业基础课,对后续课程如数据结构、面向对象的程序设计、C#程序设计、.Net应用开发等而言,是非常重要的一门前导课。数十年来,《C语言程序设计》在信息类专业的基础课中有着不可取代的地位,该课程旨在培养学生熟练掌握程序设计的语法规则,形成良好的程序设计风格,为进一步学习后续课程奠定基础。教材作为一本工具书,是教师授课与学生学习的主要参考工具,拥有一本集科学性、完整性和趣味性于一体的《C语言程序设计》教材,是学生学好这门课程的必要条件。对于高职院校的信息类学生来说,能够满足自身学习需求,与教师课堂讲授相吻合,便于自己课堂之余进行知识反刍的教材更是必不可少的。

一、 《C语言程序设计》教材现状

高职院校的培养目标、教学模式、教学内容有其鲜明的特色,教材的建设更应该符合学生特点和学习需求。高职院校《C语言程序设计》教材经历了两个发展阶段:在高职办学的早期,高职教学的主要内容是具体的实用技术,不需要也没有教材,因此,高职《C语言程序设计》教材建设明显滞后。随着高职院校的不断发展与完善,诸多《C语言程序设计》的教材相继问世,尽管其中许多冠以“高职”字样,却依然存在不少弊端,主要表现在以下几方面:

(一)延续本科教材风格,不符合高职教学特点

继高职院校广被诟病为本科院校的“压缩饼干”后,高职教材也成为本科教材的压缩版,《C语言程序设计》的教材也存在此类问题。打开最新版的某一册“普通高等教育‘十二五’部级规划教材(高职高专教育)”的《C语言程序设计》教材,发现内容结构依然是C语言基础、顺序结构、选择结构、循环结构、数组、函数、位运算、结构体与共用体、指针、文件等章节,和任一册本科教材内容结构几乎一致,而每一章节的内容也基本是由例题、解题步骤、流程图、代码和课后习题组成的,延续了本科教材的风格,与高职所突出的培养技能型人才的特点不符合。

(二)内容枯燥,实用性差

目前,大多数《C语言程序设计》教材对语法规则的介绍着墨很多,枯燥无味、实用性差。比如,打开任一本C语言程序教材,会发现还有“编写判断一个数是否为素数”“编写斐波那契数列的前20项”这种与生活距离较远、无法吸引学生的案例,因此,使学生在学习过程中把精力多放在记忆各种灵活多样的C语言语法规则上,忽视了使用C语言解决实际问题的能力的培养。

(三)未能给学生提供充足的自学条件

作为高职信息类专业学生的第一门专业基础课,《C语言程序设计》与学生在进入大学之前所学的知识有着本质上的不同,尤其是让初学者理解并掌握“指针”“函数”“数组”等闻所未闻的概念有相当难度。因此,教材不仅是学生课堂学习的参考工具,更是学生课后进行知识反刍的指导书。目前的教材除了课后习题之外,并没有对学生的自学进行有效的指导和知识补充,不利于学生对C语言知识的理解与掌握。

二、 《C语言程序设计》教材建设的指导思想

鉴于当前《C语言程序设计》教材所存在的各种问题,根据实际教学过程中积累的经验和学生的反馈,我们认为《C语言程序设计》教材的建设应遵循这些方面:①教材内容应兼顾高职院校的教学要求中初学者的学习水平;②教材案例设计应兼顾知识性、趣味性和实用性;③教材主体内容应力求通俗易懂、深入浅出,能让绝大多数学生理解和掌握;④教材的建设应使学生能够理解并积极参与教学过程,引导学生积极思考,调动学生学习的积极性,针对学生的练习应建立由浅入深、由简单到复杂、由单一到综合的转变,形成学习梯度;⑤教材应提供参考依据,为学有余力的学生提供了解更多专业知识的条件,同时对学习进度缓慢的学生,也应该让他们课堂之余有具备咀嚼知识的自学条件。

三、《C语言程序设计》教材建设的具体举措

(一)围绕课程定位,精选教材内容

《C语言程序设计》课程的主旨是让学生树立程序设计的理念,而不仅仅定位于C语言本身的知识点上。因此,教材内容的设计应选择程序开发过程中所共有的知识点,尽量删减C语言本身所独有的知识点。比如,在顺序结构、选择结构、循环结构这三种基本结构的内容安排中,应把重点放在这三种结构的应用环境上,特别是围绕这三种基本结构的程序设计思想与方法,而应该弱化这三种基本结构的语法、格式,特别是应该减少输入输出的格式控制符的篇幅,只要让学生了解各种程序设计语言都有各自不同的语法格式规定即可;还比如,C语言在构造数据类型的内容安排中,要重点介绍引入构造数据类型的目的,而非构造数据类型本身的编写格式;此外,C语言对于程序设计非共性的知识,比如二级指针(函数指针)、文件函数等内容,则可以在教材中删减。

(二)遵循学习规律,重整教材结构

学生知识建立的过程是认知与实践交替运用的过程,单纯的认知与单纯的实践都不能形成完整的知识建构,知识学习的过程就是认知、实践、再认知、再实践的循环过程,知与行不断交替以达到统一。前文所述,程序设计类课程对于高职院校信息类专业的学生而言,是入学之后的第一门专业基础课,既没有前导课,也没有同期学习的同类课,而且与他们在大学之前所接触的知识完全不同,是一片极为陌生的知识领域。因此,在教材的结构设计中,应注重将内容由浅入深、循序渐进,切忌将难点重点集中,以免让初学者遇到太多难题,磨灭学习的积极性。比如,数据类型和变量的定义这部分内容,是《C语言程序设计》学习之初的内容,可与C语言程序的小案例结合起来做简单的介绍,目的是让初学者了解数据类型、变量定义的基本方法及作用,当学习了函数的知识之后,可以再对数据的存储、变量的定义过程、变量的作用域和有效性加以深入介绍;还比如,运算符与表达式这部分内容,可以在简单程序设计部分只告诉学生如何使用,让学生较快地进入编程阶段,而在学生学习过三种基本结构之后,再将运算符与表达式进行深入透彻的讲解,则学生能够将结构化程序设计与运算符表达式相结合,对知识的掌握更加完整和彻底。

(三)构造学习框架,强化设计思维

在以往的《C语言程序设计》教学过程中,当要求学生对某个案例进行编程时,学生通常了解程序生成的大致结构,但是对程序具体的编写过程就感觉无从下手,究其根源就在于C语言教学方式与实际解决问题的途径相脱离。当教学内容偏重于语法规则和编程格式的介绍而忽视培养解题思路与解题方法时,学生就无法独立编写完整的程序。因此,为使学生理解和掌握编程方法,教材中各章节在设计编程案例时,应建立一个学习框架,按照“变量分析”“设计思路”“程序代码”“运行结果”“说明与思考”进行设置――对于某一个具体问题,首先分析解决问题需要设置哪些变量及变量的数据类型,接着分析解决问题的具体思路及步骤,给出程序流程;然后,写出程序代码并调试运行,得出结果,并对重点语句进行注释;最后,针对程序设计和实现过程中容易出现的错误及需要注意的问题给出必要的说明,让学生能够充分掌握程序设计整个过程中的思考方法。

(四)针对学生学习特征,适当降低难度

教材的面向对象是学生,所以在教材编写过程中必须首先考虑教材内容与学生的接受能力,高职院校的学生与本科院校的学生在学习态度、学习能力和学习习惯上还是存在一定差距的,高职学生相对来说缺少学习的主观能动性和钻研精神,因此,在保证知识点丰富的前提下适当降低内容的难度是编写高职教材需要遵循的首要原则。其次,高职院校的学生应注重其实际应用能力的培养,在面向高职学生的《C语言程序设计》教材中,我们可以删除或简化难度较大又不涉及程序开发共性的内容,如:浮点类型数据的存储格式、函数指针、数组与指针的关系等内容可以删除;C自增自减运算、位运算、共用体、文件操作等内容可以只介绍基本知识点而不做深入讨论。此外,教材中例题和习题的编排也要注意难度适中,尽量选择贴近生活又较为简单的案例,便于学生理解和接受,并且使之在编程过程中产生兴趣,让学生易于上手,在学习的过程中不断产生成就感,乐于对新知识进行更深入的挖掘和探索。

(五)夯实理论基础,注重实验环节

虽说高职学生注重的是技能培养,但作为信息类学生的第一门专业基础课,《C语言程序设计》还应起到奠定理论基础、训练编程理念的作用。因此,在教材的内容设计中,不能完全轻理论,还要把一些重要的理论讲述清楚。例如,三种基本结构(顺序结构、选择结构、循环结构)的流程及应用,要让学生能够将三种结构整合起来解决实际问题;算法是编程之真是思路之源,对一个问题首先要确定算法,才能根据算法步骤编写具体代码形成程序;“结构体”也是一种构造的数据类型,但对于数据类型的理解要更加透彻,有了数据类型的概念,对以后其他程序语言的学习就会更加轻松。教材内容设计上,还要加大实验环节的设计,实验内容按照设计性、验证性和综合性兼顾的原则设计题目,每道题目给出题目描述、题目分析、测试数据、提示代码和参考运行结果。其中,题目分析从变量分析和设计思路两个角度讨论,让学生能够充分体验程序设计整个过程中的思考方法,提示代码只是给出一小段代码,其余让学生进行补充,能够进一步锻炼学生的程序设计能力和创新思维能力,强调对学生分析解决实际问题能力的培养。

程序设计语言篇6

关键词:汇编语言;双语教学;机器指令;程序设计方法;实践教学

目前,在信息技术等相关专业,双语教学越来越受到有关专业教师的关注,这不仅是相关学科的教学改革与国际接轨的需要,也是现代高等教育发展的新趋势[1]。我校汇编语言程序设计课程组教师在多年承担该课程教学的基础上,从2005级学生开始,在计算机、软件工程、网络工程专业使用国外原版教材,采用双语教学模式讲授汇编语言程序设计这门计算机专业核心课程。在实施过程中,课程组对于双语教学的可行性论证、教材选择、教学方法与手段以及实验教学等环节,进行了有益的探索与实践。

1双语教学的可行性

汇编语言是面向机器的计算机底层语言,是软件和硬件的连接纽带。汇编语言程序存储开销小,运行效率高,它能够精细地控制硬件资源,具有高级语言无法替代的功能。从计算机教学体系上来看,汇编语言是计算机专业学生知识结构所不可缺少的一部分,它为后期开设的接口技术、计算机组成原理、计算机系统结构、操作系统、编译原理等课程,打下良好的基础,对于学生今后向更深的计算机专业领域拓展,起到重要的奠基作用。

1) 教学内容及教学目标。

汇编语言程序设计课程主要包括以下主要内容:

① 计算机中数的表示、微处理器、寄存器及其功能、存储器及存储模式、输入输出设备;

② 汇编语言的寻址方式、基本指令及语言要素;

③ 分支与循环结构、子程序结构等程序设计方法;

④ 高级汇编技术如宏指令、条件汇编等;

⑤ DOS及BIOS功能调用。

通过这门课程的学习,学生应熟悉汇编语言指令结构、掌握汇编语言程序设计方法、能够阅读、分析汇编语言源程序并具有编写、调试程序的基本能力。

2) 双语教学的有利条件与难点。

鉴于汇编语言程序设计课程的目标是训练学生利用机器指令编码,而机器指令是由CPU的指令系统决定的,其编程语言是基于英文助记符的符号语言,所以,汇编语言的编程规范与课程的教学语言采用母语还是外语无关。换言之,即使是用中文授课,学生在完成编程作业时,编码同样要采用基于英文的汇编语言源语句,从这点上看,对于汇编语言采用双语教学不仅不会增加学生的作业负担(实际上几乎对于所有的计算机程序语言都如此),甚至对于学生记忆和理解汇编语言指令还有一定的促进作用,这其实是一个有利之处。

但对于汇编语言程序设计课程采用双语教学,也存在着不少难点。例如:

① 汇编语言是面向机器的语言,它不像面向用户的高级语言那么接近自然语言,学习汇编语言要在了解硬件的基础上,准确地使用机器指令对寄存器、内存单元、接口地址进行操作并编码。这种“软硬兼施”的前提要求,往往使初学者有畏难思想;

② 利用汇编语言编程时,为了完成基本的输入输出操作,须频繁地将输入数值字符ASCII(American Standard Code for Information Interchange)码串转换成机器内部的二进制数值,或者将机器内部的二进制数值转换成ASCII字符串,然后通过编程进行DOS(Disk Operating System)功能调用或BIOS (Basic Input Output System)功能调用才能执行输入输出字符功能。初学者理解这种转换的意义和熟悉其功能的编程大多有一个较长的适应过程;

③ 若采用原版英文教材,将使得学生在解读文本时难度系数增加。

3) 双语教学的可行性。

能否对汇编语言程序设计课程采用双语教学?课程组教师分析了以上利弊,认为除了在原版教材的文本学习的语言载体上增加了难度之外,其他有关专业学习的技术难点在使用中文教材时同样存在。以课程组教师多年承担汇编语言程序设计课程的教学经验,技术难点都能够在教学过程中得到解决;而针对原版教材语言载体的难点,一方面由于普通高校本科二年级学生,其英语水平具备了一定的原版教材的阅读基础,另一方面,课程组也将在双语教学的过程中,研究教学法并指导学生培养对原文资料的阅读和学习能力。鉴此,课程组决定从我校计算机科学学院2005级学生开始,使用英文原版教材讲授汇编语言程序设计课程,这是我们对于计算机专业必修课程采用双语教学的首次尝试。

2教材选择

选择一本优秀的教材,是保证教学质量的前提。自1992级到2004级学生,我们采用的教材是由清华大学出版的《IBM-PC汇编语言程序设计》,其作者为沈美明和温冬婵教授。这本书内容详尽、案例丰富,习题全面[2],历年来的教学效果证明它是一本非常优秀的教材。

我校计算机专业的汇编语言程序设计课程在第三学期开设,其理论课时为48 学时。为了高效率地讲授课程内容,尽可能少地增加学生负担,我们拟定了选择英文原版教材的原则:内容精炼、重视例证教学、课后习题丰富。并且,考虑到个别英语基础薄弱的学生需要有一个逐渐过渡的学习过程,教材最好有相应的中文译本。

在参阅多本原文教材后,课程组重点讨论了机械工业出版社2004年11月出版的原版教材《80x86 Assembly Language and Computer Architecture》,其作者为美国田纳西州立大学Richard C. Detmer教授。此书的中文翻译版教材也已由机械出版社于2006年1月出版。《80x86 Assembly Language and Computer Architecture》一书为本门课程的双语教学提供了如下有利条件:

1) 内容精炼、习题丰富。该书包括了汇编语言程序设计中有关编程语言、编程方法的主要知识点,它与清华版教材相比,不含外设接口编程的内容。考虑到我校计算机专业教学大纲中,在汇编语言程序设计之后开设了“接口技术”课程,所以,可将这部分内容安排在后期的“接口技术”中讲授,同时也使得汇编语言程序设计课程的理论学时得以精简。该书各章节均安排了丰富的习题和编程练习实践题,有利于学生的学习和复习。

2) 实用的软件环境。该书重点采用了例证教学,每一章节都包含实际案例。用于汇编语言程序进行汇编、链接、调试的软件附带在一张CD中,其中,调试软件采用了先进的windbg平台[3]。

特别值得指出的是:该书提供的软件中有一个IO.H文件,这个文件中包括了有关的头文件和6个输入输出功能的宏文件。程序员在编程时,只须在自己的源程序中包含IO.H文件,就可以调用宏功能方便地完成数值字符串的输入或输出,不需要程序员频繁地作字符与ASCII代码的相互转换操作,大大降低了输入输出编程的复杂度。这样,在学生初学编程时,能够暂时回避繁琐的输入输出底层操作,重点聚焦在掌握指令系统、程序结构等主要知识点上。由于软件环境支持初学者方便地实现输入输出界面的编程功能,因此更容易给学生的编程带来信心,使学生有兴趣学习这门较为困难的计算机语言。当学生具备一定的编程基础后,再分析IO.H文件中的宏指令,让学生了解并掌握输入输出功能的底层实现。殊途同归,最终仍然可使学生达到掌握底层I/O编程的教学目标。

综上所述,课程组确定以《80x86 Assembly Language and Computer Architecture》作为汇编语言程序设计双语教学的教材。

3课堂教学

为了保证教学质量,针对双语特点对课堂教学采取了如下措施。

1) PPT课件。多媒体教学是提高教学效率、增强教学效果的得力手段。课程组教师根据双语教学的特点,精心制作了汇编语言程序设计课程的全英文PPT课件。为了使学生强化记识相关专业术语,在介绍各章内容之前,PPT中列表并重点强调本章的专业术语,以利于学生阅读本章节的内容。PPT课件各章节的框架结构如图1所示。

2) 双语比重权衡。为了既达到双语教学效果又保证专业教学质量,课程组教师努力提高英语能力,任课教师均具备出国留学经历,能够胜任双语教学要求,在课堂教学中全英文板书,且英语口头表达占50%以上比重;另一方面,对于教学内容的重点难点以母语解释,以便同时兼顾不同英语程度的学生,保证学生获取专业知识[4]。此外,本门课程的课堂练习、课外作业、期末考试均采用全英文方式。从学生的接受程度和适应能力来看,以上比重的权衡是合理的。

4实践教学

实践教学是计算机课程教学中不可或缺的关键环节[5],对于双语教学的课程更是如此。课程组教师在实践教学方面予以高度重视,开展了如下工作。

1) 针对《80x86 Assembly Language and Computer

Architecture》一书的编程环境编写了《上机实验指导手册》,其内容包括程序的汇编与链接过程、windbg调试工具软件的使用方法以及各章的编程练习题和编程指导。

2) 在课堂上利用多媒体设备给学生演示汇编程序的编写、汇编、链接、调试等步骤,并且鼓励学生拷贝自己的BUG(问题)程序并显示到投影仪上,在老师辅导下现场调试,直至成功运行。这种极为有效的案例教学模式,深受学生欢迎。

3) 精心安排、设计上机编程练习,使能力强的学生有难度较高的编程项目可作,编程基础相对薄弱的学生,通过学习也能达到教学要求。

5教学效果

汇编语言程序设计课程的双语教学已在我校计算机科学学院05-08级学生中实施。90%以上的学生们对这门课程的教学予以了高度评价,他们在调查问卷中这样表示:

双语教学对程序设计课程非常有益,原版教材为我们营造了用英语学习专业知识的氛围。(ID:05061245)

使用原版教材,有不明白的地方不得不去查字典,自己写的程序代码也是英文的,就像整天泡在英语之中,无形之中,英语能力有了提高。老师上课时对于难点疑点,除了用英文表述外,也用母语详解,取得了良好的教学效果。(ID:05061020)

通过“汇编语言”英文版的学习,自己英文水平和专业知识都提高了很多,尤其对原版教材的阅读,知道了很多地道的表达方式,阅读英文的速度也大幅上升。(ID:06061115)

我喜欢采用英语进行计算机课程的教学,它可以使我们在走出学校后更快更好地适应市场需求,有助于我们今后的就业。(ID:06061012)

专业课采用英语教学提高了我的英语水平,让我切实感受到计算机专业的国际化要求,开拓了视野,同时也成为我努力提升自己,让自己的知识更适应国际化发展趋势的一个催化剂。(ID:06061116)

调查问卷中也反映出少部分英语水平较薄弱的学生,存在较多地借助中文翻译版教材的现象,这是在双语教学中应重点关注并予以改善的问题。

6结语

我校汇编语言程序设计课程组教师五年以来的双语教学实践表明,采用双语模式进行计算机专业课程的教学是可行的,在专业知识的学习和接受方面,不仅不会弱化教学效果,而且在学生的英语应用能力方面起到了有益的促进作用。现在,本门课程已被遴选为湖北省精品课程。课程组将更深入地研究教学法,进一步提高教学水平,为培养高素质的少数民族高新技术人才努力工作。

参考文献:

[1] 丁学钧,温秀梅,刘建臣. 计算机专业双语教学系统模式研究与实践[J]. 计算机教育,2007(7):71-74.

[2] 沈美明,温冬婵. IBM-PC汇编语言程序设计[M]. 2版. 北京:清华大学出版社,2001.

[3] Richard C. Detmer. 80x86 Assembly Language and Computer Architecture[M]. 北京:机械工业出版社,2004:53-58.

[4] 秦奕青,佟俐鹃,赵刚. 计算机学科中的双语教学实践研究[J]. 现代教育技术,2007,17(11):105-107.

[5] 林福山.“汇编语言”教学过程探索[J]. 教育探索,2006(4): 89.

Study of Bilingual Teaching Based on Assembly Language Programming

TONG Xiaonian, LEI Jianyun, TANG Wan, XIONG Zhiyong

(College of Computer Science, South-Central University for Nationalities, Wuhan 430074, China)

程序设计语言篇7

关键词:汇编语言程序设计;教学改进

中图分类号: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 结束语

汇编语言难教难学是教师与学生的共识,但是作为计算机科学中一门低级程序设计语言,通过对它的良好掌握,确实可以促进对计算机软硬件底层的了解,而这又能促进编程能力的提高。作为教师,在教学中应该不断尝新的教学方法,不断积累经验,只有这样,才能把这门课上好。

参考文献:

程序设计语言篇8

关键词:双语教学;程序设计语言;教学质量

DOIDOI:10.11907/rjdk.171166

中图分类号:G433

文献标识码:A 文章编号:1672-7800(2017)006-0222-04

0 引言

国际通行的双语教育基本要求是:在教育过程中有计划、有系统地使用两种语言作为教学媒体,使学生在整体学识、两种语言能力以及这两种语言所代表的文化学习及成长上,均能达到顺利而自然的发展[1]。在这里,第二种语言是教学手段而不是教学内容或科目[2]。

双语教学的目标具有双重性:①对本科生开设双语教学,可以培养英语口语、阅读英语教材、英语资料和英语文献的能力,为进入研究生学习打下基础;教师可通过双语教学,培养和锻炼阅读和撰写英文paper的能力;②双语教学的目的是帮助教师更好地传输学科知识,学生更容易地接收学科知识。

1 C语言双语教学现状

计算机类课程中,最适合双语教学的课程是计算机语言课程,学生一般最先接触的是C语言,理工类专业课程中讲授最多的也是C语言。

C语言本身就采用英语格式,这是此课程作为双语教程的最大优势[2]。学习C语言语法时不需要进行汉语翻译,只需对其英文本意进行直译,这是这门课程和其它非语言类课程的最大区别,也是其开展双语教学的主要原因。

计算机程序设计的知识源自国外,实施双语教学势在必行。如C语言的圣经《The C Programming Language》,《Thinking in C》,没有英文基础也可接收知识,但根本无法真正领会程序设计思想的精髓。因此,C语言实施双语教学,结合各种程序调试来加强对英文程序内容的理解,才能引导学生理解C语言程序设计的语法、逻辑和算法意义。

C语言开展双语教学已有多年,取得了一些成绩,但多停留在课堂理论知识上,对以下几个问题缺乏深入思考:①双语教学时第二语言的比例是多少?②双语教学中学生的英语水平和计算机水平如何?③虽然理论课采用双语教学,但实验环节如何理解英文的相关提示等信息?④双语教学内容选择是否合理?⑤双语教学如何设计实施?

2 C语言双语教学设计

C语言语法和程序设计思维是学科知识,双语是手段和方法,有效利用英语服务于C语言教学对教学效果影响很大。通过对上述5个问题的深入思考,以笔者学院开设的《C程序设计》双语课程为例,设计并实施了“多维”C语言双语教学模式。

C语言的教学设计应具备以下几个基本条件:①授课教师非常熟悉双语教学内容,能用英语交流程序设计方法;②学生具备一定的英语听说读写能力;③学生具备一定的计算机基础知识。

C语言的双语教学设计原则:①根据学生的英语能力适当调整英语授课比例;②根据学生计算机基础(背景),适当调整英语授课比例;③根据教学内容,精心选择英语教学内容;④根据学习情况适当调整英语授课比例;⑤基本概念、句法结构和语法结构等使用准确的英文表达;⑥基本概念、句法和语法结构的解释和使用说明使用一定比例的汉语进行讲解;⑦设计出的程序要保证在符合C语言语法、句法的条件下,使用一定比例的英语表达;⑧算法可以采用自然英语或伪代码形式表达,帮助学生用自然思维去理解;⑨使用英文表达调试程序,尽量使用英文解释程序调试问题;⑩授课资料、教材、学生作业、实验指导、测试和考试应保证一定比例的英语表达和一定比例的双语表达。

C语言双语教学设计要根据学生实际情况和教学具体内容而定,内容应涵盖C语言教学的多个方面,始终遵循“从C语言教学本身出发”的基本思想。

3 CZ言“多维”双语教学实施

C语言实施双语教学,主要从“理论基础、控制结构,算法设计、程序调试和程序设计”5个维度展开。

3.1 理论基础

C语言的理论基础知识包括关键字、常量、变量、数据类型、运算符、表达式、预处理指令和C库函数等,这些基础知识要使用准确的英语来讲解。例如:

在这个程序中,出现以下几类基础知识:①int、return是关键字;②printf是C库函数名;③int是数据类型;④#include 是预处理命令;⑤main是主函数名。

其次,分析这几类基础知识:①return、include、main与英语中对应的单词含义几乎一致;②int汉语是整型,是英语单词integer的前3个字母;③printf是输出函数的函数名,其中 “print”在英语中有打印输出的意思,“f”是英语单词function(函数)的第一个字母;④stdio.h是一个头文件名,其中,“std”是英语单词standard的简写,“i”是英语单词input的第一个字母,“o”是英语单词output的第一个字母,“h”是英语单词head的第一个字母,“.h”是文件的后缀名;⑤This is my first C program!是一个字符串,是一句英文准确表达的句子;⑥\\n是一种字符常量,叫转义字符,起“换行”的作用。

首先要记住这些基础知识的含义,然后用双语讲解这些基础知识的作用、用在什么地方、如何使用。值得注意的是,在双语教学中,学生知道汉语解释是为了容易理解,但在后续教学中,应要求学生用准确的英文表达而不是汉语表达。例如:当学生看到、读到或用到“int”时,脑海里浮现的就是“int”,读的也是“int”,用的也是“int”,而不是去翻译它。学生理解和掌握了理论知识,后续理解和掌握声明或定义结构、句法、语法就能水到渠成。

3.2 控制结构

程序设计的三大控制结构利用人们日常生活思维来设计程序,使得计算机能按照人类思维去运行、计算结果。三大结构采用双语教学方式,有利于学生理解和掌握。

需要说明的是,这个教学内容与生活思维完全相似,学生比较容易理解。因此,可以增加双语教学比例,甚至采取全英文的教学模式。

3.3 算法设计

算法是程序设计之前必须考虑的问题,简单说就是让计算机解决问题的方法。算法的描述方法有很多种,笔者经过多年的教学实践发现伪代码很适合初学者。伪代码接近自然语言,便于初学者理解和掌握。在C语言双语教学的算法设计中采用英语伪代码更能消除算法与程序之间的距离感。

例如:设计一个能进行多次计算的四则运算器,直到用户强制结束程序。

(1)算法的自然语言描述:首先,输入计算用的两个操作数和运算符;接着判断运算符是哪一种(+、-、*、/),进行四则运算;然后输出运算结果;重复以上3个过程直到用户输入结束程序的命令。

(2)算法的英文描述:①input the expression as a+b,“a” and “ b” are operation numbers,“+”is operator;②judge the operator then select the right formula;③output the result;④repeat the three steps ahead until user input the character “N”,the program is end。

通过以上对算法的描述,特别是使用伪代码,大大降低了算法的抽象性,能看到程序的雏形。这时学生编写程序会觉得可以动手,增强了自信心。

3.4 程序调试

学习程序设计,除了学习学科知识(knowledge)外,更为重要的是计算思维(Computational Thinking)和编程技能(Computational Skills)训练。《C程序设计》实验课非常重要,汉化的C语言编译系统存在缺陷,学生应使用全英文版的VC++6.0调试程序。调试程序时得到的警告、错误提示和调试方法全部用准确的英文描述。如图1为程序改错题调试界面。

程序调试过程中,要求学生填写表1。

调试程序是对程序结构、逻辑问题、语法问题和算法进行调整和测试,经过阅读、调试和改错训练,学生对全英文的错误和警告提示理解力提高,调试程序也变得容易。

3.5 程序设计

程序设计是一个综合学科知识和编程技能的过程,学生要依靠所获得的知识和技能才能完成此项工作。首先给出程序结构,然后用英文注释说明程序的某个部分应该实现哪些内容,最后再逐渐把程序补充完整。

4 C语言“多维”双语教学效果

C语言“多维”双语教学实施后,在以下方面取得成效:①学生对理论知识掌握比以往牢靠,特别体现在语法和句法的掌握上,鲜有学生在程序设计时出现语法和句法的书写错误;②学生对三大结构的理解和实现比以前清晰;③利用英语伪代码进行算法设计,为学生从算法到程序的过渡建立了直观的桥梁,消除了对算法的恐惧性和对程序的神秘性;④从实验课完成情况看,学生会优先做程序改错题,再做程序填空}和程序设计题。在程序调试过程中,对很多错误和警告都能马上改正;⑤学生进行程序设计不一定一次成功,但通过多次重复思考和注释的过程,可以做到“设计一点、调试一点、完成一点”,最终逐步实现整个程序。

5 C语言“多维”双语教学总结和展望

笔者学校2014级和2105级计算机科学与技术专业学生使用同一份试卷考试,2014级未使用双语教学,2015级使用“多维”双语教学,成绩统计情况如图2~图3所示,成绩频数分布见表2、表3。

改革是为了提高教学质量,将双语教学应用于C语言是课程的客观需要。但是,在双语教学中如何体现“从C语言教学本身出发”是应该不断探索的问题。C语言“多维”双语教学模式可以移植到其它程序设计语言中,因为设计的5个维度是互相支持、互相补充的,体现了“循序渐进学习知识,由易到难训练技能”的程序设计学习方法。 “多维”双语教学模式还可以应用于计算机程序设计类或其它课程教学,以提高教学质量。

参考文献:

[1]朱小艳,白景华.软件学院C语言双语教学探讨[J].电脑知识与技术,2011,22(7):156-159.

[2]洪炎,王仲根.C 语言双语教学研究[J].科技信息,2010(25):99-103.

程序设计语言篇9

关键词: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.

程序设计语言篇10

关键词: C语言程序设计; break语句; switch语句; 循环结构

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2013)12-48-02

Analysis on “break” in course of C language programming

Li Xinran, Zhao Shanlin

(North University of China, College of Computer and Control Engineering, Taiyuan, Shanxi 030051, China)

Abstract: In the course of C language programming, the break statement has two functions. First, it is used in the switch statement, which can end Select Case. Second, it is applied to a loop structure, which can end this layer circulation. By analyzing the examples, the application conditions and functions of the break statement are revealed as well as things to note, and its application methods are clarified.

Key words: C language programming; break statement; switch statement; loop structure

0 引言

在C语言程序设计课程中,break语句的功能非常容易理解,在switch语句中可以利用break语句结束switch结构;在循环结构中可以利用break语句结束循环。但是,很多人并不清楚在什么条件下使用break语句,本文着重分析break语句的使用条件,以及break语句的常见用法。

1 break语句在switch语句中的应用

switch语句是多分支选择语句,一般形式[1]:

switch(表达式)

{

case 常量表达式1: 语句1; [break;]

case 常量表达式2: 语句2; [break;]

case 常量表达式n: 语句n; [break;]

default : 语句n+1; [break;]

}

switch语句执行过程是[2]:

⑴ 计算switch语句表达式的值;

⑵ 依次与1-n个常量做比较,当表达式的值与常量相等时,执行case后的语句;

⑶ 当执行break语句时,结束switch语句;

⑷ 如无break,则从匹配的case语句起,一直执行到break或switch语句末尾为止;

⑸ 如无匹配的case值时,则执行default相应语句。

switch语句说明:

⑴ switch后括号内的表达式可以是任意类型,会自动转化为整型;

⑵ 每个常量表达式的值必须互不相同;

⑶ 执行完一个case后边的语句后,转到下一个case继续执行,可以用break强制程序在执行完一个case后跳出switch结构。如果所有case中的常量表达式都不符合,则执行default后面的语句;

⑷ case后的多条语句不必用{}括起来。

由此可见,对于break语句的使用,当执行完某个case常量表达式后面的语句,想要结束switch语句,此时应该在相应语句的后面执行break语句。例如:

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0: a++; break;

case 1: b++; break;

}

case 2: a++; b++; break;

case 3: a++; b++;

}

printf(“\na=%d,b=%d”,a,b);

}

/*运行结果为:a=2,b=1。*/

分析运行结果,由于case 1:语句中是switch语句的嵌套,而且嵌套的switch语句后面没有执行break语句。如果在内嵌的switch语句后面执行break语句,则运行结果为:a=1,b=0,此时执行了break语句,就从switch结构中结束了。

2 break语句在循环结构中的应用

在循环结构中使用break语句的形式是“break;”,break语句的功能是强行结束循环,转向执行循环语句的下一条语句[3]。break执行流程如图1所示。

[表达式] [表达式] [语句][语句] [break;][yes][no]

图1 break语句执行流程图

如图1所示,当循环中执行了break语句,循环将提前结束。那么在什么样的条件下,循环结构中需要使用break语句,对此我们通过一个例题,来分析使用break语句的条件。

例题:判断某一个一位数n是否在一个不高于四位的整数m中出现。判断n是否在m中出现,需要将n与m中的每一位数进行比较,分离m中的每一位数,可以借助于算数运算符的求余和除,如果n==m%10,说明n在m中出现了,此时需要提前结束循环,这时要使用break语句。如果n!=m%10,那么就需要不断求新的m,利用m=m/10求得新的m;重复n与m%10的比较过程。通过分析得知,循环结束有两种可能,一种是n在m中出现了提前结束循环;另一种是n在m中没出现,当m的值变为0时结束的循环。由于此时不能判断是什么原因结束的循环,所以我们必须借助于标示变量来区别这两种情况。先将标示变量flag的值置为1,如果n在m中出现,则标示标量flag的值置为0。如果n没在m中出现标示变量的值不变,这样结束循环后,可以通过标示变量的值来判断n在m中是否出现。

通过上述分析得到循环中使用break语句的条件:当存在着两个独立的条件都可以使循环结束时,提前结束循环的条件就是使用break语句的条件;另外一个结束循环的条件作为控制循环的变量。此种用法通常借助标示变量来区别结束循环的原因。使用break语句时候,还需注意break语句只能结束本层循环,不能影响外层循环。

判断某一个一位数n是否在一个不高于四位的整数m中出现的算法实现如下:

main()

{ int m,n,flag=1;

scanf("%d%d",&m,&n);

while(m!=0)

{ if(n==m%10)

{ flag=0;

break;

}

m=m/10;

}

if(flag) printf("no\n");

else printf("yes\n");

}

3 结束语

本文分析了C语言程序设计课程中break语句的使用方法。在switch语句中,可以结束多分支选择结构;在循环结构中,可以结束本层循环。同时分析出在两种结构中使用break语句的条件,并举例说明break语句的用法和需注意的要点。通过本文对break语句用法的分析,能让学习C语言程序设计课程的学生更准确地掌握break语句的用法,为学好结构化程序设计语言的选择结构和循环结构程序设计打好基础。

参考文献:

[1] 谭浩强.C程序设计[M].清华大学出版社,2001.

[2] 赵山林.C语言程序设计[M].人民邮电出版社,2012.

[3] 赵山林.C语言程序设计[M].高等教育出版社,2010.