APP下载

《C程序设计》课堂教学方法改革创新的探索

2016-04-12吴丽娟吴建军

关键词:C程序设计程序设计所学

吴丽娟, 吴建军, 李 柳

(沈阳师范大学 物理科学与技术学院, 沈阳 110034)



《C程序设计》课堂教学方法改革创新的探索

吴丽娟, 吴建军, 李 柳

(沈阳师范大学 物理科学与技术学院, 沈阳 110034)

通过多年的《C程序设计》课程及课堂的教学改革探索,对课堂教学方法和教学环节的创新进行了归纳总结,提出了“X+3”课堂教学方法。在课堂教学中,根据不同教学环节和教学内容采用不同的教学方法。首先,采用问题驱动法引入新知识,使学生明确学习的内容和解决的问题,程序举例法巩固所学的知识,递进式问题驱动教学法完成课堂难点和重点的讲解,掌握解决问题的方法;然后,归纳总结与练习的创新教学法加强学生对所学知识的掌握与理解,锻炼学生利用所学知识分析问题与解决问题的能力;最后,通过习题课的翻转尝试教学法,提升学生创新探索的能力。通过对课堂教学环节改革创新的问卷调查和信息反馈,教学方法得到学生的认可,并取得了良好的效果。

课堂教学; 问题驱动; “X+3”教学法; 总结与练习; 翻转尝试

0 引 言

《C程序设计》作为一门计算机程序设计基础课程,是沈阳师范大学物理科学学院电子信息工程专业的必修基础课,是学习本专业其他课程的前修课程。该课程的概念、语法和规则较多,语句使用灵活,对于一年级刚接触编程的学生是一门较难掌握的课程。

课堂教学作为课程的关键的教学单元,其教学方法的创新改革,直接影响课程的教学质量和学生的学习效果以及创新创业教育。目前该课程的课堂教学大多采用传统的讲授式教学法,教师认认真真地讲完精心准备的一堂课后,学生的反馈的信息是“基本理解概念和知识点,但用语句自己编写程序比较困难”,因此对于计算机语言类课程,课堂教学方法的改革创新势在必行。

C语言是一种结构化的程序设计语言,数据结构丰富,语法规则多,理论、实验课时有限,要求学生不仅要掌握数据结构、典型算法,还要利用C语言完成程序的设计编写, 这么多的教学内容,在有限的课堂教学内完成,教学任务是很繁重的。其次,上课学生人数多,采用传统的讲授式教学法很难了解学生对知识的掌握情况。《C程序设计》课程作为学校的课堂教学改革的试点课程,课堂教学的改革创新是课程改革重要部分,经过多年的改革与实践,本文提出了“X+3”课堂教学方法的改革创新,利用多媒体教学课件与教学平台辅助教学。

1 “X+3”课堂教学方法

“X+3”方法中的“X”指的是根据不同教学内容和教学要求采用的不同教学方法。如问题驱动法、案例法、翻转尝试法、启发式、应用举例法、实验对比法、递进案例法等。方法中的“3”指的是问题驱动教学法、归纳练习和课堂翻转教学法。

问题驱动教学法,就是在教学过程中教师根据教学内容设置问题,将问题作为知识讲解的载体,将新知识点融入问题中,让学生主动思考问题的解决方法,并在解决过程问题中讲解知识点,将问题贯穿整个课堂教学过程的教学方法。

由于《C程序设计》课程的基本概念较多,语法、数据结构复杂,算法较难,在教学过程中,在课堂上通过问题教学法可以提高学生的注意力,课堂气氛活跃,有利地调动学生思维的积极性和主动性,充分体现学生的主体地位。

问题驱动教学法可以利用课堂提问的方法,调动学生去思考问题;或者使用演示运行结果的方法,使学生因为看到运行结果而引起探索问题的原因;或者使用改错的方法,让学生思考错误的原因,从而掌握所学知识。

归纳练习和课堂翻转教学法,对于课堂新知识点的教学过程可分为:1)教授过程,使学生掌握新知识的概念和应用;2)归纳过程,即对本节课所学的知识进行归纳总结,找出难点和重点;3)练习过程, 根据本节课所学的知识和应用举例,进行基本概念和知识提升的练习,在做练习的过程中,学生对所学的知识进行巩固,达到自主学习的目的。教师检查,从中发现学生对知识的掌握情况,及时补充讲解,使学生对本节所学的知识进行充分的理解和掌握;4)在习题课中采用课堂翻转尝试教学法,以学生为主体,教师为学生提供尝试环境试题,让学生独立思考,探索创新。

2 课堂教学方法改革创新

《C程序设计》课堂教学环节包括复习,回顾上节内容;新知识的引入,详细讲解新知识点,应用举例;归纳总结与课堂练习等。根据各阶段不同的教学要求,采用不同的教学方法。

2.1 问题驱动法引入新知识

引入新知识时,教学目标是充分调动学生的学习积极性,明确学习的内容,思考如何解决问题,掌握知识点。

例如从如何解决以下问题入手,引入循环结构新知识点:1) 输入全班90个学生的成绩;2) 求100个整数和;3) 查找90个学生中C成绩的最高分;4) 统计一组数中素数的个数。本章教学内容比较简单,教学时间较短,只需点到“要学什么,怎么实现”就可以。

例1 求100个整数和的求解。其代码如下:

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

sum=sum+i;

教师列举需要编程解决的问题,并进行算法分析,写出程序流程图和算法的主要语句,讲解所用到的新的知识内容,实现循环控制,分析循环控制注意的关键问题。选取的案例应围绕教学重、难点,程序简洁,内容接近学生原有知识和能力,具有一定的应用性和趣味性。充分激发学生的好奇心和求知欲,使学生产生学习的动力。

2.2 程序举例法巩固新知识

程序举例巩固新知识点,解决实际问题。在课堂教学阶段,教学目标是要学生熟练掌握C语言的语法知识点和典型算法的设计。

案例1 判断n是否是素数[9]

#include

void main()

{

int n,i,k;

scanf(″%d″,&n);

k=sqrt(n);

for(i=2;i<=k;i++)

if(n%i==0)break;

if(i>=k+1)

printf(″%d is a prime number ″,n);

else

printf(″%d is not a prime number ″,n);

}

语法知识点:for(; ;)语句的使用语法;

算法设计:判断素数的算法。

在计算机语言学习过程中,编写程序要解决的问题一般都是简单的数学问题,学生对问题本身都是清楚的,但如何使用计算机编写程序来解决问题对初学者来说是一个难点,如果只是简单的程序讲解,学生会感觉平淡而失去学习兴趣,无法很好地掌握语句的使用和程序设计的精髓。

判断素数的算法是本课中最典型的算法之一,其难点是for(; ;)语句循环结束后,循环控制变量i值的变化情况,就此问题在课堂上让学生进行思考,i值在什么情况下n是素数?将所学的新知识点融入到问题中,以程序为载体,讲授知识点;问题作为驱动,理解for语句在程序中的应用;分析程序,给出运行结果,学生阅读程序后,明确所学的知识内容,掌握语句的初步使用和算法的设计思想。

2.3 递进式问题驱动法解决难点

递进式问题驱动完成课堂难点的讲解。指针一章是本书的难点,利用已学的知识引导学生分析案例,讨论问题的解决方法,递进式提问,环环紧扣,引导学生分析并解答问题,掌握课堂的难点。

案例2 返回值指针值得函数

学生在上机实验中用数组的方法实现了求10个学生5门功课的平均分,并且要排序平均分。

#define N 10

#define M 5

float a_stu[N];

void aver_stu(float score[10][5])

{int i,j;

float s;

for(i=0;i

{s=0;

for(j=0;j

s+=score[i][j];

a_stu[i]=s/5.0;}

}

案例分析3

#define N 10

#define M 5

float *aver_stu(void)

{int i,j;

float s;

float a_stu[N];

for(i=0;i

{s=0;

for(j=0;j

s+=score[i][j];

a_stu[i]=s/5.0; }

return a_stu;

}

案例1实验的目的是要求学生掌握函数的定义和全局变量的使用,所以在实验中每个学生的平均分是用全局变量定义。在讲到函数返回值是指针时,在本实验的基础上提出问题:如果每个学生的平均分不用全局变量,如何将在函数中求得的所有学生的平均分如何带回到主调函数中?函数的返回值是什么?

学生自主思考后教师给出提示:数组的名字代表什么?函数的返回类型如何定义?

由此引出函数返回值为指针类型,给出返回值为指针类型的函数的定义,学生参与思考和逐步递进式的案例分析3,学生掌握了本课的主要知识点,然后给出举一反三的实践练习题,巩固本课堂所学知识。

2.4 归纳练习法掌握知识点

课程总结时,对本节课的知识点进行归纳总结,在此基础上针对所学的新知识点进行练习,对C课程,主要掌握新语句的语法和功能,以及解决实际问题的应用。所以课堂练习题有基本概念的掌握和应用2部分,首先由教师给出课堂练习题,题目要具备全面性、完整性、覆盖新的知识内容和已学过的知识,从基本概念题到综合应用题,难度要适中,由浅入深引导学生分析、讨论,给出答案,归纳总结所用到的知识点。 在完整的案例分析之后,借鉴递进式教学法的思想,对练习题进一步扩展,增加难度,举一反三,启发学生对案例进一步完善。

1) 循环结构语句语法的实践练习案例

以下程序段中do-while循环的结束条件是( )

int n=0,i;

do {

scanf(″%d″,&i);

n++;

}while(p!=567 &&n<3);

A) i的值不等于567或者n的值小于3;

B) i的值等于567或者n的值大于等于3;

C) i的值不等于567并且n的值小于3;

D) i的值等于567并且n的值大于等于3;

2) 循环结构阶乘算法的实践练习案例

编写程序,求5!

#include

void main()

{int t=1,i=2;

do

{t=t*i;

i++;

} while(i<=5 );

printf(″t=%d″,t);

}

3) 所学知识点的综合实践案例

有如下程序

#include

#include

void main()

{ int n1=0,n2=0;

char c;

for( ;(c=getchar())!= ′#′; )

switch(c)

{case ′a′

case ′h′:

default: n1++;

case ′0′: n2++;

}

printf(″%d,%d ″,n1,n2);

}

如果从键盘上输入china#〈回车〉,则程序运行结果为( )

A) 5,5 B) 5,0 C) 6,6 D) 2,0

通过练习巩固所学的内容,使学生掌握分支、循环结构控制语句语法和应用。在练习过程中充分调动学生的积极性与主动性,让学生“边练边学”,进一步提高学生对基本概念和语法规则的理解和掌握,使学生更加深刻的理解课堂讲解中没有掌握的知识点,并将学到的知识转化为编程的能力,使不同程度的学生都能在此教学环节得到提高,达到课堂所学知识在本节课就能消化掌握的目的。

由简到难的递进式课堂练习,满足了不同程度学生学习的要求,可以几个同学一起讨论,互相帮助,互相解答疑问。在典型习题的分析过程中,要求学生积极参与,充分挖掘学生自主学习的能力和学习信心,培养学生实践创新能力,同时倡导学生要具有团队合作精神,因此,归纳总结与练习是课堂教学必不可少的教学环节。

2.5 翻转尝试教学法提升学生创新能力

课堂翻转尝试教学一般用于习题课中。该教学法以学生为主体,教师为学生创建尝试条件和试题,为学生的尝试活动提出任务,学生在所学的知识的基础上,用“七分熟”的旧知识创新学习“三分生”的新知识。试题包含新旧知识的连接点和探究性,能够调动学生学习探索新问题的兴趣。

案例4 求3*3矩阵的对角线元素的和

解答1

#include

void main()

{int a[3][3],sum=0;

int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf(″%d″,&a[i][j]);

for(i=0;i<3;i++)

sum=sum+a[i][i];

printf(″sum=%6d ″,sum);

}

解答2

#include〈stdio.h〉

void main()

{int a[3][3],sum=0;

int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf(″%d″,&a[i][j]);

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(i==j||i+j==2)

sum=sum+a[i][j];

printf(″sum=%6d ″,sum);

}

解答1是习题解答指导书中给出的答案,只求出正方向矩阵对角线元素和,本题作为反转尝试法教学的案例,要求学生自主设计算法并编写程序,教师检查后提出思考讨论的问题:思考对角线有几条?如何判断对角线上的元素?让学生讨论判断条件,并修改完善程序如解答2所示。

通过翻转尝试教学法培养学生分析问题、全面思考的能力,掌握C程序算法的设计思想,发展学生思维,增强学生的创新能力,也为教师有针对性地重点讲解提供信息。

3 结 论

“教学有法,但无定法”,没有一种放之四海而皆准的教学方法,应根据不同的教学内容、学生的理解情况,采用不同的教学方法的组合与创新,形成符合实际的高效教学方法[9]。 在《C程序设计》课程的课堂教学中,通过多年的教学实践,将问题驱动教学,举例教学,启发教学、递进式教学与传统的讲授教学相结合,营造了良好的课堂教学气氛,激发了学生的学习兴趣,让学生在愉快的环境下学习,既提高了教学效率,又培养了学生独立学习的能力。通过2015级电子专业79份问卷调查和信息反馈,对启发与讲授,讲授与互动的3+X教学方法得到所有学生的认可,并取得了良好的效果。2015级电子专业79人,在2015—2016学年第2学期《C程序设计》课程期末考试中良好以上占29.5%,不及格率占8.9%,其中包含重修学生22人,是历届学生中及格率最高的一年。

[1]相方莉.“微课”翻转课堂在高职C语言教学中的应用研究[J]. 中国教育信息化·基础教育, 2014(20):8-10.

[2]刘小晶. 翻转课堂模式在“数据结构”课程教学中的应用研究[J]. 教学实践与教师专业发展, 2014(8):105-109.

[3]曾明星. 软件开发类课程翻转课堂教学模式研究[J]. 实验室研究与探索, 2014,3(2):203-206.

[4]王蕊,萨娜. C_程序设计课程的翻转课堂教学模式研究与实践[J]. 软件工程师, 2015,18(3):49-50.

[5]韩新才. 高校生物技术专业教学方法改革探索与实践[J]. 广东化工, 2008,35(1):118-120.

[6]王新光,万定生,张希伟. 浅谈程序设计语言教学中工程能力的培养[J]. 吉林大学学报(信息科学版), 2005,23(增刊2):110-112.

[7]许淑华. C++程序设计课堂教学“X+2"方法探讨[J]. 计算机时代, 2014(6):63-65.

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

[9]张黎宁,苗哲,周宇. 基于多种教学方法优势互补的《C程序设计》课堂教学[J]. 计算机工程应用技术, 2008,4(8):2284-2285.

Exploration ofCprogramdesignteaching methods reform and innovation

WULijuan,WUJianjun,LILiu

(College of Physics Science and Technology, Shenyang Normal University, Shenyang 110034, China)

The classroom teaching methods and the teaching link innovation are induced and summed up by exploring ofCprogramdesigncourse teaching of many years in the paper. The “X +3” classroom teaching method are put forward. The different teaching methods are used according to the different teaching links and teaching contents in class teaching. At first new knowledge points are introduced by adopting the problem-driven method to make students clear learning content and the problem; the new knowledge are consolidated by the program example, class difficulty and important parts are explained to master the methods of solving the problem by progressive problem-driven teaching method; Then innovation teaching methods of summing up and practice strengthen the students master and understand the knowledge that have studied, and exercise students to analyze and solve problems abilities; Finally improve students’ ability of innovation to explore by flipping class and try teaching model. The teaching method gets the students approved and achieved good results through questionnaire investigation and information feedback.

classroom teaching; problem-driven; “X + 3” teaching method; generalization and practice; flipped class and try

2016-06-19。

辽宁省科技厅自然科学基金资助项目(201102205)。

吴丽娟(1964-),女,辽宁辽中人,沈阳师范大学教授,博士。

1673-5862(2016)04-0503-06

G642.0

A

10.3969/ j.issn.1673-5862.2016.04.026

猜你喜欢

C程序设计程序设计所学
所学专业在工作岗位用不上咋办?
基于Visual Studio Code的C语言程序设计实践教学探索
非所学
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
C程序设计趣味教学初探
C程序设计课堂趣味性教学初探
接轨全国等级考试,探讨高校C语言课程教学改革
论中职生C程序设计学习兴趣的培养
PLC梯形图程序设计技巧及应用