时间:2022-09-24 18:09:39
序论:好文章的创作是一个不断探索和完善的过程,我们为您推荐十篇c语言程序设计实例范例,希望它们能助您一臂之力,提升您的阅读品质,带来更深刻的阅读感受。
1.钟表入题
首先,拿出准备好的钟表,(这时学生们都很好奇,原本趴桌子的同学都起来了,都问我这堂课要做什么)我不直接告诉他们要学什么,那样他们马上就会失去兴趣,我没有正面回答,而是让学生们猜两个问题:
(1)老师用钟表做什么?
(2)教师通过拧弦拨动钟表的指针,请同学观察,猜老师接下来要做什么?
开门见山的点出本课内容,学生往往不能全部集中精神,同时还会有部分同学觉得不感兴趣,直接就放弃学习。正处青春期的他们,富有强烈的好奇心,非常关注除课本以外的东西,我用一个钟表来调学生胃口,通过设疑的方式,来引着学生集中精神,从而引出课题。
接下来,老师继续出示问题:
观察表盘上有几个变化的量?他们之间是不是孤立无任何关联的?如果不是,那存在什么样的关系?其中哪个转的最快?哪个最慢?用学过的单层for循环能否表示出三个指针的转动关系呢?学生能够通过观察依次回答出结果,使复杂课题变得简单易懂,拉近了理论与实践的距离,学生顺畅入题。
为了让学生,能够清楚的知道本课的地位及为什么要学习本课,本课学了能够做什么,我设计了思维导图。学生通过观察,了解到原来多重for循环能够解决这么多好玩的问题,于是从内心里认识到多层for循环用途很大,从而将刚才被激发起来的兴趣进一步强化,为下一步的探究打下了情感基础。
2.共同探究
教师要求学生根据钟表的特点,列出三层for循环条件,结合前几节的程序知识,以小组为单位,合作探究出多重for循环的格式及执行过程。因为第一个环节,老师给出的问题比较细化,加之学生有一定的自学基础,学生可以衍生出格式及推出执行过程。为了激励学生,老师深入小组中,给每个学生评价打分,并在小组汇报结果时,根据出现的问题多少进行评价打分。
3.任务拓展,联系实际(能学,会学)
老师现在手里有100元钱,想给你们反餐费,我需要破成一元,五元,和十元的,班级共30名同学,要求破成30份,方案应该有很多,现在咱们想办法把这些方案都列出来,然后根据咱班人数,选一个最佳的破开,请大家帮我想想,方案都有哪些呢?
设计意图:百钱买百鸡,是多重循环的典型事例,我根据我班每个月都要反餐费这样一个活动,将百鸡换成了百钱破零钱,学生们就会更积极的参与,想帮老师解决问题。接下来,学生不一定能马上想到运用本课的多重for循环解决,而是习惯性的在纸上列出数学式,想通过数学方法解,可是会发现,用数学解决多解的题目很困难,于是,我提示大家,尝试运用本课的多重for循环来解。学生恍然大悟,结合钟表案例的分析,通过改变变量条件,循环语句很轻松的列出了程序,然后将程序录入计算机调试,电脑瞬间输出所有方案,学生们非常兴奋。真实地掌握了运用电脑,程序来解决实际生活问题的方法,体验了程序给生活带来的便捷,从而成功的突破了本课的难点。
4.小结评价,激励学生(助学)
中图分类号:G642.0文献标识码:A文章编号:1009-3044(2012)06-1351-03
Case Discussion Method in《C# Language Program Design》Curriculum Practice
LI Hai-bo,MA Ming
(Nanyang Institute of Technolgy, Nanyang 473004, China)
Abstract:According to C # language and the problems in the traditional teaching model, presents a case discussion teaching method. Class? room teaching will be dispersed sample combination, form a case module is introduced to the teaching practice, using case teaching method to arouse the students’ interest in learning, training students thinking of object-oriented programming and the ability to analyze and solve problems, in order to make students to learn in order to practise purpose.
Key words:C# language; classroom teaching; examples of teaching; teaching mode; case discussion
随着互联网技术发展越来越快,人们对网络应用程序的需求也越来越多,而C#(C Sharp)语言自从2000年问世以来,由于其安全、跨平台、面向对象、开发速度快等特点,很快得到用户和企业的青睐,成为当今最流行的网络编程语言[1]。为顺应社会需求,各高校计算机相关专业都将C#语言课程纳入到教学计划作为高年级的就业方向课程。但是在教学过程中很多学生反应C#语言涉及的概念比较抽象难懂,规则和类库繁多;知识点零散,容易出错;学生在遇到实际编程问题时感觉“无从下手”。作者从实际教学环境入手,对《C#语言程序设计》课程从教学方法、教学手段等方面进行了一些改革,并取得了较好的教学效果。具体改进措施和方法如下。
1案例讨论教学法对传统教学方法的改进
1.1传统教学方法存在的问题
目前,《C#语言程序设计》课程是我院07级、08级软件工程专业的就业方向拓展课程。该课程是C++语言的后续编程课程,目的是让学生在建立面向对象编程的基础能力上熟练掌握C#基本语法规则,并提高实际编程能力。以往的教学方法都是先从基础概念入手,再就C#语言所带的基本控件进行讲解,其中着重讲解C#如何操作数据库中的数据。每节课先以理论概念结合一些简单示例程序讲解,最后安排学生上机操作加以深刻理解。
在以往的教学模式中,教师按照教科书编排顺序进行教学,讲授大量编程知识,但学生遇到实际项目编程应用并不理想。平时的知识点和课堂示例过于分散,学生无法体会到各个知识点之间的联系;学生在学习过程当中感觉平时的知识点很抽象,课堂上掌握的只是些表面知识,并不能正确的理解和加以应用;即使课堂上听明白了,时间一长有些知识点又会遗忘。经常在实际的编程项目中感觉“无从下手”。久而久之导致学生逐渐失去了编程的兴趣和信心,觉得没有实际用途,并产生消极情绪[2]。
综上所述,产生问题的原因在于传统教学方法只是让学生掌握了基本编程知识,知识点之间的结合应用不够灵活,在实际项目应用当中想不到应该使用哪个知识点来解决问题,因此,为了改善这种现状,有必要对C#课程的教学模式进行改革和探讨。1.2案例讨论式教学方法
C#语言的课程内容既丰富又零散,要求学生既要理解一些抽象的概念、方法又要具备一定的编程、动手能力。这就要求教师在现有课堂教学时间当中充分调动学生的积极性、主动性和参与性,采用先进的教学模式和手段,师生共同配合较好地完成教学任务。
在传统教学中,当理论知识讲述之后,针对该知识点做出示例,可以使学生加深对该知识点的理解,掌握知识的使用方法。但 是平时的课堂示例只是单独的几个知识点,如何把相关的知识点联系起来完成某个功能模块,这是我们考虑的问题。
案例讨论式教学法是运用实际案例进行交互式教学的方法。在教学过程中,要求以实际的案例模块作为被解析对象,在教师指导下按照软件工程的思想将某一工程项目分析解剖,以其中某一模块为实现目标,学生共同参与案例的分析、讨论,寻找实现途径。通过这种教学活动达到学习知识、分析问题、解决问题的目的。
通常情况一个案例应用到多个知识点。比如一个登陆模块的实现,它需要熟练掌握C#的基本语法、IF…ElSE语句、数据库操作等知识点并结合使用。所以在本课程教学中,笔者经常在讲授一部分知识点后,把各个知识点串联起来放在实际的案例模块当中。先组织学生参与讨论,分析出该案例中某个模块需要哪些知识点来完成。学生通过文字描述整个模块的实现过程,最后指出知识点在整个案例实现过程中的具体环节,确定软件处理流程,上机编码。这种方法可以使学生遇到问题后回顾以前所学知识,并把知识跟实际案例相对应,从而解决实际问题。
经过一段时间的零散知识讲解之后,应该把几个零散的知识点贯穿起来,结合实际的项目需求,组织学生分析讨论。这样不但学到了知识,还可提高对案例的分析、解决问题的能力,能够达到学习与实践的统一。因此,案例讨论式的教学模式是一种帮助学生快速适应未来职业需求的学习形式。
3 C#课程案例讨论式教学实践与教学质量评价方法
3.1“案例讨论”教学模式的实践
在“案例讨论”的C#课程教学过程中,根据该教学程序将整个教学活动分为以下几个阶段:
(1)案例需求设计
案例应该是一项具有实际意义的工程任务,也是某一具体项目中的一个模块,它的选取是学习的关键[3]。首先,案例设计要目标明确,既要满足教学要求,又能有一定应用价值;其次,案例设计要符合学生的特点,案例中应该包含之前所讲授的部分知识点,难度要适中,在平时的教学情况下学生可以分组进行讨论、明确的目标后安排学生的学习,在这一过程中要对本班学生的具体情况进行分析,定义基本任务,还可以有延伸问题;最后,案例设计要符合面向对象和面向工程的要求,让学生按照软件工程的设计要求制定该案例的分析方案。案例整体结束后,师生可以共同评价其工作成果。
教师在设计案例时,设计一个案例,让每个小组讨论同一个案例,这样可以在后期进行组与组之间的对比,激励组内成员的团结性。
(2)案例讨论前的必要准备
在布置任务之前,学生已经学习了该案例模块的基本理论知识。但在实际教学过程中,每个知识点有可能都是独立的,缺乏知识点之间的联合应用,学生很难对一些理论知识系统理解,一旦马上进行项目应用往往难以适应,感觉“无法下手”等情况,因此教师在进行布置任务前有针对性的以前知识点进行必要的复习,同时也能对学生的学习情况,相关知识的掌握情况有一个了解。这样就为教学的开展做了必要的铺垫。
(3)组织学生讨论
案例讨论是以学生为主体,但一个案例模块如果让一个学生去思考,可能会在思路上受到限制、难度有时过大。如果让所有人都参与,则合作、分工难度过大,因此,学生的组织应以小组为单位,可自由组合也可由教师编排,每组5人左右,指定其中一人为小组组长,最后讨论出整个流程,并对整个流程分析出需要哪些知识来实现。这样既能锻炼学生的分析问题、解决问题能力,也能锻炼学生在项目开发过程中的沟通协调能力。
(4)采用“讨论式”教学方法,监控整个讨论流程
学生以小组进行讨论时,教师可以指定整个讨论流程,规定时间限制,一般讨论30-40分钟时间,先让每个小组针对该模块确定工作流程思路,写出文字描述的软件工作流程,再次针对每个小组自己设计的软件工作流,指出流程中需要的知识点名称,最终提交整个流程文档。由小组成员提出自己的见解和工作计划并在这一过程中相互启发、相互学习,经过讨论最终确定出较好的解决方案。在这个过程中教师应采用“讨论式”的教学方法,组织同学们一起对方案和遇到的问题进行讨论,充分发挥学生的主动性和创造性。
(5)教师讲评
教师将每个小组的最终文档汇总,如果思路流程正确优秀的小组可以得到好评及表扬,对思路有问题的小组教师可以适当的指出其问题的所在,加以纠正。最后教师就该案例,说出正确的软件工作流程,在该流程中所应用到以前学习过的知识点,让整个学生明确思路和解决方案,布置模块编码任务,从而为功能编码的实现打下基础。
(6)实际编码环节,提高上机质量
在传统的教学模式中,上机实验由教师根据教材内容进行编排,主要以书上的例题、课后习题为主,学生只是将程序敲入计算机,运行一下即完成了上机任务。虽然程序运行结果正确,但对程序本身的设计理解并不透彻,只是掌握了该知识点的使用方法,无法理解在实际的案例工作中应该如何应用。
在“案例讨论”的教学模式驱动下,以案例讨论为主线,明确遇到问题首先应该考虑使用以前的哪些知识点解决,待思路和知识点完全确定后,再进行编码,这样可以有效的解决学生遇到实际项目时难以下手,也不知从何下手的问题。最终以讨论文档和案例程序为阶段考核和评价的依据,充分利用实验环境和条件,加强上机实验的应用效果,保证教学质量。
3.2教学质量评价方法
C#语言是一种面向对象的程序设计语言,针对C#语言及“案例讨论”中理论学习与实践并重的特点,在考核过程中采用新的教学质量评价方法,即将考试机制与案例讨论实现有效结合,综合评定教学效果。
以往的考核形式多为期末笔试+平时成绩(出勤、作业等),这种评价方式虽然能反映学生的学习态度及对一些基本概念、知识、理论的掌握情况,但无法全面反映出学生对知识点实际的理解和灵活应用,因此将考核形式变为期末笔试+案例讨论报告+案例程序,其中期末笔试主要检验学生对基本概念、语法、结构的学习和掌握情况,测试的是学生的基础理论部分,这部分成绩可占整个评价结果的50%;而案例讨论也作为一项考核内容,重点考核的是学生的分析问题解决问题的能力,最终以平时的讨论报告为主要依据,因此其成绩将占整个评价结果的25%;最后一个部分为项目源代码,主要考察学生的实际编码能力,按小组分工给出具体的分数,占整个评价的25%。
采用案例讨论为核心的教学模式,将原有的以“课堂、教师、书本”为中心的架构变为以“课堂示例、案例分析、实际应用”为中心的架构,将所学知识与实际应用紧密结合,学生既学到了知识又得到应用锻炼;教师既完成了教学又培养了学生的能力,达到了“教书、育人”的双重目的[4]。
4结束语
案例讨论教学对于语言程序设计课程来讲是一种比较有效的教学模式,它突破了传统教学模式,让学生学习一段基础理论知识之后,通过对实际案例问题的分析来理解掌握知识点,这样不仅能快速地掌握所学知识,也为代码的实现打下了坚实的基础,而且能够培养学生的社会责任感和团队合作能力,提高学生的具体分析能力和解决实际问题的能力,培养出的学生能很快适应市场需求,有助于解决学生的就业问题。因此,案例讨论教学方法不仅适合计算机程序设计语言教学的需要,也是应用型软件开发设计人才培养的一个有效途径。
参考文献:
[1]吴晓艳. C#语言程序设计精品课程建设的探索[J].科技信息,2010(25):48-50.
[2]蒋卫祥,朱利华.项目教学法在JavaWeb程序设计教学中的应用[J].科技信息(学术版),2006(9):410.
[3]李桂琼.程序设计课程的教学改革初探[J].计算机时代,2007(8):73-74.
[4]吕晓华,李素朵,张燕.任务驱动教学模式在java课程教学中探索与实践[J].北京:硅谷,2008(9):180.
[5]张悦.项目驱动教学法在C语言课程中的应用[J].职业教育研究,2007.
一、C 语言程序设计的教学现状
C 语言程序设计集抽象性、逻辑性、实践性于一身,在教学过程中解决好这三性就能提高学生的学习兴趣,减轻学习压力。传统的C 语言程序设计教学中,主要以教师讲授为主,且在教学过程中采用的大多是纯数学的抽象案例,这对于高校学生,尤其是独立学院学生而言,既抽象又枯燥无味,因而难以理解和接受,起来自然没有动力,导致课堂教学质量不高,学生学习兴趣不浓,学习效果不佳,不能真正理解程序设计的精髓,进而普遍反映C 语言难学。如何借鉴先进的教育理论和技术,转变教师角色,真正确立学生学习的主体地位,充分调动学生学习积极性,成为教学改革当务之急。
二、独立学院学生素质特征
独立学院是高等教育发展过程中出现的新生事物,它有自己独有的特征,应用型人才的培养是其目标,学生的素质与普通高校学生的素质特点又有一定差异性,若按照传统的教学模式,大多数学生的课堂听课情况不容乐观,注意力难以保持持续集中,如何保持较高的课堂效率也就成了每位教师所面临的一道难题。针对这一问题,笔者一方面通过走访有经验的老教师,了解独立学院学生的学习习惯,另一方面通过对学生进行问卷调查及当面交流,对独立学院学生素质情况有了较为充分的了解与认识。
针对独立学院大多数学生一方面学习自觉性不高、依赖性强,往往满足于课堂上所学,缺乏刻苦学习精神,但另一方面对自己感兴趣的课程又十分喜爱,笔者根据其活泼、好争辩的特点,有的放矢的进行了教学改革,使课堂效率和学生的学习积极性都有了显著提高。
三、教学改革的重点
根据独立学院培养应用型人才的目标,以及独立学院学生的素质特点,结合自己多年的教学经验,通过对传统的“ C语言程序设计”教学模式进行改革与实践,变老师主导型教学为与学生交互型学习的教学过程,在教学过程中不断探索新的教学方法和尝试先进的教学手段,首先,对教学用例进行了调整,用生活中常见的案例原型进行讲授。其次,充分利用现代教育技术资源,将实验环境搭建于课堂之上。从备课——上课——上机实践,进行了一系列的改革探索,很好地解决了 C语言程序设计教学中出现的种种问题。结果表明:教学改革后,课堂气氛活跃了,开小差的同学少了,听课效率上去了,学生学习主动性也加强了,课外主动学习的兴趣浓了。进而,程序设计能力得到了普遍提高。
1.培养学生学习兴趣
程序设计是一种能力的培养过程,这就要求在教学时注重对学生的编程能力培养。而能力的培养主要是靠强化、靠反复上机实践去体会和理解的,是通过理论结合实践,不断启发、引导,采用先进的教学方法和与时俱进的教学体系实现的。在教学之初,首先给出 C语言的用途以及学习本课程的目的,指出当前流行的 Unix操作系统等基本上是采用 C语言实现的,许多网络及单片机、嵌入式系统以及各软件开发平台与 C语言的相关性,强调了 C语言的基础性和实用性。通过介绍,学生明白了该课程的重要性,对学习该课程产生了动力,增强了学习兴趣。在课程教学计划的制订中,我们注重加强实践与训练环节比重,按 1∶1的理论课堂教学与上机实践时间进行配比,还强调了理论教学内的实践环节,使得实践课时数实际上超过理论课时数。教学强调一个“练”字,学生通过反复实践,增强了学习信心,课外也自觉学习了。
在教学中,注重把教学重心放在解决问题的算法分析上,培养学生分析与解决问题的能力。我们知道,算法的实现是围绕内存展开的,所以,在教学改革过程中,通过强调冯·诺依曼结构下的计算机运行机制,强调了内存的重要性,在教学过程中始终贯穿内存分配及缓存机制的实质。这样,在讲授数组与指针、结构体变量的内存分配时,学生理解就相对容易多了。在案例的选择上,我们通常采用生活中的趣味性、实用型的诸如水果拼盘问题、超市 POS、学生成绩管理系统等相关模块进行教学。例:引入循环时,通过用一个简单的例子:一个同学准备围绕运动场跑十圈,请另一个同学帮忙计数,要求每跑一圈告诉所跑圈数信息。用通俗易懂,既能吸引学生,又易形成互动,活跃课堂,提高课堂效率的案例始终贯穿整个教学过程,注重从直观到抽象,从特殊到一般渐进地学习,既避免了许多教材主要是数学化抽象案例的弊端,也避免了学生在学习语法知识的过程中既要用心掌握好相关语法知识,又要分散精力去思考数学实现,从而减轻了学习负担,提高了学习热情。通过对案例实现过程的分析,引导、启发学生逐步理解与掌握分析解决问题的方法与步骤,使整个学习过程下来,既能轻松掌握语法知识,又能在分析与解决问题上有所收获。最终通过各案例相关模块实现融会贯通,加深对程序设计的结构化、模块化设计思想体会,真正达到学习 C语言程序设计的目的。
学习计算机程序设计语言是提高人们计算机知识水平的重要步骤。C语言作为当今最为流行的程序设计语言之一,不但是计算机专业的必修课,也是很多非计算机专业的学习课程[1]。但在C语言程序设计课程教学中,许多教师和学生都认为C语言涉及的概念比较复杂,规则繁多,使用灵活,容易出错,教师教学和学生学习都感到困难,并不同程度产生畏难心理[2]。C语言的教学长期以来过于注重语句、语法和程序设计技巧的讲授,对如何分析和解决问题讲得不够。教师没有把编程解题思路放在主体地位上,过于注重课堂讲授,对学生编程能力和调试程序能力训练不够,忽视了学生实际动手能力的培养。许多学生在学完后遇到实际问题还是无从下手,C语言程序设计课程的改革已经迫在眉睫。笔者根据多年程序设计课程的教学实践,试从教学内容、教学手段、教学方法等方面对C语言程序设计课程教学改革进行阐述。
1教学内容的改革
1.1课堂教学内容的改革
我院属于独立学院,学生整体水平较低,基础比较差,而程序设计课程逻辑性又很强,有不少学生不能很好地理解算法,编写程序也很困难,C语言基础打不牢还直接影响了后续专业课程的学习。如何改革C语言课程,进一步提高教学效果,成为专业课程建设中的一个紧迫任务。
C语言程序设计课程教学内容主要包括C语言语法基础、程序控制结构、数据类型、指针、函数、文件以及应用等。从2008级开始,我校针对目前独立院校的就业情况,大力提倡学生多拿证书、多实践,力求以实际应用能力去比拼二本、一本院校。依据这种思想,我院对这门课的教学内容作出了相应的调整,对于计算机专业,课时由原来的64学时(理论40学时,实验24学时)变成80学时,其中理论为56学时,实验24学时,其他专业暂不改变。课程内容增加了等级考试中的数据库以及数据结构与算法、软件工程等内容,力求学生通过本课程的学习后无需再报培训班就能顺利获取计算机等级考试证书。实践表明,这样的内容及课时的改革,对提高二级过关率有很大的帮助。从2009级开始,我们学院又进行了全面的改革,全院工科专业(除计算机专业)的C语言程序设计课程由原来的64学时变为88学时,其中理论64学时,实验24学时,同时计算机专业增加一周的课程设计,要求学生综合运用所学的C语言知识开发完成一个小项目。教师在课堂上介绍初步的软件工程思想,让学生了解软件开发的各个阶段及所要完成的工作,然后引导学生按照软件工程的思想,对给定的课程设计项目进行需求分析、系统设计编码实现直至测试。学生完成全部工作后,要撰写课程设计报告,并进行答辩。
本课程所选用的教材在内容组织上,虽然依逻辑思维方式进行了归类,但难点还是较为集中,跨度大;概念讲得多,分析少;语言深硬,不够形象,较难理解。虽然教材在各章节也举了一些编程例子,但多数难度较大,适用性不强。本着“深入浅出,突出实用”的指导思想,在课堂教学过程中,我们对教学内容重新进行了归纳,将难点再次分散以缩小台阶,达到循序渐进。例如,C语言数据类型、运算符、表达式种类繁多,放在一块讲授,学生学习起来难度较大,于是笔者就刻意将算术型的数据类型、运算符以及相关的表达式先介绍,使学生学习起来感觉没有想象中的那么难;紧接着又教学生编写简单的、实用的C程序设计,然后引入基本输入、输出函数就顺理成章了[3]。这样一来台阶小了,学生的信心也增加许多,学习积极性很快就得到提高。对于深硬的语言叙述,则改用生动的比喻,进行详尽引导。
1.2实验教学内容的改革
C语言是一门实践性很强的课程,我们针对该课程的工程性和应用性,精心设计实践教学环节,注重实验、实训、课程设计的完整性、实践性,在内容的设计上突出可操作性、技能性和探索性,使实践教学环节内容与理论课程内容能够有机结合。C语言实践教学环节包括随堂实训/实验和课程设计两个部分。
为了突出实践教学,培养学生的知识应用能力,我们对实验内容进行了较大的改革,一方面保留基础性实验,例如:三角形面积计算、求一元二次方程的根、各类三角图形的绘制、简单的排序算法等基础编程实验,使学生能够较顺利地通过实验,并及时理解和消化课堂教学内容,获得一定的成就感。另一方面,增加一些实用性强、难度略大的实验,并组织学生讨论,通过讨论得出算法流程,然后上机编程调试。例如:要求分别用数组与指针,将一个字符串中的所有英文字母取出,并转为大写,然后再将它们倒序存放。做这个实验之前,学生先通过讨论,分别得出使用数组与指针进行读取英文字母及倒序存放的算法流程图,然后上机实验。这样一来,一方面有利于培养学生对知识的应用能力与问题的分析能力,更主要的是培养了他们的协作能力。另一方面用数组与指针不同的解题方法,有利于学生加深对所学知识的理解,让学生真正体会到C语言的灵活性,激发学生的求知欲。
另外,我们还对2009级计算机专业的学生设置了该课程的课程设计,要求学生综合运用所学的C语言知识开发完成一个小项目。教师在课堂上介绍初步的软件工程思想,让学生了解软件开发的各个阶段及所要完成的工作,然后引导学生按照软件工程的思想,对给定的课程设计项目进行需求分析、系统设计编码实现直至测试。学生完成全部工作后,要撰写课程设计报告,并进行答辩。实践表明,多种不同形式的实践教学,激发了学生学习的兴趣,发挥了他们的主动性和创造性。通过实践教学,促使学生将所学的C语言理论知识转化为软件开发所必需的职业技能,实现了学以致用的目的。
2教学手段的改革
在教学过程中,运用多媒体技术辅助教学,有利于激发学生的学习兴趣,发展学生的主体能力;同时由于多媒体信息量大,也能够优化教学过程[4]。目前,教学的主要手段是利用多媒体计算机、投影仪以及教师制作的PowerPoint演示文稿,完成课堂教学任务。
首先,学院(系部)可以集中教师的特长,制作一个优秀的教学课件,它既能体现新的教学方法,又能显示教学内容的轻重层次;既能供教师讲课时使用,又能供学生课余学习。
中图分类号:G642 文献标识码:A 文章编号:1003-2851(2011)09-0-01
一、引言
随着我国的高等教育的普及化,民办教育已成为我国教育体系的重要组成部分。C语言程序设计课程是我院部分专业学生必修的基础课程。该课程的教学目的是向学生介绍程序设计的基本知识,培养学生解决和处理实际问题的思维方法与基本能力,使学生具有初步的程序设计和程序调试的能力,为今后使用C语言解决实际问题打下良好的基础。为此,笔者在从事民办学院C语言程序设计课程教学的过程中,针对我院学生特点,对教学方法和实践教学环节的教学改革做了一些探索。
二、课程教学面临的问题
目前,在C语言教学中存在着以下几方面的问题:
(一)独立学院在校学生的基础比较薄弱。
(二)C语言牵涉到的概念复杂,规则繁多,使用灵活,使学生在学习时感到厌倦。
(三)缺乏较好的教学方法
传统的教学方法已经不能适应独立学院教育的特点,采取何种适合独立学院学生的教学方法,是教学改革的一个重点。
因此,面对新的教学对象,如何丰富教学方法、改革教学模式、加强对教学过程的管理、保障教学任务的顺利完成,是我们必需认真思考和解决的问题。
三、课程教学改革的实践与探索
(一)对比式教学的应用
对同一问题,引导学生从不同的角度去思考,找出多种方法来解决。比如,在解决1+2+3+….+100的和的问题时,可以采用for循环,或while循环,也可以采用do…while循环。这种对同一问题寻找不同解决方法实现的教学方式,有效地开阔了学生的思路,同时通过对不同循环的比较,能够找到这三者之间的联系与区别,加深学生对循环的理解和掌握。
(二)温故而知新
为了使学生能举一反三、触类旁通,每次教学结束时及时布置相关的课后练习,使学生在课后进一步复习巩固,同时在下一次课讲课之前,将上节课的重点以习题的形式让学生当堂完成,并且当堂给予订正与讲解,对完成好的同学给予适当的奖励,激发学生的兴趣。为学习以后的知识奠定坚实的基础。
(三)注重情感教育
教师无论在课堂上还是在课下都应该关心同学,了解他们的思想动态,及时与他们交流,解决他们各方面的困难。使学生从心理上能够喜欢老师,达到爱屋及乌的效果。
(四)加强实践教学环节
1、启发学生的学习兴趣,使学生的学习由被动变为主动。定期组织涉及到大量的典型应用的计算机程序设计竞赛,激发学生的学习兴趣,鼓励学生参与项目,使学生学以致用。
2、加大实验教学力度,真正培养学生解决实际问题的能力。对实验要有老师演示,学生模仿,到最后的逐渐放手,让学生自己来实现源程序编写、调试和运行。以锻炼学生的动手能力、创新能力和表达能力。
(五)充分应用现代教育技术
教学中采用电子演示文稿、大屏幕多媒体联机演示、网络教学等各种先进的教学手段,使课堂教学生动活泼,既提高教学效果,又提高教学效率。
1、充分利用多媒体技术将课程的重点难点以及抽象的内容通过动画的形式直观、形象、生动地展示出来,使学生更易于理解和掌握;2、利用网络将课堂教学延伸到课外,学生根据需要通过网络学习有关的内容。教师的课件和教学用资料上传到教学资源下载中心,方便学生课外学习和复习;3、建立QQ群,同学们可以在群里相互解决疑难,也可以通过在线老师解决,这样可以使遗留问题及时得到解决。
四、结束语
通过C语言程序设计课程存在的问题的思考和分析,针对现状,结合独立院校实际,结合教学和个人体会,提出一些改革的措施和想法,探索出一套适合于独立学院学生的教学方法。
参考文献:
[1]张天宝,王攀峰.讨论新型教与学关系的建构[J].高教研究,2001.
[2]沈军.C程序设计语言课程的教学新思路[J].电气电子教学学报,2000,(4):28-29.
中图分类号:G642文献标识码:A文章编号:1009-3044(2012)16-3921-02
CBE是英文Competency Based Education的缩写,其含义是以能力培养为中心的教学体系。它是近年来北美较为流行的一种教学模式。这种教学体系强调的是职业或岗位所需能力的确定、学习和运用。在北美,CBE从产生、发展、应用至今只不过二十几年,但其影响是十分深远的,是高等教育的一次技术革命;虽然我们已深深认识到了高等教育应以能力培养为中心,并做了不少尝试,但始终没有脱离“灌输式”的教学模式。
数据库程序设计语言Visual FoxPro(简称VFP)是支持可视化开发和操作的、面向对象的关系型数据库系统,它易学、易用、易维护,而且开发效率高、投资小,因此,在中小型数据库市场得到充分应用。目前VFP已成为各高校非计算机专业普遍开设的计算机程序设计课程。
VFP课程的常规教学方式对学生学会并应用好这门语言来说有一定的难度,主要表现在:教学内容没有创新性,没有突出实践能力的培养;学生学习目的不明确,学习积极性不高,上课的注意力不够集中;教学内容抽象,组织教学的形式单一,缺乏启发式教学,课堂教学与上机脱钩,与工程实践脱节,学生的应用能力不强。
对独立学院来说,主要是培养应用型本科人才,发展优质的大众化高等教育是我们努力的目标。因此,可以借鉴CBE教学模式,改革和完善数据库课程的教学内容和教学方式,以适应培养高素质应用型人才的要求。
1 VFP教学中存在的问题
根据多年的VFP课程教学经验,对该课程进行了分析和思考,VFP程序教学存在以下问题:
1.1教学内容枯燥
教学内容以理论知识为主,与创新性和实践能力的培养要求脱节。学生的编程思维不符合软件开发的规范要求,实践应用能力得不到提高。学生学习目的不明确,学习积极性不高。学生不知道为什么要学习VFP程序设计语言,学完后不知道怎么应用于项目开发。选择课程的教学内容要合理,重点、难点突出,与工程实践紧密结合。
1.2组织教学形式单一
传统VFP教学过程都是先上完理论课,再去上机练习课堂中的内容。不少学生上机很盲目,不知道怎么去联系课堂知识完成实验。VFP实验指导书没有依据学生所学内容进行编制,使学生很难按照规范完成综合程序的设计与开发。
1.3灌输式的教学方式
传统教学以教师为中心,以课堂为主体,上机只是作为验证理论的手段,不能使学生系统、全面地认识地掌握知识,不能激发学生的学习兴趣。因此,要变被动为主动,变"你要学"为"我要学",就应以学生为主体,以能力培养为中心来组织教学,使每一堂课都变成"我想学什么"和"我要如何学",充分调动学生的能动性。这样教师的作用不是向学生灌输知识,而是帮助和推动学生去建构自己的知识。这不仅是一个方法问题,而且需要从根本上转变观念的问题。教师只作入门性的、重点的、带有启发性的讲授,而不纠缠在每一细节,指导学生通过自己看书和上机掌握所学的内容。
2教学改革措施
根据独立学院非计算机专业VFP课程教学的现状和学生层次的特点(平均入学成绩较低,学习基础较薄弱,整体层次参差不齐),提出以培养应用型人才为目标,遵循教学规律,创新教学内容和教学形式,包容学生的不同特点,大幅提高教学效果。
2.1教学内容的创新
根据我院VFP课程教学大纲的要求,将创新性和实践能力的培养提到突出的位置。一是把课程教学与工程实践相结合,教学中引入项目实例,引导学生动手开发数据库应用系统;二是将整个VFP课程教学与课程设计,毕业设计,计算机等级考试,电脑大赛等有机结合到一起,通过综合训练,使学生较好的掌握应用技能,增强就业的竞争力;我们把实验内容分为基本阶段和提高阶段。基本阶段是贯穿在课程始终的上机实践环节,要求学生掌握VFP上机指导书上的各项基本内容,必须在实验课上保质保量地完成(如数据库的基本操作、查询与视图、基本表单、控件、类和菜单的设计等内容)。都要求学生自己设计,自己调试,教师只是起引导、辅导的作用;提高阶段在整个课程结束后的时间内完成,实践的难度有所增加,设计范围广,也更接近实用。例如设计学生学籍管理、图书信息管理系统等项目,要求至少5个数据表以上并互相关联,至少有4个以上表单项,能产生两个以上报表,有友好的人机交互界面、用户登录和访问权限、系统设置功能等等。这些项目可以简单地设计,也可以复杂地设计,有能力的学生可以拓宽思路,充分发挥。为了帮助学生顺利完成项目设计,教师可提供一个样例,但仅供参考,同时鼓励学生通过分析案例充分发挥自己的创造力,设计完成具有个性化的作品,使所学知识掌握得更加系统、牢固。通过这两个阶段的充分锻炼,使学生对VFP建立起一个完整的面向对象程序设计的概念。三是利用网络教学辅助系统中丰富的教学资源开拓学生的视野,活跃学生的思维,也使他们的学习不受教学课时的限制,提高学习的主动性和自主性。
2.2组织教学的形式创新
可以进行试点教学,将课程中重要的实践环节的教学场地改在专业机房,把多媒体教学和上机实践相结合,课堂中学生可以跟着老师边听边练,以练促学,真正达到学以致用的目的。课后学生通过网上作业系统和练习系统进行练习,教师随时可以通过考试系统考查学生的学习情况。CBE理论以企业所需要的岗位职业能力作为教学活动的中心目标,教师向学生提供职业岗位所需的知识、技能和态度,强调的是学生“能干什么”。根据职业岗位的需要确定学习内容,以胜任职业岗位的能力作为评价学生学习效果的标准,所学科目和内容体现“够用”为度的原则。将课程教学与工程实践相结合,让学生获得模拟项目开发的经验(比如制作学生学籍管理系统,图书馆管理系统等),将课堂教学、上机实践,课程设计,毕业设计等教学环节紧密结合,实现真正的项目驱动下的实例教学。通过这些方式有效提高独立学院学生实践应用能力,在个性培养和特色发挥的前提下,达到增重就业砝码和增加就业机会的目的。
2.3教学方式的创新
改变过去单一灌输式的方式,以分专题课堂讨论、创新性设计竞赛等方式激发学生学习兴趣,调动学生的学习积极性和主动性,注重引导学生提高解决问题的能力,把“以教师为主体”的教学方式转移到“以学生为主体”的方式。VFP课程理论知识多、内容难度大,在教学中应因材施教,课程中涉及了大量的实例讲解,教师应给学生理清思路,讲明来龙去脉,并善于用联想,用循循善诱的方法使学生掌握的知识“活”起来。为了引起学生的兴趣,首先把已往基于VFP完成的项目及学生做的优秀程序给学生演示,同学们感到编写程序并非是想象的那么难,要做一个程序员也并不难。在课堂中运用启发式的教学方法,始终让学生带着问题思考,激发学习兴趣,发挥学习的主动性和创造性。课堂教学中,不但要积极与学生交流,引导学生积极探索,而且还让学生上讲台亲自动手操作,将学生听讲的课堂变为鼓励学生主动参与、帮助学生表达自己观点、解释所学的知识的场所。这样可大大提高学生的学习主动性和积极性以及学生的实际动手能力。
CBE理论将职业工作态度融合在日常课堂教学过程中,强调学生的自学能力、与他人合作学习的能力。对传统的实践教育过程作进一步的探索、改革和创新,在独立学院开展以应用型人才培养为目的的特色教育课程改革。对VFP课程来说,以实践操作为载体,把教学场地改在专业机房,使多媒体教学和上机实践充分结合,为学生提供尽可能多的实践动手平台。这样一方面可以充分调动广大学生的积极性和主观能动性,促使其对专业知识产生更加浓厚的兴趣;另一方面,通过对实践过程的检验,可以促使学生在动手能力方面有一个质的提高,充分发挥理论与实践相结合的应用型教学优势,对于提高教学质量,无疑具有积极的意义。
3结束语
以能力导向(CBE)为基础教育的人才培养模式,通过教学内容、组织教学的形式和教学方式的创新,将VFP课程教学与实践环节紧密结合,激发学生学习的积极性与主动性,有效提高学生的VFP应用能力、计算机等级考试通过率和就业竞争力。
CBE理论认为能力是不能通过灌输而使学生掌握的,必须通过学生积极而主动的活动来培养,因此它强调学生的主体性和学生学习的主动性。打破传统的先理论教学后上机实践的教学方式,将课堂教学与上机实践结合。将基础知识与项目的案例结合起来。将课程教学与毕业设计,计算机等级考试等教学活动结合起来。将课堂教学与网络辅助教学系统结合起来。
学生的VFP应用实践能力得到了锻炼,编程水平比传统教学方式大有提高,学习的积极性和主动性大为增强,相应的计算机等级考试通过率提高。通过调研,制定教学改革方案;重新制定教学大纲,组织实施,对非计算机专业的VFP程序设计教学有一定的指导意义。既可以应用于本课程教学,又可向其他信息类课程教学成果推广,促进独立学院应用型人才的培养目标的实现。
中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2014)10-0066-02
一、引言
随着微电子技术的不断发展和广泛应用,计算机编程语言也越来越丰富,因而学生也被要求具有应对各种语言的学习应用能力,在掌握好C语言后,对于其它语言的学习则游刃有余。基于单片机进行应用系统开发,C语言作为一种高级的编程语言,无论是现在进行嵌入式系统开发的相关企业,还是当前的全国电子设计大赛等学生竞赛中,都越来越受到大家的关注,并将其作为一个主要语言开发工具。故本文提出的基于单片机的C语言教学方法,对结合单片机进行符合实际工程需求的硬件和软件开发的爱好者或学习者有很重要的意义。
二、教学对象
本学期本人所教授的主要课程之一是《C语言程序设计》,所面向的教学对象是大一新生,大多数同学由于在高中阶段很少接触电脑,对于语言的学习更是陌生,而且数学功底比较薄弱,同时,加上学习过程中大多数学生往往缺乏积极性和主动性,遇到困难不能刻苦钻研,往往选择放弃。因此,针对学生的基础情况,教学讲授的进度不能太快,教学的内容不能讲的太过深奥,而且教学方法要灵活多变,结合实际事物进行简单比喻来讲解,只有这样才能较为形象地教好C语言这门课。
三、C语言的应用地位
C语言是一门使用最广泛的程序开发工具编程语言,是极具发展前景的计算机高级语言。其作为一种结构化的程序设计语言,具有相当强的结构性、可移植性和功能性。通过采用C语言进行编程开发可以使众多开发者专心研究所设计程序要实现的功能及相关实现算法,从而有效减少开发和软件调试的时间。C程序设计具有良好的程序结构,对于模块化的程序设计非常适合,故通常会采用从上至下,追求逐步求精的结构化程序设计方法,来将所要实现的功能模块化,不同的功能通过不同的模块去完成。这样易于进行调试工作和方便快捷地管理好大型项目,从而最大限度地减少重复劳动。
四、单片机的应用教学现状
单片机的学习是我院电子类专业需要掌握的一门实践性非常强的专业课程,我院学生通过对其的实践性学习后,能够独立参加全国电子设计大赛,并能较好地完成比赛项目。为使我院的单片机教学效果更好,学生对该门课程掌握的更加牢靠,故需要对单片机的教学进行大胆改革,通过在C语言的课程教学上,结合单片机以及相关的硬件设计知识进行讲解。从我院电子专业开设C程序设计课程以来,通过学生所反映的情况是该门课程比较难学习,而且不知道他们在学完C语言后到底有什么用,能够应用到哪些地方,更不知道将自己的所学应用于单片机的开发中能不能实现目标。故根据以往教师的教学经验,并结合学生反映的情况考虑,本人觉得有必要作出这样的改进,在C语言的课程上,通过结合单片机及相关硬件设计知识来讲解C语言,并从以下几方面引起重视。
五、《C语言程序设计》的课堂教学
1.教学设计前的思考。《C语言程序设计》不仅是电子类专业理工科学生的一门计算机公共必修课程,而且C语言也是作为计算机等级考试(二级)的考试内容之一。C语言对于大部分刚进入大学的学生来说,也是一门比较难的计算机语言课程。要做好这门课程的教学设计,首先要对学生的具体情况有一定程度的了解。该课程通常的教学法是语法格式的讲解、语法要点的逐步讲解和通过例题对语法的应用讲解。这种机械的教学灌输思想枯燥无味,会使学生失去对该门课程的学习兴趣,所以,本人认为应该先要求学生课前对本堂课所要讲解的知识进行预习,并能识记有关知识点,将不理解之处画上记号,待课堂老师讲解时再认真听并理解所教授内容,这样通过教师为主导、学生为主体的方式学习,教师通过精讲相关的硬件设计实例,通过硬件设计所要实现的功能引出相关软件设计,进而将软件设计时所涉及到的相关C知识进行讲解,然后通过另一简单例子让学生自己去通过分析来巩固知识点。
2.结合多媒体的讲解,强化实验及实践能力。因为教师授课的主要对象是大学一年级新生,所以需要教师采用通俗易懂,并结合简单例子进行相关讲解,这样能够使学生容易理解和消化。教学过程中,采用多媒体,通过编程演示加深学生对运用的语法理解和深刻记忆。并把理论知识和硬软件的设计内容进行整合讲解,让每个学生独立完成实际应用实验题。
3.减少和消除学生对程序设计语言的排斥和畏惧感。本人在教学中会引导学生多读程序,在读的过程中领悟和提高。对于软件生存周期的设计、编码、调试、运行这几个阶段,本人可以通过C语言设计实例来体现,以培养学生编程中的工程思想。讲授课程时以提出问题、解决问题、深入拓展问题、再解决问题,对问题进行评价和优化设计的螺旋式滚动教学的方法,收到了不错的教学效果。
教学过程中,对于数组、指针等重要的知识点,则需要制作更生动的课件,提高学生的学习兴趣和主动性。例如,在讲解数组的冒泡法排序时,本人让7位同学分别拿着一个数据牌站到讲台,进行现场模拟气泡排序过程,通过第一次排序找到了该组中的最大值,经过第二次排序找到了次大值,通过现场的模拟以及班上同学的参与,使课堂更加丰富有趣,并且所有同学都能掌握气泡排序的过程。由于在教学中引入的现场模拟,使同学们更容易理解这些抽象的内容,更重要的是碰到类似的问题他们会触类旁通,从而慢慢培养出编程的兴趣。
六、实践培训操作
上机实验是学习程序设计语言的重要环节,自己编写的程序上机调试运行中,可能有很多想不到的错误,通过改正这些错误,可逐步提高自己对C语言语法的理解力。在课程的教学中,会进行阶段性的实训项目,将每一阶段的学习进行小结性的贯穿和提高。将相关的知识点融入到程序的编写中,从而巩固知识点并将琐碎的知识点做一个整合。暑假期间,对于电子爱好的学生进行集中培训,然后按照全国电子设计大赛的要求给大家几个题目做,这几个题目涵盖非常广的知识点,大家如果想编出程序就必须要找到课本的相应知识点进行复习,从而编出程序,学生普遍反映通过集中培训课的锻炼,他们的编程能力有了很大的提高,很多以前不懂的内容通过自己钻研也懂了,通过自己的努力以后也体会到了编出程序的喜悦感,可以说收到不错的成效。
七、结束语
C语言的教学重点是培养学生分析与解决问题的能力,这种能力的培养与学生的刻苦学习分不开,因此,在本人的课堂中会一再强调C语言不是看会的,也不是听会的,而是亲自动手实践练会的。基于单片机的C语言开发和设计,极大地促进了单片机在生产、生活各个领域的应用,提高了程序开发效率。因而,C语言学习效果的好坏,对今后单片机课程的学习具有深远的影响。
参考文献:
[1]向艳.C程序设计课程教学体系和模式探讨[J].计算机教育,2010,(3):112-114.
[2]谭浩强.C语言程序设计教程(第三版)[M].北京:清华大学出版社,2013.
Key words C programming Language; teaching organization; teaching method
“C语言程序设计”课程是计算机专业学生的一门程序设计入门课,是培养学生程序设计思想和能力的技术基础课,同时也为后续的专业课程奠定了坚实的基础。其中专业核心课程“数据结构”一般以“C语言程序设计”为辅助教学工具,学生在具备了“C语言程序设计”的基本程序设计思想和方法以及数据结构的基础知识后,才能进一步学习Visual Basic、Java等高级语言程序设计。因此,必须将“C语言程序设计”课程的教学作为计算机专业培养的核心任务。
1 “C语言程序设计”教学现状分析
目前,计算机专业“C语言程序设计”课程的教学大多还停留在传统的教学模式上,主要以教师的“教”为主,教师根据教学内容的组织讲授基本的概念、讲解例题、布置作业给学生进行上机练习,学生在教师的指导下完成编程练习。在教学的过程中,学生完全处于被动接受的状态,无法发挥学习的积极性和主动性,以至于大部分学生普遍反映“C语言程序设计”枯燥、难学,缺乏学习兴趣,学生普遍的编程能力较差。
由于新生入校后已有的计算机专业基础知识薄弱,学习方法欠佳,以至于学生在初次接触“C语言程序设计”这样抽象难学的程序设计课程时,都会难于正确把握课程的学习方法。因此,任课教师应该准确地分析学生的学习现状,深究原因,找到解决方法,能够最大限度地激发学生的学习兴趣,引导学生合理有效地学习,并且培养学生分析和解决问题的能力。
2 “C语言程序设计”教学改革
依据培养目标的定位,教师应以培养学生基础能力和提高学习兴趣为原则,合理地开展“C语言程序设计”课程的教学改革。为此,笔者结合“C语言程序设计”的教学体会,提出如下的观点。
2.1修订“C语言程序设计”的教学大纲,编写和选用适合计算机专业的教材
首先,教师应准确定位课程的教学目标和任务,“C语言程序设计”课程的教学目标主要体现在知识、技能和素质三个方面。其知识目标要求学生较好地掌握“C语言程序设计”的基本语法、语句、控制结构以及结构化程序设计的基本思想,这是学习本门课程的核心要求。课程的技能目标体现在使学生认识到算法、良好的程序设计方法及上机实践的重要性,并且掌握算法设计和结构化程序设计的方法。另外,在素质目标方面要求培养学生利用“C语言程序设计”分析和解决实际问题的能力。其次,教师应结合教学目标和任务合理组织教学大纲。鉴于“C语言程序设计”课程实践性较强的特点,教师还应根据教学大纲的要求,制定合理有效的实践教学大纲,制定实践教学内容和实施方案。实践教学内容应紧密联系实际应用,并强调充分调动学生的积极性、主动性和一定的团队协作能力,另外还应注重培养学生分析和解决实际问题的能力。
依据教学大纲中教学内容的组织和实践教学的设计,教师应合理地编写和选用课程的教材。目前,“C语言程序设计”方面的教材甚多,以清华大学谭浩强教授编写的《C语言程序设计程序设计》一书为代表的一系列优秀教材为课程的教学提供了较好的导向作用。但根据计算机专业的培养目标和课程的定位,教师应对教材的内容进行适当的调整。
另外,在教学过程中教师应严格按照程序设计的规范和方法分析和解决应用问题,应培养学生规范的程序设计方法和严谨的编程习惯。例如要求学生在日常程序设计练习中按照“问题定义―问题分析―算法设计―编写程序―上机调试运行”的流程实施,并且在算法设计环节使用规范的程序流程图描述算法。这样一系列的措施有助于培养学生良好的编程风格和习惯,为后续其它的程序设计语言的学习夯实基础。
2.2改革教学组织和实施策略,优化教学结构
由于“C语言程序设计”课程的实践操作性较强,学生在上机实践的过程中,不仅可以消化和巩固课堂所学知识,还可激发和提高学习兴趣、锻炼逻辑思维能力。教师应注重将课本上的理论知识和实际应用问题进行有机结合,提高学生的程序设计能力,进一步培养学生分析问题和解决问题的能力。因此,课程的教学组织主要分为理论教学、上机实践教学和课程设计教学三个环节。
其中,理论教学主要遵照教学内容的要求, 采用多媒体教学与传统板书教学有机结合的方式,实施理论与实践一体化的多媒体教学环境,实现交互式教学。其次,教学中应重视“兴趣引导”,激发学生学习热情,引导学生主动学习。另外,应注重以模拟实践教学为主线,提高课堂教学的教学效果。
上机实践教学以课堂理论教学为前导,内容设计应以巩固和综合运用主要知识点为主线,内容具备实用性,以循序渐进的任务驱动方式指导学生从简单的程序设计开始逐渐扩展到完成综合的程序设计,以由浅入深、由单一到综合的过程展开,符合学生的认知习惯和知识的拓展,使学生利用所学知识解决实际的问题,培养程序设计的能力。
结合课程的特点,课程设计环节应利用“C语言程序设计”的基础理论和上机实践课中学到的编程知识和编程技巧,通过布置具有一定难度、一定编程量的课程设计任务,使学生通过课程设计掌握高级编程语言的知识和编程技术,具备分析问题和解决问题的能力。
2.3秉承合理有效的教学理念,改革传统的教学方法
传统的“C语言程序设计”教学方法一般采用灌输式的单向教学法,学生被动地接收知识,并且教学知识点零散,建构系统的知识体系,另外理论教学和实践脱节,学生只会纸上谈兵,动手实作能力较差,不能利用所学的知识解决实际问题。因此,在教学过程中应重视教学方法的改革。“C语言程序设计”教学主要采用“任务驱动”、“案例教学”、“讲练结合”的教学方法,三种方法有机结合,合理地组织课程的教学。
“任务驱动”教学法要求按照教学目标的要求,围绕教学内容,合理地安排一个任务。其主要分为三个基本环节,首先提出任务,例如设计判定学生成绩等级的程序;进一步分析任务,提出问题的解决方法,主要设计程序的算法;最后解决任务,讲授解决任务运用的知识点,例中主要的知识点为选择控制结构的语法及应用。
“案例教学法”以综合的“C语言程序设计”程序案例为主线,贯穿所有章节的知识,课程教学具有系统性和连贯性。例如,提出“学生成绩管理系统”案例,实现成绩的录入、添加、修改、删除、查询、统计和排序等功能。通过分析案例,明确系统的基础知识和各个功能模块的相关知识点,如表1所示。
另外,“讲练结合”的教学方法主要应用于上机实践教学环境中,采取边讲边练的教学互动形式,完成程序设计实例。教师先讲解和演示与本次实践任务相关的应用问题和注意事项,学生按照要求动手完成实践任务,教师及时了解学生在实践中出现的问题,加以正确的启发和指导。最后教师对本次实践任务的完成情况进行总结,集中反馈出现的问题并提出解决方法。
2.4完善课程的考核方案,合理评价学生的学习成果
鉴于“C语言程序设计”课程理论和实践并重的特点,课程考核应主要分为理论考核和实践考核两大方面。其中理论考核以笔试为主,考试内容应遵照教学大纲和考试的要求,突出课程的主要知识点;实践考核主要以上机实践教学环节制定的任务和课程设计为考查对象,客观地反映学生掌握知识和运用知识的能力。
中图分类号: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 结束语
汇编语言难教难学是教师与学生的共识,但是作为计算机科学中一门低级程序设计语言,通过对它的良好掌握,确实可以促进对计算机软硬件底层的了解,而这又能促进编程能力的提高。作为教师,在教学中应该不断尝新的教学方法,不断积累经验,只有这样,才能把这门课上好。
中图分类号:G642文献标识码:A文章编号:1009-3044(2008)21-30486-03
The Research of Teaching Methods in "C Programming Language"
LIU Jian-you
(Zhaoqing Science and Technology Polytechnic,Zhaoqing 526020,China)
Abstract: C is a typical structural programming language, many colleges and universities use it as basic programming language. Students often complain about C language difficult to learn, to use, to build the application software, lack of programming and debugging capabilities. How to better carry out the C language courses teaching?Author on the problems that exist in teaching, with his personal experience in teaching and experience, talk about their own views, to promote the C language teaching.
Key words: teaching methods; teaching mode; thinking training; self-learning ability
1 引言
程序设计语言的种类多得难以计算,为什么要以C语言作为编程入门语言呢?还有人说为什么一定要学习C语言,干嘛不直接从C++学起?而且学C++不一定要有C语言基础,有了反而会有些内容混淆。还有人说C语言都已经过时了,怎么还要浪费时间去学?C语言在教学过程中,抱怨C语言难学,难懂,难用,在解决实际问题编制应用软件时往往无以下手,缺乏编程和调试的能力。。久而久之,学生对学习此门课程就会产生厌倦的心理,不但影响本课程的学习,还会影响以后相关课程的学习。本文针对以上问题,指出了如下措施:
2 学习《C语言程序设计》的意义
我认为在学习C语言之前有必要弄清学习的意义所在,这样才能让学生对其产生兴趣。兴趣是人类最好的老师,只有对其产生了兴趣,我们才能学好这门语言。
将C语言作为入门语言具有重要的意义。C语言是一门典型的结构化程序设计语言,它具有语言简洁、严谨,用途广泛等特点,能够体现结构化程序设计的优良控制结构,非常适合初学者。通过这门课程的学习,能够使学生掌握一门结构化程序设计语言,更为最重要的是能让学生树立用程序解决现实问题的思路和方法。为今后的学习打良好的基础。再学其他程序设计语言,就能够在短时间内迅速的掌握。
3 改革课程教学内容,重视算法的编程思想,培养创造性思维
精选课程内容是一项非常重要的工作,它是教学内容的核心部分,《C语言程序设计》的核心内容包括C语言基本语法、程序设计思想和程序调试方法。语法是任何一门语言的基础,同时,各种程序设计语言在基本知识点上是相同的,学生对基础知识的正确理解和准确运用,其意义是深远的。
C语言程序是由函数组成的,无论问题多么复杂,我们都可以将其看成是一个大任务,这个大任务又可化分成若干个小任务,将这些小任务解决了,那么大任务也就完成了。也就是说其任务只有一个,就是编写函数(一个main()主函数和其他函数)。执行程序时,从mian()的第一个“{”,开始直到最后一个“}”结束,其他函数只有在执行的过程中被调用才执行。
学习C语言程序设计不仅是为了掌握一种开发工具,更重要的是用计算机解决问题。而算法是解题的方法和步骤,算法就是对操作的具体描述,是计算机的解题过程。编制程序,就是根据算法,用具体的语言依据某种规则编写计算机执行的命令序列。因此学习语言的重点是锻炼分析、分解,最终归纳整理出算法的能力。在教学过程中,学生能否理解算法,并掌握算法,成为教学的关键。
在C语言的教学过程中,改革传统的语法学习内容,将算法教学融入到语言教学中。由于C语言语法的逻辑性较强、结构性要求较高,初学者刚接触的时候容易考虑不全。因此算法教学可以通过实例进行, 从最简单的例子入手,使学生在解决具体问题的过程中学习C语言的基本逻辑结构和语句。生活中到处都存在着算法。而对于同一个问题可以有不同的解题方法和步骤,可以让学生根据同一个问题提出不同的算法,并比较这些算法之间的优劣,并让学生根据分析对算法进行优化。通过对算法的优化练习,可以在无形中提高学生写算法的水平。
4 改革课堂教学模式,培养学生自学能力
在教学中可以使用下面的一些方法,提高教学效果,培养学生的逻辑思维能力和动手能力。
4.1 改变传统的教学方式
虽然这个话题是老生常谈了,但是现在部分老师还没有认识到这个问题的重要性,仍然是“教师单向灌输”的教学模式。教师首先要在教学过程中树立以学生为主体,老师为主导的教学思想,正确处理传授知识与培养能力、提高素质之间的关系;其次改变教学模式,偿试采用以下教学方式。
4.1.1 任务驱动教学方式
在教学过程中避免照本宣科、枯燥乏味,“任务驱动”是建构主义理论中的一种教学模式,是将所要学习的新知识隐含在一个或几个任务之中,学生通过对所提的任务进行分析、讨论,明确它大体涉及哪些知识,在老师的指导、帮助下找出解决问题的方法,最后通过任务的完成对学生知识的传授。事实上它并不是简单的给出任务就了事,重要的是要让学生学会学习,使他们学会从多方位、多层次、多角度去考虑问题。使学生认识到学有所用、学以致用,自然地产生学习的愿望和动力。
可以先给出一个比较典型的C语言编写的例子。给学生具体的演示,通过这个效果激发学生的积极性。要求学生在期末的时候编写出相应的程序。有了这个任务,在讲课的时候逐步的告诉学生每一章可以具体的实现例子的那个部分,让学生逐步的去实现相应的功能。他们实现了相应的效果,就会极大地增强学习的兴趣和热情。这样可以让学生在愉悦的过程中学好这门课程。
4.1.2 启发式教学
为培养学生逻辑思维和创新能力,在教学过程中,教师遵循启发式教学原则,通过各种教学方式和手段激发学生的学习欲望,积极投入到学习活动中,积极思维,发现问题,提出问题,并逐步解决问题。例如,在讲解程序设计举例时,不是简单地给出程序清单,而是从分析问题入手,继而找出解决问题的方法,再给出算法,最后编写出完整的程序,而在这一全过程,最关键的是每一步都采用与学生一起探讨的方式,让学生在启发下思考,在思考中解决问题,从而掌握独立分析问题、解决问题的方法。
4.1.3 互动式教学
互动式教学是教师驾驭讲台能力的具体体现。一个教师站在讲台上,要不断地扫视下面的学生,观察学生的表情,了解学生的接受程度,并能及时地调整教学的进度和步骤,必要时到达到学生与教师在课堂上互相之间的交流。允许学生在不明白的时候随时提出问题,教师根据实际情况决定是当场解答,还是课后解答。真正实现课堂上的互动,其教学的效果就会显著地提高。教师在教学过程中,还应当注意设置疑难问题,引导学生思考和探索,让他们的思想活跃起来。
4.1.4 项目分析式教学
为培养学生综合应用知识的能力,通过对完整的项目的系统分析,培养学生良好的编程习惯,善于获取他人经验的能力以及掌握综合运用所学知识的能力,从而真正提高编程水平。
4.2 激励个性化学习
在微观课堂上采用项目递进驱动教学法,改变满堂灌的做法,将学生的眼手脑全部调动起来。精心设计实例,给学生一个比较实际的切入点,通过老师的演示使学生感觉能够入手,然后再通过将此实例不断修改、扩充,引导学生参与到程序的编制过程中,在这个过程中,再将学生所作的程序展示,让学生来评判优劣,吸收优点,修改错误,引导学生进行优化。在这样的实例教学中,因为有提出问题、解决问题、扩展问题、再解决问题、对解决问题的方法评价、优化设计等几个环节,实际上是一个螺旋式滚动向前的过程,在这个螺旋式不断向前的过程中,能够非常自然地调动学生的参与,而且通过问题的不断扩展,通过一个问题的多种解决方法,有效开阔学生的思维,使得学生在课堂上真正地成为 “ 主体 ” ,教师扮演 “ 主导 ” 角色。 这种通过一个程序的层层推进,引入课程内容,使得学生的每一步学习都有基础,是循序渐进,螺旋式上升的过程,使学生的学习是在“走台阶”,而不是“三级跳”,效果很好。
4.3 加强对学生程序设计思维训练
《C语言程序设计》课程不仅仅是一般意义上的知识传授,要让学生掌握程序设计的基本方法,对学生进行逻辑思维能力的培养。在实际的教学过程中,我们发现有些学生平时学得很认真,对语法、语句等细节也很熟悉,但碰到稍微复杂一点的编程则无从下手,教师在教学过程中要树立正确的教学思想,即注重算法设计,加强学生的程序设计思维训练,帮助学生顺利地实现思维方式的转变,而不能只单纯地讲授语言的语法、语义、语用,应该将复杂枯燥的语法知识分解到一个个生动实用的程序实例中,也就是在教学过程中以程序设计为主线,有意识淡化计算机语言本身语句的介绍,而重点介绍程序设计,在分析程序和程序设计中熟悉语法、应用语句,掌握程序设计和解决问题的思路(算法),并把软件工程学的思想贯穿于算法分析和程序设计的过程中。一定要避免陷入这样的误区:教师一味地给学生讲解语句的功能和语法规则,使学生陷入冗繁的语法规则之中,形成以语言为中心的思维模式。这样教出来的学生语法背得滚瓜烂熟,只会生搬硬套,缺乏实际编程能力,所以教师应注重培养学生形成以算法为中心的思维模式。对于从未受过算法设计训练的初学者来说,可能会感到无从下手,对此,教师应该有意识地加强这种思维方式的训练,通过讲授一些常用算法、典型算法,如记数、累加、连乘、两数交换、求最大(小)值、迭代、排序、分类等为以后编写程序、软件设计奠定基础,同时典型算法熟练的掌握,也可增加学生学习的信心并提高学习的兴趣,同时培养学生的思维能力。
5 强化实践教学,培养学生动手能力
实行实践教学形式多样化,上机操作,老师通常让照着书本的例子进行验证,这样无法增加学生的成就感,使学生觉得很无聊,在《C语言程序设计》上机实验教学中,除传统的课堂实验外,还开展课程设计、典型程序分析与设计等实践环节,还可以教师组织C程序设计兴趣小组,组织C程序设计大赛,组织学生参与科研开发等,将每一阶段的学习进行小结性的贯穿与能力提高。将 C 的知识点都溶化到一个个实训项目的程序编写中。整个过程以学生独立完成为主,教师只提供必要的辅导。经过实践训练,尤其经过综合训练中模拟实际软件开发的演练,使学生得到了锻炼,进一步激发了学习兴趣,培养了问题求解和编程能力,还有利于培养探索和创新能力。
6 改革考核方式,全面实行考教分离
C语言课程所有考试均实行考教分离,这不仅促进了任课教师对教学的精益求精,而且也给了教师充分发挥、施展个人教学才能的空间。在考核方法上,考虑到高职院校是培养应用性的实用人才的这一特点,该课程除采用传统的笔试外,大胆采用更能反映学生知识应用能力的上机考试,这一考试形式非常受学生的欢迎。可以采用多种形式考核学生,重点考核学生的实践动手能力。
7 结束语
以上是作者近几年关于C语言教学经验的总结,在实际的教学过程中取得了良好的教学效果。笔者认为在教学过程中除了要使学生掌握C语言程序设计这门语言外,最重要的是要让学生树立用程序解决现实问题的思路和方法(算法)。学生能否理解算法,并掌握算法,成为教学的关键,这是也学习C语言程序设计的重中之重。
参考文献: