高职C语言课程中循环结构的教学设计与实践

2012-04-29 00:44黄雄波
计算机时代 2012年5期
关键词:C语言教学设计

摘要: 结合C语言课程对高职软件类学生的学情进行了简要的分析,从提高学生的学习自信心、激发其学习兴趣、强化其学习动机以及运用知识能力等角度出发,以for循环结构为例,重构并优化了相关的教学内容和教法,进而取得了较为满意的教学效果。文章的最后进行了有关的教学反思和讨论。

关键词: C语言; for循环结构; 教学设计

中图分类号:G642文献标志码:B 文章编号:1006-8228(2012)05-49-03

Teaching design and practice for loop structure of C in higher vocational colleges

Huang Xiongbo

(Department of Computer Science, Foshan Professional Technical College, Foshan, Guangdong 528137, China)

Abstract: In order to make students interest in study and have more self-confidence, the paper analyses the student's situation of learning C language, reconstructs and optimizes the content of for-loop structure of C language course, gets the satisfying effectiveness. The paper reflects and discusses about teaching last.

Key words: C language; for-loop structure; teaching design

1 C语言课程特点及学情分析

当前的高职生源主要是统招录取的普通高中毕业生,少量来源于中专、技校或职业中学对口升学(3+证书)的学生。 近年来,由于社会对高职教育缺乏足够的了解,加上一些用人单位片面地追求高学历,使得高职院校的学生与本科院校的学生相比处于劣势,不少高职学生甚至觉得自己是“非正规”的大学生[1]。高职学生的这种自卑失落情绪导致了他们在就学期间学习目标不明确、学习兴趣不高,面对学习中遇到的困难缺乏信心和毅力。

C语言是一种面向过程的通用程序设计语言,它具有表达简明、使用灵活、丰富的数据结构、良好的程序可移植性和高效率的目标代码等众多优点[2],因而已成为高职软件类学生的必修课程。从高职软件类的课程体系来看,C语言是面向对象程序设计语言、数据结构、动态网页编程等后续课程的前导课,因而该课程一般在第一学年中开设。在还没有进入专业的情况下,C语言的教学案例往往取材于数学问题求解或数学味道很浓的工程问题求解,这不仅导致课程枯燥难学,一定程度上也使学生出现了厌学的情绪。

基于多年的高职C语言课程的教学经验积累和反思,作者对该课程的教学内容、教法及教学过程作了重构和优化,初步取得了一定成效。下面就for循环结构的教学方法加以介绍和讨论。

2 循环结构的教学设计与实践

2.1 教学内容的选取

C语言提供了三种循环结构,for语句(步长型循环),while语句(当型循环)和do-while(直到型),它们在一定程度上可相互转换。对于for语句,我们按照从易到难的认知规律,选取了1+2+…+n的求和问题、规则图形的打印输出以及九九乘法表的打印输出等为教学案例。为了增强教学内容的趣味性、提高学习自信心和运用知识的能力,在主要的教学案例引入了多种编程解决方案,并进一步,指引和鼓励学生深化现有的解决方案。

2.2 教学方法设计

在整个课堂教学过程中,教师首先串讲分析教学案例的编程原理、要点和难点,并展示初步的解决方案;然后组织学生进行分组思考、讨论、深化现有的解决方案;在上机调试程序结束后,各个小组进行简要发言,介绍实验过程中遇到的问题及相关解决办法等;最后,教师小结、点评各个小组的解决方案,归纳分析一些共性的问题,并启发点题整个教学案例[3]。

2.3 教学过程的实施

2.3.1 1+2+…+n的求和问题

① 教师结合电子课件串讲分析:C语言一个编译工具,用户利用它提供的语言描述规则可以把某一问题的手工求解想法传递至计算机中,由机器来完成问题的求解。在该教学案例中,我们的手工求解是这样的一个过程:

② 组织学生思考、讨论并提问:在已学的知识基础上,要用C语言描述上述求解过程,将会出现什么问题?

教师指出:出现的问题有两点,需要定义n-1个形如sum1,sum2,…sumn的变量;需要编写n-1次两数相加的计算过程。

教师启发:根据顺序程序的运行特点,可把上述的求解过程改写为:sum=1+2,sum=sum+3,…,sum=sum+n,故此时只需定义一个变量sum即可;而在n-1次两数相加的计算过程中,每次都呈现出两个值不同的数在作加法运算的规律,为了有效地处理这种具有共性的重复过程,C语言引入了循环结构。

③ 导入循环结构知识点:着重围绕循环结构的使用场合(存在共性的重复过程)和循环次数的控制(循环条件)展开讲解。

进一步,教师结合for语句一般格式{for(表达式1;表达式2;表达式3)}和图1所示的流程图详尽剖析循环结构的运行过程。

[求解表达式1] [表达式2][语句][求解表达式3][for语句的

下一语句]

图1语句的流程图

④ 承上启下,引领学生用for语句编写式子1+2+…+n的求和问题:

#include

main()

{

int i ,n,sum=0;

printf("请输入式子 中的 :");

scanf("%d",&n);

for(i=1;i<=n;i++)

sum=sum+i;

printf(" %d=%d",n,sum) ;

}

⑤ 学生上机调试程序。

2.3.2 九九乘法表的打印输出问题

图2九九乘法表的打印输出示意图

① 教师结合电子课件串讲分析:九九乘法表共有9行数据,且随着行数的增加,其输出的列数也在增加如图2所示。不难发现,图2具有“某两数相乘的打印输出”这一共性的重复过程,为此可用循环结构来编程实现该问题。由于该输出涉及行、列两个方向,所以须用双重循环来实现,即在外循环控制行(列)数,相应地,在内循环控制列(行)数;此时,可结合已学的多分支语句(分支中有分支)来串讲多循环语句(循环中有循环)。

② 教师现场编写示范程序,并用多媒体课件展示多重循环的过程。这里的教学重点和难点是让学生深刻领会,外循环的循环体又是一个循环结构,而外循环的下一次循环必须等待内循环的循环结束后才能重新开始。

#include

main()

{

int i ,j;

for(i=1;i<=9;i++) /*i变量控制输出的行数*/

{

for(j=1;j<=i;j++) /*j变量控制每行输出的列数*/

printf("%d×%d=%2d",i,j,i*j);

printf(" "); /*换行*/

}

}

③ 教师辅导学生调试示范程序。

④ 教师展示如图3(先从上至下,后从左至右)和图4(先从右至左,后从下至上)所示的九九乘法表的打印输出新方案(注意调度和激发学生的学习兴趣)。

图3先从上至下,后从左至右地输出九九乘法表

图4先从右至左,后从下至上地输出九九乘法表

⑤ 组织学生思考、讨论并提问:要实现图3和图4所示的打印输出方案,关键要解决什么问题?教师结合图3指出,当打印输出完第1列第9行数据时,其当前的输出光标就处于图3中的 [A]标志处,按照“先从上至下,后从左至右”的输出规则,此时需要把输出光标移至 [B]标志处。启发学生,由于C语言的printf函数只能紧随当前光标输出,为此,要实现图3所示的输出方案核心就是要解决光标的定位问题。

⑥ 让学生在互联网络中搜索“C语言的输出光标定位问题”,培养学生网络学习的能力。教师总结,并根据搜索结果引入gotoxy函数:

声明:#include

原型:void gotoxy(int x,int y);

功能:对屏幕的光标进行定位;其中:x为列坐标,y为行坐标。

⑦ 有了gotoxy函数后,用户就可以随意对当前输出光标进行定位。为了培养学生运用知识的能力,教师稍作引导后,便布置学生运用gotoxy函数编程实现图3所示的输出方案。在这一过程中,给学生施加适当的压力,如在10-15分钟内独立完成和记名考核等,可营造一种良好的学习氛围。待绝大部分同学完成后,教师公布标准程序。该程序如下。

#include

#include

main()

{

int i,j,x,y;

long k;

for(i=1; i<=9; i++) /*i变量控制输出的行数*/

{

for(j=i; j<=9; j++) /*j变量控制每行输出的列数*/

{

y=j; /*设置行坐标*/

x=(i-1)*7+1; /*设置列坐标,乘法表的列宽为7*/

gotoxy(x,y);

for(k=1; k<100000000; k++)

; /*为了观察整个输出过程,引入空循环来延时*/

printf("%d×%d=%2d",i,j,i*j);

}

}

}

⑧ 各小组发言,教师点题。

⑨ 课后作业:按照直角三角形的斜边“从上至下,从外至内”输出九九乘法表。

3 教学反思和讨论

3.1 先育人后教书

在传授课程知识的过程中,要始终关怀爱护每一位学生。作者以自身从中专学历为起点,多年来一直自强不息地对知识执着追求的经历来激发学生,指引他们崇尚科学、树立积极向上的人生价值观。C语言抽象难学,所以在课程的开始阶段,应放慢教学进度,耐心细致地反复讲解;在学习上严格要求学生,对每一个知识点、每一个程序绝对要人人过关。事实上,当学生的基础知识扎实以后,其将来提升的空间也就越大,也很容易完成“要我学”到“我要学”的过程转换,学习自信心也就逐渐形成。以下是一位08级学生在课程实训答辩时的总结,他说:“刚学C语言课程时,我认为我这一辈子都学不了,但是经过老师的耐心教导和自己不懈的努力,我觉得C语言并不难学,在今后的学习过程中,遇到任何困难我也不怕!”

3.2 学习最终的目的是学会学习

向学生传递“学习最终的目的是学会学习”的理念。学习是两件事情,学是模仿,习是练习和运用,学而不习就不算学习。在教学案例的设计上教师应站在一定的高度融入自己独到的解决方案,而授课过程中不仅应教会学生完成新方案,还要让学生懂得教师为什么会想出这一种新方案。这对提高学生运用知识的能力非常关键。在课程的中期阶段,注意培养学生阅读教材的能力,教师还要选取一些适合C语言课程的文献与学生共同研读和探讨,力求让学生在课程的后期阶段能减少对老师的依赖,初步具有一定的学习能力。课堂教学中,还可以融人文、历史、地理、时事、哲学和自然科学等内容于课堂中,做到传授知识、关爱鼓励和施加压力等有机结合,切实让学生深刻领会到学习不仅是一件享受生活的事情,而且也是一个发现自我、肯定自我和超越自我的过程。

3.3 考核改革促进学生综合素质的提高

考核既是衡量学生掌握知识技能的尺度,也是学生学习方法的导向。近年来,作者在C语言教学中深化与教学同步的过程实践考核,并注重学生综合素质能力的培养。在课程的不同阶段中安排难度合适的的综合实训项目,并根据学习情况把学生分成多个学习小组,学习小组除了完成相实训项目的程序编写以外,还要撰写实训报告和参加答辩。教师根据各个小组的项目完成情况及学生在团队中所起的作用、实训报告的写作能力和答辩的表达能力综合评定成绩。该考核方法已尝试了四年多,效果非常明显,由于各个阶段都要进行考核,学生的出勤率、学习积极性等均有良好的表现;同时,学生的团队合作能力、专业写作能力以及口头表达能力也得到了很好的训练。

3.4 教研活动做到实处

C语言课程教学团队每月定期召开教研会议,对重构后的课程教学案例的重点、难点、教学效果及教学方法进行交流和讨论;合适的时候,允许有不同知识层次的学生参与教研活动,听取学生在学习过程中遇到的问题以及相关诉求。

4 结束语

高职院校的专业建设与课程改革是提高人才培养质量的关键;专任教师在刻苦钻研专业知识、努力提高职业技能的同时,还应扎根于一线教学中深入课程建设。本文以for循环结构教学单元为例,展示了C语言课程的课堂教学方法。实践证明了这些教学方法在教书育人方面的成效性。

参考文献:

[1] 赵翠.高职院校学生自信心培养研究—基于学校管理的研究视角[J].

交通职业教育,2011.5:25~26

[2] 高福成.C语言程序设计教程[M].清华大学出版社,2005.

[3] 黄雄波.高职C语言程序设计中牛顿迭代算法的教学探索[J].电脑知

识与技术,2007.14(22):1147~1148

猜你喜欢
C语言教学设计
基于Visual Studio Code的C语言程序设计实践教学探索
基于C语言的计算机软件编程
C语言程序设计课程教学与学科专业相结合的探索
高职高专院校C语言程序设计教学改革探索
《电气工程毕业设计》 课程的教学设计
高中数学一元二次含参不等式的解法探讨
“仿真物理实验室” 在微课制作中的应用
翻转课堂在高职公共英语教学中的应用现状分析及改善建议
马克思主义基本原理概论课案例教学的几点思考
提高课堂教学有效性的研究