APP下载

发散思维与收敛思维在《C程序设计》中的应用

2015-05-28荆春萍

中国科技纵横 2015年9期
关键词:C程序设计发散思维

荆春萍

【摘 要】在《C程序设计》课堂教学中,将发散思维和收敛思维进行有机地结合,能够充分地调动学生学习积极性,激发了学生学习该课程的兴趣,提高了学生的学习探究能力,有效地进生了课堂教学创新。《C程序设计》是普通高职、高等院校计算机专业学生的必修课。而在中职教学中,开设《C程序设计》课程的目的是使学生掌握程序设计的基本概念及基本方法,并能较熟练地进行程序设计。

【关键词】发散思维 收敛思维 C程序设计

在中职的实际教学中,如何培养、激发、提高学生的编程兴趣至关重要,该文探讨了在《C程序设计》教学过程中的发散思维和收敛思维,并将其应用到实际的教学中。

1 发散思维(Divergent Thinking)

概念。又称辐射思维、放射思维、扩散思维或求异思维,是指大脑在思维时呈现的一种扩散状态的思维模式,它表现为思维视野广阔,思维呈现出多维发散状。发散思维是一种求异思维,为在广泛的范围内搜索,要尽可能地放开,把各种不同的可能性都设想到。

例如:输入一个大于3的整数m,判断它是否是“素数”(又称“质数”)

分析1:何为“素数”,即是数学中的“质数”,只能被1和它本身整除的数(而2—m-1范围内没有能被整除的数)。例如判断17是否是素数,要将17被2至16分别来整除,循环体被重复执行了15次。教材中的例题程序清单如下:我们称之为“程序一”

程序一

#include

main()

{ int m,i,k;

scanf("%d",&m);

k=m-1;

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

if(m%i==0)break;

if(i>k)printf("%d is YES!\n",m);

else printf("%d is NO!\n",m);}

分析2:程序改进其实m不必被2—m-1范围内的各整数去除,只须将2—m/2间的整数除即可,甚至只须被2— 之间的整数除即可。例如判断17是否是素数,只须将17被2、3、4除即可,如都不能被整除,m即为素数。这样做可以大大减少循环的次数,提高了程序的运行效率。程序清单如下:我们称之为“程序二”

程序二

#include/

#include

main()

{ int m,i,k;

scanf("%d",&m);

k=sqrt(m);

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

if(m%i==0)break;

if(i>k)printf("%d is YES!\n ",m);

else printf("%d is NO!\n ",m);}

实践证明,判断变量i与k之间的大小关系m不是素数时容易明白,是素数时学生在理解起来有一定的难度。下面再引入程序清单通过flag标志来判断m是否是“素数”,假定要判断的数是素数,设flag标志是1在通过循环判断只要m不是素数,马上修改标志flag是0,循环强行中止,最后在输出时根据flag的值来判断m是否是素数。原理也是依据定义及程序二的改进,我们分别称之这“程序三”和“程序四”

程序三:

#include

main()

{ int m,i,k,flag=1;

scanf("%d",&m);

k=k-1;

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

if(m%i==0){flag=0;break;}

if(flag==1))printf("%d is YES!\n ",m);

else printf("%d is NO!\n ",m);}

程序四:

#include

#include

main()

{ int m,i,k,flag=1;

scanf("%d",&m);

k=sqrt(m);

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

if(m%i==0){flag=0;break;}

if(flag==1))printf("%d is YES!\n ",m);

else printf("%d is NO!\n ",m);}

2 收敛思维(Convergent Thinking)

概念。又称“聚合思维”、“求同思维”、“辐集思维”或“集中思维”。收敛思维是一种求同思维,要集中各种想法的精华,达到对问题的系统全面的考察,为寻求一种最有实际应用价值的结果而把多种想法理顺、筛选、综合、统一。

收敛思维也是为了解决某一问题,在众多的现象、线索、信息中,向着问题一个方向思考,根据已有的经验、知识或发散思维中针对问题的最好办法去得出最好的结论和最好的解决办法。而发散思维是为了解决某个问题,从这一问题出发,想的办法、途径越多越好,总是追求还有没有更多的办法。

实践证明四个程序都能判断m是否是“素数”。学生通过分组探究,得出如下的结论。从学生易接受的角度来看,程序三、四要优于程序一、二;从程序运行的效率角度来看,程序四、二要高于程序三、一;从学生接受的角度和运行效率来看,程序四最佳选择。

发散思维与收敛思维在《C程序设计》中的还有许多应用实例,例如,分别用while、do—while、for来编程求1+2+3+……+100的和,对数据的排序分别用选择法、冒泡法、插入法排序,数据的查找分别有顺序查找和二分查找,分别用函数调用(简单变量和指针作函数参数)返回两个数中较大者等等,在此不再一一列举。

发散思维是由问题的中心指向四面八方,收敛思维是由四面八方指向问题的中心。发散思维是一种求异思维,为在广泛的范围内搜索,要尽可能地放开,把各种不同的可能性都设想到。收敛思维是一种求同思维,要集中各种想法的精华,达到对问题的系统全面的考察,为寻求一种最有实际应用价值的结果而把多种想法理顺、筛选、综合、统一。

发散思维与收敛思维是一种辨证关系,既有区别,又有联系,既对立又统一。没有发散思维的广泛收集,多方搜索,收敛思维就没有了加工对象,就无从进行;反过来,没有收敛思维的认真整理,精心加工,发散思维的结果再多,也不能形成有意义的创新结果,也就成了废料。只有两者协同动作,交替运用,一个创新过程才能圆满完成。

参考文献:

[1] 谭浩强 著.《C程序设计》(第四版).

猜你喜欢

C程序设计发散思维
例谈发散性思维训练
金融新晋军的“发散思维”
C程序设计趣味教学初探
接轨全国等级考试,探讨高校C语言课程教学改革
论中职生C程序设计学习兴趣的培养