任务驱动法在《C语言程序设计》课程教学中的实践
摘要:c语言是一种应用广泛又比较难学的计算机高级语言,它接近硬件和系统低层软件资源,在教学上与其他语言有区别,本文结合教学实践,探讨了任务驱动法在本课程教学实践中的应用。
关键词:任务驱动法;c语言;教学;实践
中图分类号:g642.0 文献标志码:a 文章编号:1674-9324201309-0087-03
随着教学改革步伐的加快和后续课程的迫切要求,多数高校包括我们甘肃机电职业技术学院将c语言安排为第一计算机教学语言,且有些系部为了开设课程的需要在一年级就开始授课,这无疑给c的教学带来了新的压力和挑战。本人担任此课程的教学工作以来,在《c语言程序设计》课程中引入任务驱动教学方法,学生在任务中学习语法、算法和编程方法,教师着重引导,学生主动参与,很大的激发了学生的学习兴趣和培养实践动手能力。
一、任务驱动教学法的理论基础
字符串截取函数c语言“任务驱动教学法”是一种建立在建构主义学习理论基础上的教学法,它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念。将再现式教学转变为探究式学习,使每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。在这个过程中,学生还会不断地获得成就感,可以更大地激发他们的求知欲望,逐步形成一个感知心智活动的良性循环,从而培养出独立探索、勇于开拓进取的自学能力。在如何学习方面,构建主义提倡在教师指导下以学习者为中心的学习,也就是说强调学习者的认知主体作用,又不忽视教师的主导作用,教师是意义构建的帮助者、促进者。而不是知识的传授者与灌输者。学生是信息加工的主体,是意义的主动构建者,而不是外部刺激的被动接受者和被灌输的对象。
二、任务驱动教学法在《c语言程序设计》课程中的实践
1.确定问题(任务)。任务驱动教学法首先需要解决的是确定任务,选择与当前学习主题密切相关的真实性事件或问题(任务)作为学习的中心内容,让学生面临一个需要立即去解决的现实问题。在授课开始,提出问题,指出该问题的难点,围绕授课内容引导学生进行思考。例如,学习结构体一章时,可以让学生思考如何才能存放全班同学的信息(姓名、年龄
、成绩等),以往的基本数据类型可以完成吗?由此引入结构体数组的概念。以“选择结构”一章为例,该单元的教学知识点是掌握关系表达式、逻辑表达式和条件表达式,会使用if语句和switch语句。在教学过程中,从简单的问题着手,先要求学生自己编写程序,引入条件语句,同时在程序中讲解相关的语法知识点,提升高度。具体步骤:(1)任意输入两个数,求最大值,并输出最大值。(以此为例讲解if...else语句的用法及其执行过程。)(2)扩展第一步,任意输入三个数,求最小值并输出。(引入介绍六种基本关系运算符并给出优先顺序,学习计算关系表达式的值,强调值为逻辑值。)(3)扩展第二步,任意输入三个数,并按从小到大的顺序输出。(注意讲解其中的算法,为循环语句打基础。介绍三种逻辑运算符号及其优先顺序,学习计算逻辑表达式的值。)(4)移植第三步,求解符号函数,强调else子句与if语句的匹配原则。(5)推进第四步,进行if语句的多重嵌套。从键盘上输入成绩并按原则输出其等级为习题供学生练习。(6)改写第五步程序,使用switch语句构成多分支结构。(引入switch语句和break语句。)(7)进行嵌套if语句与switch语句互换。同时,还要注重算法分析,培养学生以算法为中心解决问题的能力。这是程序设计课程的教学重点,也是教学难点。对于c语言所涉及的算法,在精讲多练的同时还应注意这些算法之间的联系,与课程的相关内容结合。如选择法可以结合选择程序设计结构,筛选法、起泡法等
算法可以结合数组、函数部分进行教学。这样,学生在任务训练中熟练掌握这些算法的同时,也学习并掌握了相关课程内容,并逐渐养成在程序设计时进行触类旁通的思维模式。我这里强调了确定任务的重要性,但同时也要注意在确定任务时应该控制任务的难度。在教学层次上,要根据学生基础程度的不同,制定不同的任务标准,要求每一个层次的学生都要达到最低的标准的任务并向高一级标准努力。具体来说,一个课堂的练习要有多个层次的任务,第一个层次是基本的,体现课程主要内容,第二个层次略为扩充,体现一定的技巧和算法,第三个层次就是要求学生的设计无论从界面、风格、完整型还是算法、技巧、易用性等方面接近专业程序员的习惯和水平。举一个简单的例子,刚开始学生接触c语言课程时,有这么一个任务:
例:计算并显示2个数的和是多少?
任务递进:①计算并显示2个数的和,按任意键退出显示屏幕?②计算并显示2个数的和,以算术的形式显示?③输入两个数求和,并以算术的形式显示?问题(任务)的解决有使学生更主动、更广泛地激活原有知识和经验,来理解、分析并解决当前问题,问题的解决为新旧知识的衔接、拓展提供了理想的平台,通过问题的解决来建构知识,正是探索性学习的主要特征。
2.任务实施。任务递进中,通过新任务引出新的概念,新的语法,新的知识点。如:①按任意键退出显示屏幕,可以用以下两句来实现:printf(“please press any key to exit!\n”);scanf(“%c”,&c);\*假设字符型变量c已经定义*\或:printf(“please press any key to exit!\n”);getchar();\*这时不用定义字符型变量,节省了存储空间*\进而引出turbo c中的3个标准的输入函数getchar()、scanf()和以后要学习的gets(),在这里我结合具体教学中谈谈这三个函数。①这3个函数都属于标准输入函数,它们在头文件stdio.h中进行说明,其功能分别是:从标准输入文件得到一个字符、按所给字符格式的要求从标准输入文件得到若干项不同类型的数据、从标准输入文件得到一个字符串。显然,这3个函数在操作上存有共性。②我的处理是将3个函数捆在一起、硬着头皮往深里讲,所抱的指导思想是讲十分可能会七分,如果讲七分就只能会五分。这3个函数的操作对象都是标准输入文件,该文件在系统启动时自动打开,文件指针由系统定义为stdin。所谓标准输入文件,实际上是在dos的高层将键盘设备当作一个输入文件,将键盘操作视为文件操作;由于键盘是计算机必备的输入设备,所以又称它为标准输入设备或标准输入文件。显然,dos的这一高层操作必然要依赖于dos的低层功能,其具体机制是,系统为标准输入文件配有一个文件缓冲区、并支持行编辑操作,即:用户连续键入字符,只要用户不按回车键(r’),
则前面键入的字符可退回任意修改;一旦回车,键入字符将进入文件缓冲区,包括最后键入的回车符也将转变为换行符(n’)送入文件缓冲区,此后它们将不能再被修改。③这3个函数面对同一个设备对象,共享同一个文件缓冲区,在操作上均分成两个环节。第一个环节,如果文件缓冲区空,它们等待用户键入字符直到用回车结束本行操作;第二个环节,它们从文件缓冲区中提取字符,并进行各自的相应处理:getchar()函数将从文件缓冲区中截取一个任意字符(包括空格和换行符)返回。gets()函数将从文件缓冲区中截取若干字符(其中包括空格符),直到遇到换行符并将它转变为控制字符null’ ‘),并以它作为串的结束标志。该函数返回串的首地址。函数将按格式的要求逐项截取字符,将它转变为要求的数据类型后存入相应的地址。截取原则有3个:a.按格式要求的数据类型和域宽来截取。b.遇到空格符、制表符和换行符时截取告一段落。c.遇到与所要求的格式不匹配的字符时截取告一段落。注意被scanf()函数截取后,最后的换行符仍被遗留在文件缓冲区内,成为影响后续接收的垃圾。该函数返回成功匹配的数据项的个数。④scanf()函数有诸多的操作细节,在教材上已经展开,但当scanf()函数连续使用时情况就不太正常。(已经有好多学生在上机时向我问过此类问题了。)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。