首页 > 文章中心 > 循环小数教学设计

循环小数教学设计

循环小数教学设计

循环小数教学设计范文第1篇

摘要:为激发学生学习C语言程序设计课程的兴趣,使学生在学习上有主动性,本文以讲授循环控制这一章为例对趣味实例教学方法进行了探讨,给出几个围绕所学知识点设计的例子。

关键词:C 语言;循环控制;趣味实例

中图分类号:G642

文献标识码:A

1引言

“C语言程序设计”作为一门实用的编程语言,功能强大,编程风格自由灵活。在近几年的教学中发现,学生普遍认为这门课难度大,不容易学。如何通过教学方法的改变,让学生在学习上有主动性,激发学生学习该课程的兴趣,是讲授这门课程的教师应该考虑的问题。从目前大多数高校的教学情况看,现在一般多已采用多媒体教学。这种教学方式比起以前在黑板上讲授是有了一定的进步,但在目前的课堂教学中,还是以教师讲授为主,没有充分发挥学生学习的主动性,启发式教学没有得到充分运用。

2采用趣味实例教学

在“C语言程序设计”课程讲授过程中,要特别注意培养学生的学习兴趣。初接触计算机时,很多学生感到新奇、好玩,这不能说是兴趣,只是一种好奇。随着课程的不断深入,大量的语法规则很容易使一部分甚至是大部分学生产生枯燥无味的感觉。为了把学生的好奇转化为学习兴趣,采用趣味程序的例子激发学生的积极性,从而在实例中掌握C语言的语法和程序设计方法。这种方法的优点是可以根据教学内容,选择合适的例子,使学生掌握所学内容,趣味程序例子的选择至关重要。在每个实例的基础上,对学生多提问,并进行扩展,以复习前面学过的知识,也可以巩固当前学习的内容。通过启发式教学,让学生做更多的练习,加深对语法和程序设计方法的理解,掌握课程的精髓。为了实现课程的教学目标,培养学生的问题求解、编程和探索创新能力,在教学中必须强调实践训练,使学生在大量的练习中掌握知识,培养能力。下面介绍在讲授循环控制这一章中采用趣味实例教学的实践。

3实例分析

在循环控制这章中主要介绍while语句、do-while语句和for语句这三种循环语句。

3.1while语句

在介绍用while语句实现循环的一般形式和执行流程后,让学生思考用while语句编写程序实现猜数字游戏。先给出程序的运行结果,如图1所示。只要输入的数字和给定的数字不相同,就再重新输入,这种操作可通过while语句来实现。循环程序不停地读、检查和处理数据,直到遇到事前指定的表示结束的值,循环才终止。在判断不相等的同时,提示用户输入数字与给定值是偏大还是偏小,这个功能可运用条件运算符来实现。这样也对C语言中唯一的一个三目运算符有更深的认识。在此基础上,可让学生思考再增加程序的一些功能,如统计猜数字的次数、密码验证等,使程序更充实。具体程序如下:

void main()

{int a,k=9;

printf(" ------猜数字游戏------\n");

printf("请输入0到10之间任意一个整数:\n");

scanf("%d",&a);

while(a!=k)

{(a>k)?printf("高了\n"):printf("低了\n");

printf("再试一次!\n");

scanf("%d",&a);

}

printf("恭喜你,猜对了!\n");

}

3.2do-while语句

do-while语句的执行流程是先执行循环体语句一次,再判别表达式的值,若为真则继续循环,否则终止循环。do-while语句与while语句不同的地方在于do-while是先执行循环体,后判断表达式的“直到型”循环,而while语句是先判断表达式后执行循环体的“当型”循环。因此,do-while语句中的循环体至少被执行一次,对于循环体内容执行的次数由用户来决定时就可采用此循环语句。语句如下:

do

{ //其它循环语句

printf("继续吗(Y/N or y/n)?");

scanf(" %c", &reply);

}while (reply == 'Y' || reply == 'y');

例如设计一个简易计算器,可以实现加减乘除运算,由用户输入表达式,程序给出正确结果。采用上面介绍的语句即可实现多次运算,运算的次数由用户决定。采用多分支选择语句(switch-case)实现选择哪种运算。程序运行结果如图2所示。

3.3for语句

for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。for语句的循环应用除了计数外,还可用空语句作为循环语句中的循环体,循环中不实现任何功能,只是使CPU等待一定的时间后再继续执行程序,即循环体作为延时循环。模拟延时一秒的函数如下:

void Delay(void) //函数功能:模拟延迟1秒的时间

{ long t;

for (t=0; t

{

//循环体为空语句的循环,起延时作用

}

}

循环变量t的上限由CPU时钟和需延时的时间共同决定。首先定义三个全局变量,分别表示小时、分钟和秒,若秒值为60,表示已过一分钟,则分值加1;若分值为60,表示已过一小时,则小时值加1;若小时值为24,则重新从0开始计时。秒值每次增1,调用一次延时函数。程序运行结果如图3所示。对该程序进一步扩展,要求学生在上机实践课中编写模拟电子时钟的程序。学生在上机编程中增加了输入当前时刻的部分,并能使程序正常运行,极大地激发了学生学习C语言的兴趣。

3.4综合实例

在介绍完循环控制章节的各种循环语句后,给学生布置一道设计自动柜员机的问题,在上机实践中由学生分组设计完成。先给出程序的执行界面,如图4所示。要求学生利用循环嵌套和switch语句等对自动柜员机功能菜单的各种选择进行判断和相应处理。在主程序外加上各个子程序,成为一个完整的程序。

4结束语

“C语言程序设计”课程所进行的趣味实例教学实践有助于学生更好地掌握课程的核心内容,激发了学生继续探索和学习的兴趣,培养了学生的创新能力,发掘了学生的创新潜能。教学必然是一个需要持续改进和完善的过程,我们将不断总结课程教学的经验,使C语言教学迈向新的台阶。

参考文献:

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

[2] 苏小红. C语言程序设计教程[M]. 北京:电子工业出版社,2002.

[3] 江静岚. C语言教学方法探析[J].计算机教育,2007(21).

Teaching Method of Applying Interesting Examples on C Language Programming

FAN Hong, WU Yi-zhi

(College of Information Science and Technology, Donghua University, Shanghai 201620,China )

循环小数教学设计范文第2篇

关键词:C语言,教学案例,算法,语法

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)23-5326-02

C语言作为高级程序设计入门的教程,被广泛的教学。本科教学中我们可以选择大量的国内外教程,所用的教学案例对这种操作性很强的课程影响颇深。我们如何在教学过程中帮助学生树立学好程序设计的信心。不同教程和教师可能会选择不同的案例来教学,有的案例偏重语法,有的案例偏重算法。该文对两种教学思路做了分析和比较。

1 两种观点

C语言教学中,常会用到一些有数学基础的例题,比较典型的如冒泡法排序、碾转法求最小公倍数等。有的教师认为,程序设计语言不能脱离这些实际问题而教学,因为程序设计的教学目的就是为了用程序解决这些问题。有的教师则认为,这些例题需要学生理解其数学基础,在初学程序设计语言时这些例题本身已经给学生带来不小的困惑,不如使用一些更偏重语法的例子。

2 两种教学思路举例

2.1 while教学案例

在while循环教学中,我们有时使用碾转法求最小公倍数的例子。需要讲解的内容包括:什么是最小公倍数,碾转法求最小公倍数的方法,算法抽象,程序编制。学生只能在固定的算法框架里学习程序,没有操作的乐趣。如果我们使用另一种偏重语法的案例:使用循环控制程序执行次数。

通过这个简单的实例,学生可以在测试中获得操作和控制循环程序的乐趣,有兴趣才有信心进行更深入的学习。通过这个实例,我们还可以讨论哪些代码必需要放在循环体中,才能顺利地反复执行代码。

2.2 循环嵌套教学案例

在循环嵌套和数组的教学中,我们有时使用这样的例子:冒泡法排序。需要讲解的内容包括:排序实例,排序算法的抽象,算法到流程图的分解,流程图到程序的编制。学生往往会把注意力集中在排序实例和算法抽象上,循环嵌套本身的问题却被忽视了。最终算法变成了程序,学生会觉得这个过程很复杂,心里还有很多疑问。这个案例对学生建立自己解决问题的信心没有一点好处。

如果我们只使用另一种案例:二维矩阵的求和。需要讲解的内容包括:二维矩阵怎样放到二维数组中,如何使用循环嵌套遍历二维数组。

使用这个例子学生能把学习重点放在循环和数组上。我觉得二维数组是讲解循环嵌套的很好的例子。另外还可以把对矩阵的行求和以及列求和的例子作为练习,让学生在自己熟悉的框架里面练习循环的控制和使用数组。

3 两种教学思路优缺点比较

偏重算法的实例可以帮助学生在实际问题中学习程序设计,培养学生用程序解决实际问题的能力。但是这些例子要求学生理解算法的数学基础,虽然这些算法难度不高,学生应该可以理解,却也会分散学生的注意力。在C语言教学课时偏少的情况下,偏重语法的例子会更有效率,学生能够把注意力集中在语法上。初学者能够从中体会到更多操控程序的乐趣,建立学习程序设计的信心。

4 结束语

该文比较了C语言的两种教学思路,偏废哪一种教学思路都会不利于教学。在实践中,使用偏重语法的实例作为初学和上机实践更有效率,有助于学生建立自己动手编程序的信心,而偏重算法的实例更适合作为提高的内容在课堂上讲解,帮助学生建立从实际问题抽象算法并最终编制程序的概念。

参考文献:

[1] 谭浩强.C语言程序设计[M].4版.北京:清华大学出版社,2010.6.

[2] 陆黎明,朱媛媛,蒋培.高级语言程序设计(C语言描述)[M].北京:科学出版社,2013,1.

循环小数教学设计范文第3篇

关键词:数据库;主线;循环

中图分类号:G642 文献标识码:A

1 传统教学模式的弊端

《数据库原理与应用》是高职信息技术类专业的专业基础和专业核心课程。传统的教学模式一般都是理论和实践分开教学,而且过于强调理论知识的完备性,理论性强,概念抽象,实践内容和实际工作联系不紧密,理论和实践存在脱节现象。

2 “一条主线、四重循环”的教学模式的理论依据

建构主义本来是源自关于儿童认知发展的理论,由于个体的认知发展与学习过程密切相关,因此利用建构主义可以比较好地说明人类学习过程的认知规律,即能较好地说明学习如何发生、意义如何建构、概念如何形成,以及理想的学习环境应包含哪些主要因素等等。

建构主义学习理论提倡的学习方法是教师指导下的、以学生为中心的学习;其学习环境包含情境、协作、会话和意义建构等四大要素。基于建构主义的教学模式,是以学生为中心,学生们是“演员”,而教师则是“导演”,起着组织、指导、帮助的作用[1]。

“一条主线、四重循环”的教学模式真是基于建构主义的学习理论和学习模式而构建起来的。这种模式可以弥补传统教学模式中教与学分离,理论和实践脱节的现象,真正实现“教学做”的一体化教学[2]。

3 “一条主线、四重循环”的教学模式的设计和实施

3.1 “一条主线、四重循环”的教学模式的设计

《数据库原理与应用》是信息技术类专业群中各专业的专业基础课程和核心课程。目前信息技术的迅速发展和广泛应用,数据库系统的应用领域和需求日益增大,几乎各行各业都离不开数据库系统,企业对数据库开发与管理维护人员的需求日益增加[3]。《数据库原理与应用》旨在培养学生能较好的掌握数据库技术,能使用数据库知识和技术进行软件开发,直接面向社会需求和技术发展的需求。根据专业培养目标和人才培养模式,通过典型企业和合作企业对人才岗位群的要求,进行典型任务和工作过程分析,以满足专业核心能力为目标,构建岗位需求驱动的课程体系[4]。

本课程设计的基本出发点就是通过本门课程和相关课程的学习培养中小型企业数据库的使用和管理人才。浙江开展网上业务的民营中小企业蓬勃发展,而这类企业所使用数据库都是SQL SERVER,因此,我们这门课程选用SQL SERVER作为使用和开发平台。

3.2 “一条主线”

“一条主线”主要是以中小企业工作情景为主线。课程设计以工作过程为向导,通过分析合作企业的真实工作任务和产品,总结其工作要素,然后与数据库技术的知识(学习)要素相结合,以岗位工作要素与学习要素相融合作为工学结合点,提炼学生学习的企业项目,纳入教学情景,使教学任务与工作任务相一致,采用项目教学模式组织教学。

3.3 “四重循环”

“四重循环”指的是如下四重:第一重是指“课堂教学”环节,这个循环主要是通过一个“教务系统”安排教学过程;第二重是指“上机实训”环节,主要通过“人力资源系统”实施实训过程。第三重循环主要是通过“课外作业”这个环节,该环节是通过一个“银行ATM取款系统”来让学生完成课外作业。最后一重循环是设计一个“网上鲜花订购系统”的综合实训,让学生通过完成这个综合实训,进一步巩固该课程的学习,进一步提升学生的实际操作能力,从而增加就业的砝码。具体实施过程如图1所示。

图1 “四重循环”项目图

整个课程在四个大项目的引领下开展。大项目又划分为九个子项目贯穿整个课程。课程以“教务管理系统”项目的制作与开发为载体,将所授知识融入到项目开发过程中。通过对教务管理系统的贯穿讲解,详细说明如何使用数据库技术来完成一个典型数据库应用系统的建设。同时为了进一步提高学生的技能和熟练程度,在课内上机实训中安排了“人力资源管理系统”,在课外作业上则引入“银行ATM取款系统”项目,以供学生演练和提升,此外在该课程的最后,安排了一个大型的综合实训项目:“网上鲜花订购系统”数据库的实现,从而真正的提高学生的实战经验和技术水平。在每重循环中,都把一个大的项目分解为九个子项目,教学过程分为六个步骤:“任务导入”“任务分析”“示范引导”“学生模仿”“纠错重做”和“总结提高”六步,保证了基于工作过程的课程设计得以实施。

整个教学过程,案例都是根据授课班级进行动态更新,及时调整情景进行教学。案例动态更新指的是在第一重循环中“教务系统”的教学环节,其中班级表格等的设计和数据都是授课班级的真实数据,不同的授课班级,数据是动态更新的。这样能提高学生学习的兴趣,增加案例的真实性。

4 结束语

紧抓工作情景这条主线,以四重教学内容循环提升学生技能。项目引领、案例动态更新、多重循环提升学生编码实战能力。这正是“一条主线、四重循环”的教学模式在高职《数据库原理与应用》中的主要特征。学生在配套实训—“人力资源管理系统”、课外作业“银行ATM取款系统”以及综合实训“网上鲜花订购系统”的多重循环巩固实战中,层层递进,不断提升编码实战能力,为今后从事数据库系统开发与维护打下坚实的基础。

参考文献

[1] 姜代红.基于任务驱动的数据库原理及应用课程自主—协作

学习模式[J].计算机教育,2011(24):62-64.

[2] 瞿梦菊.软件技术与计算机应用专业《数据库原理及应用》

课程教学探讨[J].科技信息,2011(30):276-278.

[3] 姜代红,蒋秀莲.数据库原理及应用实用教程[M].北京:清华大

学出版社,2010:200-205.

[4] 吴晓刚.基于项目驱动的数据库课程自主探究式教学模式[J].

计算机教育,2012(2):81-84.

作者简介:

循环小数教学设计范文第4篇

[关键词]循环小数;课堂教学;逻辑思维能力

《小学数学课程标准》提倡“既要让每个学生获得最基础的数学知识,又要着重培养学生逻辑思维能力和创新精神”。因此,培养学生具有初步的逻辑思维能力,是小学数学教学中的一项重要任务。在多年的小学数学教学实践中,笔者探索出了一些帮助学生逻辑思维能力提高的方法。下面,笔者就谈谈自己在“循环小数”教学中培养学生的逻辑思维能力的几点做法。

一、计算,感知循环小数

教师可先让学生分组计算下列五道除法算式:

10÷3=,13÷7=,70.7÷33.4=, 43÷9=, 112.7÷111=

然后,教师引导学生观察余数和商的规律,从而判断:除到被除数的最后一个有效数字后,如果余数依次不断地重复出现,商的小数部分也必须有数字依次不断地重复出现。这样的商就是循环小数。

二、抽象概括循环小数的意义

首先,让学生认识循环小数是无限小数。

1.观察:这些商的小数位数有多少?(无限多)小数部分位数是无限的小数叫做无限小数,循环小数是无限小数。

2.引导学生用学过的小数同这些商比较,如:0.5、9.7、23.508等,小数部分位数有什么特征?可以叫做什么小数?

3.3.1415926……同这些商比较,它是不是循环小数?从而看出无限小数又有两种情况 :(无限)循环小数和无限不循环小数。

接着,教师重点引导学生自己概括循环小数的意义。

1.引导学生观察、比较。前面让学生认识了这些商的共同特征,即小数部分都有数字依次不断地重复出现,都是循环小数。让学生再来比较它们还有什么不同的地方?(学生回答,教师板书)

(1)依次不断地重复出现的数字,有几个?(一个、两个、三个……概括为:一个数字或者几个数字)

(2)依次不断地重复出现的数字,是从哪一位起?(从十分位起,从百分位起……概括为:从某一位起)

2.引起学生做抽象概括,让学生对这些商共同点和不同点进行综合分析,从而抽象、概括出循环小数的意义。一个数的小数部分,从某一位起,一个数字或几个数字依次不断地重复出现,这样的数叫循环小数。

最后,引导学生用观察、比较、谈话、启发的方法学习循环节、循环小数的分类及简写。

三、组织练习,巩固和深化循环小数的意义

为了使练习起到加强基础、发展学生的智力和培养学生的逻辑思维能力的作用,特设计下列层次性练习。

1.判断下列各小数是不是循环小数,是纯循环小数还是混循环小数,指出循环节,并简写。

0.88……、4.066……、10.383838……、5.71907190……、0.333033003……、49.4949……、18.732626……、72.07272……、3.33030……、0.00707……、0.0601601……、25.733733……、2.3324324……

2.取下面各循环小数的近似值(先保留两位小数,再保留三位小数)。

4.94、0.5、11.07、0.90

3.比较下面三个数的大小。

7.7、7.8、7.76

4.判断下面的化简形式对不对,并分析原因。如:1.40=1.4、0.26300=0.263

循环小数教学设计范文第5篇

关键词:建构主义理论 教学模式 教学方法

中图分类号:G642 文献标识码:B

文章编号:1672-5913(2007)14-0051-04

为培养大学生的信息素养,非计算机专业大都开设了程序设计基础课程。学习计算机语言并进行编程训练,是学生深入理解计算机的一个突破口,是熟悉计算机思维的一个重要途径。但如何让这些非计算机专业的学生掌握程序设计的基本概念和基本方法,并能用一种程序设计语言编写计算机程序,难度很大。首先,他们主观上会认为,将来他们不会从事编写程序的工作,学习编程对他们没用;其次,计算机技术的概念比较抽象,不易掌握;其三,学习程序设计过程中,不光需要掌握所学的程序设计语言的语言规则,还要学会程序设计的思维方法,而前者全是一些严格的规定,后者却要求灵活运用,学生在初学编程时,如果长时间调试不通一个程序时会气馁,会产生一定的厌学情绪,此情绪对后面内容的学习会形成阻碍,以至影响整个课程的学习。

为了让非计算机专业的学生充分认识到程序设计课程的重要性,对程序设计产生兴趣,需要任课教师的不断探索、改进教学方法,改变“以教师为中心”的传统教学模式,使学生从被动学习变为主动学习,为学生自主学习提供丰富的学习资源,从而取得较好的学习成效。这正是现代教学理论――建构主义学习理论所倡导的。

本文首先介绍了建构主义的核心内容;然后,探讨了在非计算机专业程序设计教学中运用建构主义学习理论和教学方法,结合教学改革实践,对程序设计教学模式;最后,对于如何切实提高程序设计课的教学效果,提出了若干应注意的问题。

1建构主义理论概述

建构主义理论的核心内容是:以学生为中心,强调学生对知识的主动探索,主动发现和对所学知识意义的主动建构。

建构主义教学理论认为,知识主要不是通过教师传授得到,而是学习者在一定的情景及社会文化背景下,借助他人(包括教师和学习伙伴)的帮助,利用必要的学习资源,通过意义建构的方式而获得的;学习是学习者主动建构内部心理表征的过程,它不仅包括结构性的知识,而且包括大量的非结构性的经验背景;学生是信息加工的主体,是意义的主动建构者,而不是外部刺激的被动接受者和被灌输的对象;教师是意义建构的帮助者、促进者,而不是知识的传播者和灌输者;“情境”、“协作”、“会话”、和“意义建构”是学习环境的四大要素。

与建构主义学习理论以及建构主义学习环境相适应的教学模式概括为:“以学生为中心,在整个教学过程中由教师起组织者、指导者、帮助者和促进者的作用,利用情境、协作、会话等学习环境要素充分发挥学生的主动性、积极性和首创精神,最终达到使学生有效地实现对当前所学知识的意义建构的目的。在这种模式中,学生是知识意义的主动建构者;教师是教学过程的组织者、指导者、意义建构的帮助者、促进者;教材所提供的知识不再是教师传授的内容,而是学生主动建构意义的对象;媒体也不再是帮助教师传授知识的手段、方法,而是用来创设情境、进行协作学习和会话交流,即作为学生主动学习、协作式探索的认知工具。

在建构主义的教学模式下,比较成熟的教学方法主要有支架式教学,抛锚式教学,随机进入教学等。

2建构主义学习环境下程序设计基础教学设计

非计算机专业的程序设计课,是一门公共必修课,一般来说是学生在大学所学的第一门计算机编程课,目前大多讲述C语言程序设计。该门课的特点是:语言规则枯燥、难记;数组、函数、指针等概念比较抽象,不易理解;需掌握的常用算法较多;程序设计的思维方法较难掌握;编写的程序需要上机检验、调试。

在建构主义学习环境下,非计算机专业的程序设计基础教学设计内容如下:

(1) 教学目标分析

C语言程序设计课程的教学目标:掌握C语言程序的基本结构、C语言程序的基本数据类型和数组、结构、指针数据类型,掌握运算符、表达式、输入/输出处理、流程控制语句、函数定义和函数调用语句。通过以上各主题的学习,培养程序设计思维方法和技巧。

每个主题的教学目标是与该主题相关的基本概念、基本原理、基本方法与技巧。

(2) 情景创设

情景创设是指创设与当前学习主题相关的、尽可能真实的情景。程序设计课程的一个显著特点是每学习到一个主题,都可以在计算机上直接编写程序、调试程序、运行程序、查看运行结果,从上机编程的操作上来讲,学生体验到的是真实情景。另一方面,对于C语言程序中所涉及的概念、算法的学习,要为学生创设资源丰富的学习环境,其中应包括实例案例、相关学习资料,使得学习者可以根据自己的学习需要、学习兴趣去主动发现、主动探索要掌握的知识。

(3) 信息资源设计

确定学习本课程的每个主题所需的信息资源的种类以及每种资源在主题学习过程中所起的作用。经过分析综合,为本课程设计了具有不同作用的信息资源:教材和课件;校园网课程教学网站上的学习指导、常见问题解答,以及学习参考资料、参考习题和解答,用于学生的阅读或查阅学习内容;课程教学网站上的自测练习系统、作业系统、答疑系统用于学生自测、自我反馈。

(4) 自主学习设计

在教学过程中,充分发挥学生的主动性,使学生主动探究问题;为学生设计不同的情景去应用他所学的知识,帮助学生实现知识的“外化”;并让学生能根据自身行动的反馈信息,来形成对客观事物的认识和解决实际问题的方案,从而实现自我反馈。总之,自主学习设计中要充分考虑体现以学生为中心的三个要素:发挥学生的首创精神、知识外化和实现自我反馈。

(5) 协作学习环境设计

在本课程教学中,由教师精心设计问题,引导学生开展小组讨论、协商,并对学生的表现进行恰当的评价,从而进一步完善和深化对主题的意义建构。

(6) 学习效果评价设计

包括小组对个人的评价和学生个人的自我评价。为了帮助学生在完成一个主题的学习后,进行自我评价,在C语言程序设计教学网站设计了“自测练习系统”,自测练习的内容精心挑选,使之能有效地测试学生对基本概念、基本原理、基本编程方法的理解和掌握。

(7) 强化练习设计

根据评价的结果,为每个学生设计出一套强化练习方案:指出其知识薄弱点,并设计有针对性的学习材料和练习题。以便通过强化练习纠正原有的错误理解或片面认识,最终达到符合要求的意义建构。

3建构主义指导下的程序设计教学方法

建构主义学习理论强调学习者是认知主体,是意义的主动建构者;同时又不能忽视教师的主导作用,认为教师是意义建构的帮助者、指导者、促进者[2]。

因此,在教学过程中应采取既要发挥学生的主体作用,又要发挥教师的主导作用。在教师的指导下,学生进行主动的思考与探索;教师的主要任务是激发学生的学习兴趣,帮助学生形成学习动机,创设符合教学内容需要的多种情景,提示新旧知识之间的联系,帮助学生进行知识的迁移,组织协作学习,把学生的学习引向深入,监控学生的学习活动,并适时给与引导和帮助。

在建构主义教学模式下,笔者对c语言程序设计教学采用了支架式、抛锚式、随机进入式教学。实践表明,这些教学方法的运用,大大激发了学生的学习兴趣,使学生在教师为其创设的情境中,并在教师的引导下,一步步主动完成知识的意义建构。

(1) 支架式教学

学生独立解决问题时的发展水平与在教师指导下解决问题时的潜在发展水平之间的差异称为“最邻近发展区”。围绕所学习的主题,按照“最邻近发展区”的要求,建立概念框架,然后,引导学生进入一定的问题情景,让学生独立探索,并通过小组协商,最终完成对所学知识的意义建构。

数据排序算法(如选择排序)的讲解,采用了支架式教学方法。

利用数组将待排序的一组数(假设有N个)存储起来。再设计一个双重循环结构,内层实现一趟内、在一定范围内、值最小的元素的查找,并将该元素与排序后应所在位置上的元素互换;外层实现趟数的控制,这就可实现选择排序。

在教师适时地引导下,学生先根据最小数算法写出在数组全部元素的范围内找出最小值的程序代码(这是排序的第一趟),然后沿着概念框架逐步攀升:为实现元素互换,还需要记住最小值的位置。探索后面每趟排序的实现方法,通过讨论、协商,学生发现每趟排序的实现代码中相同的部分、不同的部分(可以适当地给出提示)。如果每趟排序的代码都相同,可以直接将这部分代码作为控制趟数的外层循环的循环体。为将每趟排序的代码中不同的部分也转化为相同的代码,需要将代码中的常量变为包含变量的统一的表达式。引导学生自己写出实现这个两重循环的最后的代码,达到对选择排序算法的深入理解,最终完成了对选择排序算法的意义建构。

(2) 抛锚式教学

抛锚式教学也称“基于问题的教学”。实际情境中的真实事件或真实问题的确定称为“抛锚”。这些问题要能引出与所学主题密切相关的基本概念、基本原理,能激发学生的学习动机,激起他们探索、学习的兴趣。在解决问题的过程中逐步训练学生的抽象思维能力和逻辑思维能力。

“函数”是C语言程序设计的重点和难点,学生普遍反映函数抽象、难学。为此,在教学过程中采用“抛锚式教学”,让学生在真实的问题情境中体会模块化程序设计的思想,学会用“函数”来解决规模较大、复杂的问题。

教师在讲解函数的概念之前,提出如下实际问题:用弦截法计算出函数f(x)=x5- 4x2+1的根。弦截法求方程根的过程:假定求根区间为[x1,x2],则当f(x1)与f(x2)异号时,以点(x1,f(x1)) 、(x2,f(x2))为端点的弦与x轴的交点由公式x=x1f(x2)-x2f(x1)/( f(x2)-f(x1))计算出来,然后根据f(x)是正是负,将求根区间缩小为[x1,x]或[ x,x2],并继续求新的弦与x轴的交点x,当f(x)足够小时,认为该x就是方程的根。

分析上述问题,发现解决它需要完成多个独立的计算过程:①计算数学函数f(x)、f(x1)、f(x2)的值的过程②用公式x=x1f(x2)-x2f(x1)/( f(x2)-f(x1))计算弦与x轴的交点的过程 ③缩小求根区间后不断计算与x轴的交点,直至f(x)小于某个值,则x就是方程的根。

如果将x、f(x)的求值过程的程序代码封装起来,使之成为程序中的一个独立实体,并通过一个名字来命名,当程序中需要这段计算时,可以通过一种简洁的形式要求执行这段计算过程,则程序中会避免大量重复代码,变得更简洁、更清晰。进一步指出:封装求值过程的代码就是函数定义,在需要执行被封装的代码的地方使用函数调用。此时,由问题出发,为学生引入了C语言函数定义、函数调用的概念,然后,以f(x)为例,向学生展示C语言函数定义的格式;以x的求解过程为例,向学生展示C语言函数调用的格式与参数传递机制。

然后,进一步向学生讲解C语言主函数main与用户自定义函数的关系――主函数由操作系统调用,而主函数调用自定义函数,自定义函数之间可以互相调用。每一个函数看做一个程序模块,让学生自己分析、协商:弦截法求根的程序有几个模块组成,这些模块之间的调用关系如何?并引导学生画出程序的模块图。

进一步分析函数的定义,指出只要知道了函数定义的首部信息,在主调函数中就可以写出函数调用,这样就引出了函数原型的概念。最后,在多媒体计算机上给出完整的程序代码,并演示程序的运行过程和运行结果。

完成上述方程求根问题的程序后,教师提出问题:如果把函数f的形参去掉,将函数体中的变量x换成一个数,函数f的每次调用结果怎样?从而引出无参函数的概念。

整个教学过程围绕建构主义情境、协作、会话和意义建构这几个认知环节自然展开,学生通过对真实问题的感受、体验,以及所学知识的意义建构,深刻理解了函数的概念、原理,以及自顶向下模块化程序设计的思想。

(3) 随机进入式教学

随意通过不同途径、不同方式进入同样教学内容的学习,从而使学生获得对同一事物或同一问题的多方面的认识与理解。

循环程序设计是程序设计教学的难点之一。循环结构比较复杂,用循环语句实现时牵涉的问题比较多,因此,本部分内容的教学设计采用随机进入式教学法。

首先为学生创设能从不同侧面、不同角度表现循环程序设计的多种情境以便供学生在自主探索过程中随意进入其中任一种情境去学习。

在循环算法中,迭代与穷举是两类具有代表性的基本算法。迭代和穷举算法各有其特点,二者恰好体现了循环程序设计的不同侧面。因此,在教学设计中,为学生创设从迭代和穷举两类循环算法进入循环程序设计的学习情境,在“迭代”情境下,可设计“人口增长问题、fibonacci数列、一元方程的迭代解法”等任务;在“穷举”情境下,可设计“找水仙花数、判断素数、找最大数”等任务。在导学时先向学生明确迭代和穷举的含义:迭代是一个不断用新值取代变量的旧值,或用旧值递推得出变量的新值的过程。穷举是对问题的所有可能状态逐一测试,直到找到解或将全部可能状态都测试完为止。

这两种循环算法都涉及到的循环程序设计的共性问题:如何发现算法中的重复性动作,循环中涉及哪些变量,循环变量初值的如何确定?什么情况下循环应该继续或中止?选用哪个循环语句来实现循环结构?循环结构的中途退出与重复周期的中途结束(素数判断)的处理,等等。无论学生选择哪一个情境去学习,都能从达到发现问题解决问题意义建构的目的。在自主学习过程中,学生的系统思维能力得到发展。

4建构主义教学模式下的程序设计教学中应注意的问题

(1) 综合运用多种教学方法。每一种教学方法有其局限性,如抛锚式教学以问题为中心,使用不当,会影响学生系统的掌握知识。在实际教学中,不一定采用某种单一的教学方法,针对具体教学任务,可以将两种以上的方法结合在一起,灵活运用。

(2) 不要片面强调学生的中心地位,而忽视了教师的主导作用。

(3) 程序设计课程的一个重要任务是培养和训练学生的程序设计系统化思维能力。因此,在引导学生分析问题、解决问题的过程中,要把培养和训练学生的程序设计系统化思维能力放在首位。

(4) 加强学习资源的建设。开发基于Web网络学习课件,建设程序设计常见问题库、自测练习题库。

参考文献

1. 何克抗. 建构主义革新传统教学的理论基础[J]. 电化教育研究,1997,(3).

2.陈琦,张建伟. 建构主义与教学改革[J]. 教育研究与实验,1998,(3):46-50.

3.张基温. 从语法体系走向问题体系―程序设计课程教学改革探索[J]. 计算机教育,2004,(7):68-69.

4.裘宗燕. 从问题到程序[M]. 北京:机械工业出版社, 2005.

投稿日期:2007-6-7

作者联系方式:北京海淀区清河小营东路12号北京机械工业学院计算中心

邮编:100085