浅谈如何培养对口单招学生C语言程序设计学习兴趣
2016-12-24王晓燕
王晓燕
摘要:C语言是江苏省对口单招计算机专业的考试科目,中职学生在C语言学习上缺乏学习兴趣,建构主义理论提出,知识并不是教师通过课堂教授给学生的,而是学生在既定情境过程中,通过教师与同学的帮助,利用相关的学习辅助资料,经过意义构建的方式来获得的。学生获得知识量的多少与学习者构建能力有着密切的关系,而不与学生的记忆能力与背诵能力有着直接的关系。想要学生获得源源不断的动力就需要让学生对所学知识产生兴趣,只有当学生对所学知识展现出较大兴趣时,才会以更加集中的思想来进行学习与分析,从而主动去构建知识。在教学实践中采用多种教学方法培养学生程序设计兴趣。
关键词:学习兴趣;创设情境;设置陷阱
一、什么是学习兴趣
从教育心理学的角度来说,兴趣是一个人倾向于认识、研究获得某种知识的心理特征,是可以推动人们求知的一种内在力量。学习兴趣分为直接学习兴趣与间接学习兴趣两种。前者是由所学材料或学习活动──学习过程本身直接引起的。后者是由学习活动的结果引起的。间接学习兴趣具有明显的自觉性。当一个人意识到学习的社会意义或与自己的关系时,学习兴趣就随之产生。学生对某一学科有兴趣,就会持续地专心致志地钻研它,从而提高学习效果。
二、对口单招学生学习兴趣缺乏原因
对口单招是普通高校面向中等职业学校的招生,难度低于普通高考,为中职学生考入高等学校提供一次机会,近几年对口单招招生规模逐步扩大。2010年,江苏省对口单招计算机应用专业把C语言程序设计列入考试科目,共占分值150分(总分1 000分),所占分值比例较大,对学生高考成绩起着至观重要的作用。C语言课程教学难度较大,主要表现在以下几个方面。第一,教学内容难度大。C语言课程的基本概念抽象、理论性较强,涉及语法复杂,拥有大量数据类型与运算符,不同数据类型相对应的规则数量较多,并且十分容易混淆。第二,C语言课程教学需要进行一定的实践训练。在C语言课程教学中,不单单要开展基础的理论教学,同时还须要给予学生一定的实验课程实践训练与项目设计,让学生能够以理论指导实践,用实践检验理论。第三,在中等院校接受教育的学生学习基础参差不齐,学习能力较弱,并且学生在进入中职院校学习后程度不一,给C语言课程教学带来了一定的阻碍,普遍表现为:有畏难情绪,从而丧失学习兴趣。
三、 培养中职学生C语言学习兴趣的策略
(一)创设情境,激发学生学习兴趣
生动的情景可培养学生学习的兴趣。在讲循环结构程序设计时,展示一个故事:
很久以前有一位十分贪婪又十分吝啬的财主,经常克扣工人的工资。有一天,一个聪明人看不过去财主的恶行,决定为大家出一口气。于是他来到财主家中,要与财主做一笔交易。交易的内容为财主第一天给他0.01元,第二天给他0.02元,第三天给他0.04元,第四天给他0.08元,以此类推,往后每一天的钱都是前一天的两倍,要持续给一个月。而他在这一个月里每天都给财主100元。财主一听,觉得这个交易,自己肯定赚钱,二话不说就同意了。看到这儿有同学说:“财主就是精明,这个人是个笨蛋。”刚开始财主每天都乐呵呵的,可是越往后,财主需要付出的钱越多,后来把所有家产都输给了那个聪明人。对于故事的结果,同学都很诧异。于是提出让学生编程计算一个月后财主付了多少钱,学生都兴趣盎然开始了编程。
(二)设置陷阱激发学生学习兴趣
例如,“=”和“==”
给出下面的程序段:
a=0;
if(a=0)
printf(“ a=0”);
else
printf(“ a=1”);
请学生分析运行结果。
上面程序的运行结果为a=1, 因为在C语言中“ =”是赋值号, 关系运算符为“ ==”,在if(a=0)语句中,括号中的a=0是赋值表达式, 把0赋给a,于是“a=0”这个赋值表达式的值为0,也就是为假,程序转到else分支中执行, 输出“a=1”。
再给出下面的程序段:
a=0;
if(a==0)
printf(“ a=0”);
else
printf(“ a=1”);
请学生分析运行结果。
在if(a= =0)语句中, 括号中的a==0是关系表达式,由于a==0为真,所以执行if分支,输出a=0。
(三)通过实例教学而不是枯燥的理论激发学生兴趣
1.选择结构问题:if-else结构与if语句的等价性。
中职学生对if-else结构理解存在困难,设计以下两个程序。
问题1:假设month=2,以下程序段的运行结果是什么?if后的逻辑表达式执行了几次?
两个程序的运行结果都为february,这时学生露出疑惑的表情,这两个程序运行结果相同,这两个程序是等价的吗?
问题1中if后的逻辑表达式执行次数为2,问题2中if后的逻辑表达式执行次数为4,这是由于程序设计语言中“if- else”结构执行时,在当if后面的表达式成立时,将执行if下面的语句,执行结束后会退出整个if语句, 不会再去执行else下面的语句。由于问题2中没有else结构,问题2中的if语句都要执行一遍,所以问题1和问题2的执行过程是不同的。
通过具体实例对比,让学生认识两个程序的逻辑关系及执行过程的不同,学生对这两个程序的异同表现出兴趣,从而主动探究学习。
2.函数调用的参数传递。
函数调用的参数传递也是C语言程序设计的一个难点,很多学生畏难而退,为激发学生学习兴趣,设计以下两个程序。
交换两个数的函数为:swap(inta,int b)
学生发现上面两个程序很相似,但是下面的程序把变量换成了指针,运行结果显示:两数成功实现了交换。学生这时表现出兴趣:想知道为什么指针版的交换程序就能实现交换。
第一个程序没有完成交换的原因:C函数的所有参数均以“传值调用方式”进行传递,函数将获得参数值的一份拷贝,这样函数可以放心修改这份拷贝,而不修改调用程序实际传递给它的参数。
第二个程序完成交换的原因:当用指针做函数参数时,实际传递的该数据的地址(指针),也就是传递给函数的实际是这个指针(地址)的一份拷贝。函数得到地址,就会按地址找到要相应的数据执行交换操作,而不是只是对这个数据的拷贝执行交换操作。
综上所述,学习兴趣应在程序设计教学过程有目的、有计划地培养,从而增强学生的求知欲,强化学生内在学习动机,从而提高C程序设计的学习效果。