论文部分内容阅读
[摘要]本文指出了学习计算机语言的目的是学习程序设计的一般方法,并结合C语言的特点,提出了高校教师在课程教学的过程中应重点讲授结构化程序设计的步骤的观点;分析了概念和算法相似性对比讲授的作用,以及采用“任务驱动”和“竞争”相结合的教学方法在C语言实验教学中的成功经验:提出了依托校园网构建C程序设计教学平台的一般要求。
[关键词]C语言 计算机教学 程序设计方法 任务驱动 竞争机制
C语言程序设计课程作为高校计算机技术基础课程体系和教学内容的核心,在高校计算机教育中有着十分重要的地位。通过对该课程的学习与实践,不仅要培养学生在今后的工作中利用计算机解决本专业实际问题的能力,为后续专业课程的理论学习和实践提供有力的基础支撑,还要拓展学生的思维模式,培养学生面向工程应用的意识,增强实践技能。
计算机程序设计语言多种多样,每一种语言都在发展完善中,因此高校教师在教学中除了要使学生能熟练运用C语言进行程序开发以外,更重要的是引导学生从C语言繁琐的语法枝节中解脱出来,真正掌握使用计算机语言进行程序设计的方法,做到举一反三、触类旁通。下面笔者结合几年来从事C语言教学的经验,谈谈在C语言教学中几个比较重要的问题。
一、重视程序设计方法的讲解
学习计算机语言最重要的是让学生在学习的过程中体会计算机语言的精髓——程序设计方法。因为计算机的发展日新月异,没有人保证现在很流行的语言将来就不会被淘汰。但是不论计算机语言怎么变化,基本的程序设计方法是不会有很大变化的。掌握了程序设计的方法就是掌握了程序设计的灵魂,再通过学习相关的语法知识,就能够编写出任何一种语言的程序。因此程序设计方法的讲解是C语言课程讲授的重点。
在教学的过程中,教师要让学生在短时间内领会结构化程序设计思想是行不通的。教师在教学中可以由浅入深、循序渐进地引导学生理解结构化编程的思想。譬如,可以先让学生尝试设计一个简单的四则运算器,要求将每个运算功能用独立的函数来实现,并把参与运算的对象作为函数的参数。当学生完成后,让学生计算不同的算术式,从中体会结构化程序设计易于调试、移植的优点。这个任务让学生对结构化程序设计方法有了感性的认识。
在后续的教学过程中,教师应该把结构化程序设计的思想贯穿在整个C语言的教学过程,体现在每一个具体的程序当中。但是很多时候由于时间和教学进度的关系,教师往往只能简单地分析题意,然后直接给出程序流程图和程序。这样的讲解过程割裂了题目、程序流程图和程序三者之间的推导关系,学生自己编程时仍会感到无从下手。因此教师在教学过程中,应该首先教会学生如何由题意分析出算法,进而对算法进行图形化描述,绘出程序流程图,再使用相应的程序控制语句实现它。教师的言传身教在C语言教学中不仅有利于培养学生良好的编程习惯,还能帮助学生提纲挈领地掌握各个知识点。
二、不同概念和算法的对比讲述
《教学论》认为:“知识的对比是调动学生注意力的好方法,知识之间对比得越清楚,学生的注意力越集中,越能加强概念的理解与知识的掌握。”C语言中的概念比较复杂,规则繁多,而且内容前后衔接得很紧。教学过程中教师将前后的概念对比起来讲述,将会收到事半功倍的效果。比如,指针这一部分有很多相关的概念,如指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针等。这些概念很容易混淆,但是将这些概念对比起来讲解,学生就很容易理解了。这些概念的落脚点都在最后两个字——指针,表示它们是同一类型的变量。那么它们不同的地方在哪里呢?关键在于指针变量指向的不同,指针所指向变量的数据类型决定了指针变量的用法。通过这样的讲解,概念的定义就很容易理解,概念的用法也就可以统一了。
除了概念可以对比起来讲述,C语言中还有许多针对同一问题采用不同解决方案的算法。比如,数据的排序问题有冒泡排序法、选择排序法、插入排序法等,求解方程的根有迭代法、牛顿迭代法、二分法和弦截法。这些算法之间既有联系又有区别,讲清楚了算法的联系和区别,也就解决了整个问题。举个例子,用二分法和弦截法求方程f(X)=0的根,其原理都是在给定区间X1,X2内按照算法取得一个L值,用来替代端点X1或X2,从而循环形成新的区间,直到找到近似根为止。它们的算法大体相似,不同点就在于确定X0值的方法不同。所以这两个算法对应的程序结构完全相同,只是计算X0的表达式有所不同。这样的对比讲授大大提高了学生学习的效率。
通过对概念和算法的相似性进行对比讲授,帮助学生理顺它们之间的内在联系,指出异同,有助于学生对C语言中相关知识点进行横向和纵向的融会贯通,从而从整体上把握C语言的知识结构。
三、采用“任务驱动”和“竞争”相结合的教学方法
“任务驱动”和“竞争”相结合的教学法就是针对教学内容设计相应的任务,在不同层次任务的驱动下激发学生学习的主动性,从而提高学生应用能力的一种方法。贯穿在整个教学活动中的“任务”实质上就是考试题目,学生在精心设计的任务驱动下展开学习活动,由简到繁、由易到难、循序渐进地完成一系列任务。学生在不断的任务驱动下总结出清晰的思路和方法,培养分析问题、解决问题以及综合运用知识的能力,为在今后的学习中取得好成绩奠定基础。
在C语言实验课中教师可以先将课程的基本知识点融合在一起,为每一章节按照难易程度设计必做题和选做题,并作为任务布置给学生。在保证正确率的前提下,教师不限定学生完成任务的数量,允许学得好的学生一直往前做;对于学习欠佳,不能按时完成必做题任务的学生,教师应督促他们提前预习,课后复习,要求他们弄清基本概念,掌握必备知识,鼓励他们完成部分选做题任务;对于大部分能按时完成必做题任务的同学,应着重培养他们综合运用知识解决问题的能力。教师还可以组织各种竞赛,如开展擂台赛,强化竞技气氛,通过定期适当公布每个学生的学习进度,评出各期擂台赛的冠、亚、季军,激发学生学习的热情,鼓励他们为达到下一目标奋力拼搏。在实际教学过程中,教师要关心少数竞争意识薄弱的学生,要引导他们正确认识竞争,帮助他们解决心理困惑,让他们意识到在经过努力后也可以提升自己的层次,也会取得成功。
四、发挥网络教学优势
目前,C语言的网络学习资源大多是建立在简单的Web页面和其他常用文件共享的基础上,仅仅是课件或课程学习内容等学习资源的简单罗列和阅读。教师可以以校园网为依托,开发C语言程序设计教学网站,为学生构建一个自主学习和培养创新能力的平台。
学生在“任务”的驱动和“竞争”的激励下自主学习C语言时,要想超越他人必然要利用课余时间学习。当学习遇到困难吋,C语言程序设计教学网站可以成为学生自主学习的好助手。该系统应该按照教学步骤和教学规律将C语言程序设计知识点中具有代表性的概念提取出来,对相关、相似概念进行定义和描述,形成一个关于C语言程序设计课程的知识网络,并以框图形式直观地显示该知识的前导知识、后继知识、相关知识,便于学生可以快速、准确地定位所要学习的知识。同时该系统还应按照学生自身的学习要求重组学习内容,实现个性化学习。其中的程序举例还应从算法分析、流程图、源程序三方面来描述,让学生通过网站自主学习。
五、结构化程序设计语言向面向对象程序设计语言的过渡
作为对结构化程序设计语言的扩充,现在很多面向对象的程序设计语言,如JAVA、VC++等,都在保留C语言基本语法体系结构的基础上增加了面向对象的机制,因其功能强大得到了越来越广泛的应用。教学的过程中,教师应在学生掌握结构化编程思想的基础上,结合具体实例向学有余力的学生灌输面向对象程序设计的基本思想和思维方法,并在教学的后期有意识地引入继承和派生的概念,将函数公有、私有和保护成员的优点与C语言中函数封闭性的优点和缺点相比较,为今后学生自学其他面向对象的程序设计语言打下基础。
C语言的教学不应该拘泥于具体的某些语法规则,应让学生在学完C语言课程之后,感觉自己的编程思想有了一次革命性的洗礼,这样的C语言教学才是成功的。C语言教学过程本身是一个精益求精的过程,对于每一位教师,只要能把提高学生的学习兴趣放在首位,在教学过程中不断摸索,勇于进行教学改革,就会取得良好的教学效果。
责编 韦 微
[关键词]C语言 计算机教学 程序设计方法 任务驱动 竞争机制
C语言程序设计课程作为高校计算机技术基础课程体系和教学内容的核心,在高校计算机教育中有着十分重要的地位。通过对该课程的学习与实践,不仅要培养学生在今后的工作中利用计算机解决本专业实际问题的能力,为后续专业课程的理论学习和实践提供有力的基础支撑,还要拓展学生的思维模式,培养学生面向工程应用的意识,增强实践技能。
计算机程序设计语言多种多样,每一种语言都在发展完善中,因此高校教师在教学中除了要使学生能熟练运用C语言进行程序开发以外,更重要的是引导学生从C语言繁琐的语法枝节中解脱出来,真正掌握使用计算机语言进行程序设计的方法,做到举一反三、触类旁通。下面笔者结合几年来从事C语言教学的经验,谈谈在C语言教学中几个比较重要的问题。
一、重视程序设计方法的讲解
学习计算机语言最重要的是让学生在学习的过程中体会计算机语言的精髓——程序设计方法。因为计算机的发展日新月异,没有人保证现在很流行的语言将来就不会被淘汰。但是不论计算机语言怎么变化,基本的程序设计方法是不会有很大变化的。掌握了程序设计的方法就是掌握了程序设计的灵魂,再通过学习相关的语法知识,就能够编写出任何一种语言的程序。因此程序设计方法的讲解是C语言课程讲授的重点。
在教学的过程中,教师要让学生在短时间内领会结构化程序设计思想是行不通的。教师在教学中可以由浅入深、循序渐进地引导学生理解结构化编程的思想。譬如,可以先让学生尝试设计一个简单的四则运算器,要求将每个运算功能用独立的函数来实现,并把参与运算的对象作为函数的参数。当学生完成后,让学生计算不同的算术式,从中体会结构化程序设计易于调试、移植的优点。这个任务让学生对结构化程序设计方法有了感性的认识。
在后续的教学过程中,教师应该把结构化程序设计的思想贯穿在整个C语言的教学过程,体现在每一个具体的程序当中。但是很多时候由于时间和教学进度的关系,教师往往只能简单地分析题意,然后直接给出程序流程图和程序。这样的讲解过程割裂了题目、程序流程图和程序三者之间的推导关系,学生自己编程时仍会感到无从下手。因此教师在教学过程中,应该首先教会学生如何由题意分析出算法,进而对算法进行图形化描述,绘出程序流程图,再使用相应的程序控制语句实现它。教师的言传身教在C语言教学中不仅有利于培养学生良好的编程习惯,还能帮助学生提纲挈领地掌握各个知识点。
二、不同概念和算法的对比讲述
《教学论》认为:“知识的对比是调动学生注意力的好方法,知识之间对比得越清楚,学生的注意力越集中,越能加强概念的理解与知识的掌握。”C语言中的概念比较复杂,规则繁多,而且内容前后衔接得很紧。教学过程中教师将前后的概念对比起来讲述,将会收到事半功倍的效果。比如,指针这一部分有很多相关的概念,如指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针等。这些概念很容易混淆,但是将这些概念对比起来讲解,学生就很容易理解了。这些概念的落脚点都在最后两个字——指针,表示它们是同一类型的变量。那么它们不同的地方在哪里呢?关键在于指针变量指向的不同,指针所指向变量的数据类型决定了指针变量的用法。通过这样的讲解,概念的定义就很容易理解,概念的用法也就可以统一了。
除了概念可以对比起来讲述,C语言中还有许多针对同一问题采用不同解决方案的算法。比如,数据的排序问题有冒泡排序法、选择排序法、插入排序法等,求解方程的根有迭代法、牛顿迭代法、二分法和弦截法。这些算法之间既有联系又有区别,讲清楚了算法的联系和区别,也就解决了整个问题。举个例子,用二分法和弦截法求方程f(X)=0的根,其原理都是在给定区间X1,X2内按照算法取得一个L值,用来替代端点X1或X2,从而循环形成新的区间,直到找到近似根为止。它们的算法大体相似,不同点就在于确定X0值的方法不同。所以这两个算法对应的程序结构完全相同,只是计算X0的表达式有所不同。这样的对比讲授大大提高了学生学习的效率。
通过对概念和算法的相似性进行对比讲授,帮助学生理顺它们之间的内在联系,指出异同,有助于学生对C语言中相关知识点进行横向和纵向的融会贯通,从而从整体上把握C语言的知识结构。
三、采用“任务驱动”和“竞争”相结合的教学方法
“任务驱动”和“竞争”相结合的教学法就是针对教学内容设计相应的任务,在不同层次任务的驱动下激发学生学习的主动性,从而提高学生应用能力的一种方法。贯穿在整个教学活动中的“任务”实质上就是考试题目,学生在精心设计的任务驱动下展开学习活动,由简到繁、由易到难、循序渐进地完成一系列任务。学生在不断的任务驱动下总结出清晰的思路和方法,培养分析问题、解决问题以及综合运用知识的能力,为在今后的学习中取得好成绩奠定基础。
在C语言实验课中教师可以先将课程的基本知识点融合在一起,为每一章节按照难易程度设计必做题和选做题,并作为任务布置给学生。在保证正确率的前提下,教师不限定学生完成任务的数量,允许学得好的学生一直往前做;对于学习欠佳,不能按时完成必做题任务的学生,教师应督促他们提前预习,课后复习,要求他们弄清基本概念,掌握必备知识,鼓励他们完成部分选做题任务;对于大部分能按时完成必做题任务的同学,应着重培养他们综合运用知识解决问题的能力。教师还可以组织各种竞赛,如开展擂台赛,强化竞技气氛,通过定期适当公布每个学生的学习进度,评出各期擂台赛的冠、亚、季军,激发学生学习的热情,鼓励他们为达到下一目标奋力拼搏。在实际教学过程中,教师要关心少数竞争意识薄弱的学生,要引导他们正确认识竞争,帮助他们解决心理困惑,让他们意识到在经过努力后也可以提升自己的层次,也会取得成功。
四、发挥网络教学优势
目前,C语言的网络学习资源大多是建立在简单的Web页面和其他常用文件共享的基础上,仅仅是课件或课程学习内容等学习资源的简单罗列和阅读。教师可以以校园网为依托,开发C语言程序设计教学网站,为学生构建一个自主学习和培养创新能力的平台。
学生在“任务”的驱动和“竞争”的激励下自主学习C语言时,要想超越他人必然要利用课余时间学习。当学习遇到困难吋,C语言程序设计教学网站可以成为学生自主学习的好助手。该系统应该按照教学步骤和教学规律将C语言程序设计知识点中具有代表性的概念提取出来,对相关、相似概念进行定义和描述,形成一个关于C语言程序设计课程的知识网络,并以框图形式直观地显示该知识的前导知识、后继知识、相关知识,便于学生可以快速、准确地定位所要学习的知识。同时该系统还应按照学生自身的学习要求重组学习内容,实现个性化学习。其中的程序举例还应从算法分析、流程图、源程序三方面来描述,让学生通过网站自主学习。
五、结构化程序设计语言向面向对象程序设计语言的过渡
作为对结构化程序设计语言的扩充,现在很多面向对象的程序设计语言,如JAVA、VC++等,都在保留C语言基本语法体系结构的基础上增加了面向对象的机制,因其功能强大得到了越来越广泛的应用。教学的过程中,教师应在学生掌握结构化编程思想的基础上,结合具体实例向学有余力的学生灌输面向对象程序设计的基本思想和思维方法,并在教学的后期有意识地引入继承和派生的概念,将函数公有、私有和保护成员的优点与C语言中函数封闭性的优点和缺点相比较,为今后学生自学其他面向对象的程序设计语言打下基础。
C语言的教学不应该拘泥于具体的某些语法规则,应让学生在学完C语言课程之后,感觉自己的编程思想有了一次革命性的洗礼,这样的C语言教学才是成功的。C语言教学过程本身是一个精益求精的过程,对于每一位教师,只要能把提高学生的学习兴趣放在首位,在教学过程中不断摸索,勇于进行教学改革,就会取得良好的教学效果。
责编 韦 微