浅谈反向教学法在C语言教学中的应用

时间:2022-09-19 02:59:49

浅谈反向教学法在C语言教学中的应用

摘 要:本文介绍了与传统的顺式教学法完全相反的反向教学法在C语言教学中的一些应用实例,对于课堂教学中一些难于理解、难于掌握的知识的讲解有明显的辅助作用。

关键词:反向教学;顺式教学;C语言

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

反向教学法是相对于传统的顺式教学法而言的一种教学方法,它改变了传统教学中从已知原因去探寻结果的过程,而是根据已知结果寻求结果产生的原因,这种方法有助于学生加深对所学知识的理解和掌握。反向教学法也可以理解为是“反其道而行之”的教学方法,简单说是将人们早已习惯的沿着事物发展的正方向去思考问题并寻求解决方法这一顺序反过来。其实,对于某些问题,尤其是一些特殊问题,从结论往回推,倒过来思考,从求解回到已知条件,反过去想或许会使问题简单化。

《C语言》是一种用于计算机程序设计的编程语言,在高校教学中常被用作程序设计的语言基础课。《C语言》本身是一门理论性很强,又依赖于大量上机实践的语言。学生在学习中,普遍反映知识不易掌握理解,甚至于无法独立编程、运用知识解决实际问题。

传统的课堂教学中,教师多是依照教材编写顺序,先讲解变量定义,再讲变量定义示例,最后是程序举例讲解变量在程序中如何应用。如此的教学顺序,对于比较简单的内容,学生能理解掌握,但对于较复杂的部分,如指针,就不能收到良好的教学效果。

如果我们打破常规的教学顺序,反其道而行之,结果又会如何呢?

接下来,谈谈本人在C语言课程教学中应用反向教学法的一些经验体会。

1在讲解变量定义语法格式中运用反向教学法

C语言中规定,变量在使用之前必须先定义,即给出数据类型,让编译系统根据数据类型为其分配内存空间。

传统的教学过程中,是先讲解指针变量定义的一般形式,然后依据定义格式,再给出一些指针变量定义的示例。本人认为此种教学顺序不能很有效地让学生深刻理解指针变量定义及其使用方法。本人在课堂教学中曾采用如下过程讲解二级指针。

首先,给出变量应用实例示意图:

a、p、q均是变量名,且已分配空间。由示意图的指向可看出:变量q指向变量p,变量p指向变量a,已知a存储单元中存放整数值10(严格的说是10的二进制形式),可得出a是整型变量,定义形式为:int *a;

变量p是指向变量a的,指向关系是通过地址来体现的,可以说,某变量的地址“指向”该变量单元。由此可知,变量p存储单元中存放的是变量a的地址,即变量p是存放地址的变量也就是指针变量,得出变量p的部分定义形式:*p

由于指针变量p所指向的变量a是整型的,即基类型为int,因此完整的p变量的定义形式为:int *p;

变量q指向变量p,可知q是指针变量,得出部分定义形式:*q

由于指针变量q所指向的变量p的类型是int *,因此完整的q变量定义形式为:int **q;

C语言中规定,指针变量在使用之前不仅需要定义说明,而且必须赋予具体的值,未经赋值的指针变量不能使用,否则可能会造成系统混乱,甚至死机。

由指针p指向变量a知,指针p的值是a的地址&a,可由如下赋值语句实现:p=&a;

同理,由指针q指向变量p可知,q的值是p的地址&p,可由如下赋值语句实现:q=&p;

由上综述,得出变量a、p、q的定义及赋值如下:

int a;

int *p;

int **q;

p=&a;

q=&p;

由int **q;可推出二级指针变量定义的一般形式是:

类型标识符 **指针变量名;

反向教学法虽然违背了人们在潜移默化中已经形成的研究问题的顺序,也就是所谓的正序,但是因为这一特点,可以将复杂问题简单化,使得许多依靠顺式不能解决或难以解决的问题可以轻松的解决,并可以加深对问题的进一步认识,能够充分提高学生主动学习的兴趣。

2 在讲解程序填空题时运用反向教学法

根据程序运行结果完成程序填空题。学生在做此类题时往往一头雾水,不知该从何处下手,此时巧妙运用反向教学法可能会收到意想不到的效果。例如,在C语言教材中有一道这样的程序填空题,要求实现打印出如下所示三角形,完成填空。

1

22

333

4444

55555

666666

7777777

88888888

999999999

#include

main( )

{ int i,j;

for(i=1;i

{ for(j=1;j

printf(“\n”);

}

}

2.1 学情分析

此程序填空题,是由方风波主编、地质出版社出版的《C语言程序设计》教材中,第三章结构化程序设计的课后习题(本人稍加修改)。学生此时已经学过结构化程序设计的三种基本结构:顺序结构、选择结构、循环结构。对构成循环结构的while语句、do-while语句、for语句的语法格式、执行过程都已了解并掌握,并能分析出较简单的循环结构的程序的执行结果。但是对程序填空题来说,某些程度上也考验学生的编程能力。学生此时还没具有独立编程的能力,因此做此题时困难很大。

2.2 运用反向教学法分析完成

从打印输出的结果要求可以很明显的看出,结果呈9行显示,每行显示的数据值及数据个数与行号相等。那要如何实现呢?程序中使用了双重嵌套的for循环语句,嵌套循环执行过程的特点是外层循环执行一次,内层循环执行一轮。如果能用嵌套循环的外层循环、内层循环分别代表行号及控制每行中可以输出数据个数,而内层循环的循环体语句用来实现打印输出数据及换行,问题就可以引刃而解了。

也就是说,用外层循环执行9次表示9行,i是循环控制变量,初始值为1,循环执行9次,可得出满足循环控制条件的i的最大值可取得9。外层循环的循环体由for语句和“printf(“\n’);”语句组成,”printf(“\n’);”语句可实现换行,即在输出相应个数数据后换行;换言之,外层循环的循环体中的for语句可实现打印输出若干数据。数据个数由循环次数决定,由于每行输出数据个数不同,也就是决定输出数据个数的for语句的循环次数不同,但控制数据输出个数的循环次数恰好与其所在行的行号相同,作为循环控制变量的j的初始值为1,每次循环执行后循环控制变量都加1,由此可得出j的最大取值与控制行号的i变量的值相等,但循环控制表达式中使用的运算符是“

在完成此程序填空题的过程中,我们巧妙地运用了反向教学法,从结果出发,层层深入,逆推出需要达到的目标,当用正向思考方式无从下手时,反向思考有时可以起到意想不到的妙用。

在课堂教学中适当的应用反向教学法,有助于学生加深对所学知识的理解和掌握,可以提高教学效果;但不能一味的全盘否定顺式教学法而全部应用反向教学法。它只是众多教学方法中的一种,它并不是十全十美的。选择何种教学方法,应该考虑知识内容的特点、学生的知识基础、课堂教学环境等等。选择恰当的一种或几种教学方法,相互之间相辅相成,不但能够活跃课堂气氛、提高学生学习兴趣,还能够加深学生对知识的理解,更重要的是能够帮助教师顺利圆满地完成教学任务。

参考文献

[1]方风波.C语言程序设计[M].地质出版社.北京.2009

[2]逆向思维法.来源:百度百科

[3]反向教学法在高中生物教学中的应用初探.来源:全国中小学教师继续教育网.

上一篇:研发中心实验仪器设备的采购及有效管理探讨 下一篇:浅谈财经类《高等数学》课程改革的一些想法