论文部分内容阅读
【摘 要】本文以C语言程序设计课程中的穷举法教学为例,论述了培养学生创造思维能力的教学设计方法。
【关键词】创造思维 穷举 教学主线 教学实例
计算机科学是培养学员信息素养和创新能力的基本学科。而C语言程序设计是计算机基础教育的核心课程,下面就以穷举法教学为例,谈谈培养学生创造思维能力的教学设计方法。
1 创造思维能力
创造思维能力是指思维活动的创造意识和创新精神,表现为不墨守成规,奇异、求变,创造性地提出问题和创造性地解决问题。创造性思维不是与生俱来的,而是后天认真思考、培养、锻炼出来的。创造思维能力的培养包含以下几个方面:
1.1 好奇心与求知欲的激发
好奇心和求知欲是影响人的创造力强弱的推动力。实验研究表明,一个好奇心强、求知欲旺盛的人,往往勤奋自信,善于钻研,勇于创新。
1.2 发散思维和聚合思维的培养
发散思维和聚合思维在人类的创造性活动中均有着不可替代的作用。具有良好发散思维的人,一般对新事物很敏感,而且具有回避老一套解决问题的强烈愿望。具有良好聚合思维的人,则善于在大量杂乱无章的事件中寻找规律、发现问题。
1.3 直觉思维和逻辑思维的培养
直觉思维和逻辑思维在创造性活动中的作用是相辅相成的。所谓直觉思维,是指未经逐步分析而迅速地对解决问题的途径和答案做出合理反映的思维。如猜测、预感、设想、顿悟等。一般情况下的直觉思维都是不完善和不明确的,甚至有时是错误的。逻辑思维是直觉思维的一个必要的检验、修改和订正的完善过程。
2 穷举法教学设计
2.1 教学主线设计
穷举法是C程序设计中最基本也是最重要的一种算法设计方法,教学中不仅要阐明其基本思想,最重要的是要教会学生运用穷举法编写程序解决实际问题。
确定教学主线时主要考虑知识脉络和学生的认知规律两方面的问题。从知识脉络方面看,应首先介绍穷举法基本思想,再讲解穷举算法设计要点,最后分析算法的优化策略。从学生的认知规律分析也应由浅入深、由易入难,应从学生身边的生活实例入手引出教学内容,然后在展开讲解、深入分析的基础上总结出应用要点,最后通过一个较难的实例验证教学效果并提出改进策略。基于以上两点分析教学主线的设计下所示:
趣例引入※穷举法基本思想※穷举法应
用要点※课堂实践※穷举法优化策略
2.2 教学实例的选取与组织
一个好的教学实例既能体现教学内容的实质,又具有一定的趣味性,并且稍加变通后即可用来强调知识点中不易被掌握的部分。
根据上述教学主线的设计,本次课程需要至少三个教学实例。首先在引入部分需要一个非常有趣并且学生能主动参与其中的穷举法应用实例,这里选用“数字魔术”游戏;第二个教学实例应具有一定的难度,并且在求解的思维过程上要有别于第一个实例,最好带有一定的历史背景,这里选用“八皇后问题”;最后一个教学实例主要用于课后练习,难度上应介于前两个实例之间,但在设计上仍需保有一定的挑战性,这里选用“爱因斯坦的智力题”。
看似分散的三个实例,我们可以在组织形式上穿针引线、有的放矢,使它们成为一个逻辑整体。用有趣而简单的实例启发学生自主设计和总结运用穷举思想设计算法的步骤,提出一个复杂的实例来验证学生们总结出来的步骤是否适用,最后在实例演示时提出优化策略,拓展学生的设计思路。
3 培养创造思维能力的教学细节设置
教学中对学员创造思维能力的培养要渗透到教学内容设置的细节。以实际问题的解决为牵引对教学内容进行升华,创造性的迁移和组合知识点,在传授知识的同时训练学生的思维能力和创造能力。下面结合本文作者的教学实践,谈谈穷举法教学案例中培养学生创造思维能力的教学细节设置。
3.1 趣例引入激发学生好奇心和求知欲
在第一时间激发学生的好奇心和求知欲是启发学生创新思维的关键。一个有趣且能全民参与的实例可以使教学内容在无形中自然推进。
本次穷举法教学课例由一个“数字魔术”游戏引入,如图1所示。一开始大家都很踊跃,想试试“电脑”是不是就真的那么神,能猜到自己心里想好的神秘数字,结果它真的猜到了,并且速度还很快。很自然的,同学们就很好奇,“这怎么可能?这个数字我没有告诉任何人呀,它是怎么知道的呢?”瞬间,整个课堂就活跃起来了。
图1 “数字魔术”游戏
3.2 问题剖析促使直觉思维向逻辑思维转化
运用直觉思维我们不可能发现“数字魔术”的秘密,那么运用逻辑思维来分析看看会有什么发现呢?
对于电脑而言,它所获取的信息有两个:①该数字是个3位数;②该3位数的个位、十位、百位排列组合后形成的其余5个数之和。由第一个条件可以确定要猜的数字在100到999之间,而第二个条件看上去对猜数字似乎没有任何帮助,这时我们运用数学中简单的提取公因式方法将其变换一下,即可得到如公式1所示的结果。至此,运用数学方法我们仍然不能得到确定的结果,怎么办呢?只能用最笨的方法了,那就是“一一测试”即“穷举”。其实,电脑也是这么做的,只是它的计算能力太强了,不到1秒就能得出答案。
122a 212b 221c = m 公式1
3.3 一题多解训练发散思维
请A同学叙述一下他运用穷举法猜数字的过程,然后按照A同学的叙述一步步编写程序即可得到下表1中方法一所示的程序,这种方法在每次测试时都要先将i分解成a、b、c,那能不能直接对a、b、c穷举呢?按照这种思路,就得到方法二。(由学生提出该方法更好)
表1 “数字魔术”核心代码
方法一:单重循环实现 方法二:多重循环实现 for(i=100;i<1000;i ){/*穷举范围*/
/*将整数拆分成个、十、百*/
a=i/100;
b=i/10;
c=i;
/*解的判定条件*/
if(122*a 212*b 221*c==m)
printf(“number=%d”,i);
} for(a=1;a<10;a )/*穷举范围*/
for(b=0;b<10;b )
for(c=0;c<10;c )
/*解的判定条件*/
if(122*a 212*b 221*c==m)
printf(“number=%d”,a*100 b*10 c);
3.4 沙里淘金培养聚合思维
分析上述两种方法,虽然它们在形式上不尽相同,但在本质上它们是一致的,从两种方法的解题思路上引导学生总结得出穷举法的应用要点,主要包括如下四步:
①能不能用穷举?只要问题的解是有限可列举的即可用穷举。
②确定穷举对象。要求什么就穷举什么,穷举对象应作为循环变量,有几个穷举对象就用几重循环与之相对应。
③确定穷举范围。确定每个穷举对象的可能取值范围,做到不遗漏、不重复。
④确定解的判定条件。用逻辑表达式表示解的判定条件,做到准确、不遗漏。
如上述所示的总结性知识要点最好由教师引导学生自主总结得到,不要采用平铺直叙的方式直接给出结论。如若不然,就达不到训练学生聚合思维的目的。
3.5难例应用启发逆向思维
“八皇后问题”用穷举法解决时有两个设计难点:一是穷举对象的表示,需要将棋盘上8个皇后的位置用一个整数表示出来。每个皇后的位置可用一个二元组表示,而且8个皇后两两不同行,因此可将位置信息中的行与整数的位对应,将对应行上的皇后列信息写入对应的整数位即可,如图2中a所示。二是解的判定条件中要求两两皇后不在同一斜线上的条件表示方法。总共8个皇后30条斜线,这个判定条件从正面分析是不可能得出结果的,此时就必须采用逆向思维的方法考虑两两皇后在同一斜线上的情况,很快就能写出判定条件了。如图2中b所示。
4 结束语
C程序设计的教学目标分为三个层次:知识本体的掌握、计算思维能力和编程能力的训练、创新能力的培养。在教学设计过程中应综合教学内容、教学目标和教学对象特点合理选择和组织教学实例,使知识的掌握与能力的训练有机结合以达到培养学生创新能力的目的。由于教学实例是实际的知识与能力的载体,因此选择具有趣味性、承载力和表现力强的教学实例是教学设计成败的关键。
【参考文献】
[1]李雪竹,王锋,蔡之让.C程序设计中创新能力的培养.宿州学院学报, 2007,22(1): 156-158.
[2]郭理,秦怀斌,戴建国.《程序设计基础》课程创新性教学的改革与实践.兵团教育学院学报,2013,23(2):38-41.
[3]张子睿.大学生创新与创业能力提升.北京:科学出版社,2008.
[4]刘道玉. 创造教育概论.武汉:武汉大学出版社,2009.
【关键词】创造思维 穷举 教学主线 教学实例
计算机科学是培养学员信息素养和创新能力的基本学科。而C语言程序设计是计算机基础教育的核心课程,下面就以穷举法教学为例,谈谈培养学生创造思维能力的教学设计方法。
1 创造思维能力
创造思维能力是指思维活动的创造意识和创新精神,表现为不墨守成规,奇异、求变,创造性地提出问题和创造性地解决问题。创造性思维不是与生俱来的,而是后天认真思考、培养、锻炼出来的。创造思维能力的培养包含以下几个方面:
1.1 好奇心与求知欲的激发
好奇心和求知欲是影响人的创造力强弱的推动力。实验研究表明,一个好奇心强、求知欲旺盛的人,往往勤奋自信,善于钻研,勇于创新。
1.2 发散思维和聚合思维的培养
发散思维和聚合思维在人类的创造性活动中均有着不可替代的作用。具有良好发散思维的人,一般对新事物很敏感,而且具有回避老一套解决问题的强烈愿望。具有良好聚合思维的人,则善于在大量杂乱无章的事件中寻找规律、发现问题。
1.3 直觉思维和逻辑思维的培养
直觉思维和逻辑思维在创造性活动中的作用是相辅相成的。所谓直觉思维,是指未经逐步分析而迅速地对解决问题的途径和答案做出合理反映的思维。如猜测、预感、设想、顿悟等。一般情况下的直觉思维都是不完善和不明确的,甚至有时是错误的。逻辑思维是直觉思维的一个必要的检验、修改和订正的完善过程。
2 穷举法教学设计
2.1 教学主线设计
穷举法是C程序设计中最基本也是最重要的一种算法设计方法,教学中不仅要阐明其基本思想,最重要的是要教会学生运用穷举法编写程序解决实际问题。
确定教学主线时主要考虑知识脉络和学生的认知规律两方面的问题。从知识脉络方面看,应首先介绍穷举法基本思想,再讲解穷举算法设计要点,最后分析算法的优化策略。从学生的认知规律分析也应由浅入深、由易入难,应从学生身边的生活实例入手引出教学内容,然后在展开讲解、深入分析的基础上总结出应用要点,最后通过一个较难的实例验证教学效果并提出改进策略。基于以上两点分析教学主线的设计下所示:
趣例引入※穷举法基本思想※穷举法应
用要点※课堂实践※穷举法优化策略
2.2 教学实例的选取与组织
一个好的教学实例既能体现教学内容的实质,又具有一定的趣味性,并且稍加变通后即可用来强调知识点中不易被掌握的部分。
根据上述教学主线的设计,本次课程需要至少三个教学实例。首先在引入部分需要一个非常有趣并且学生能主动参与其中的穷举法应用实例,这里选用“数字魔术”游戏;第二个教学实例应具有一定的难度,并且在求解的思维过程上要有别于第一个实例,最好带有一定的历史背景,这里选用“八皇后问题”;最后一个教学实例主要用于课后练习,难度上应介于前两个实例之间,但在设计上仍需保有一定的挑战性,这里选用“爱因斯坦的智力题”。
看似分散的三个实例,我们可以在组织形式上穿针引线、有的放矢,使它们成为一个逻辑整体。用有趣而简单的实例启发学生自主设计和总结运用穷举思想设计算法的步骤,提出一个复杂的实例来验证学生们总结出来的步骤是否适用,最后在实例演示时提出优化策略,拓展学生的设计思路。
3 培养创造思维能力的教学细节设置
教学中对学员创造思维能力的培养要渗透到教学内容设置的细节。以实际问题的解决为牵引对教学内容进行升华,创造性的迁移和组合知识点,在传授知识的同时训练学生的思维能力和创造能力。下面结合本文作者的教学实践,谈谈穷举法教学案例中培养学生创造思维能力的教学细节设置。
3.1 趣例引入激发学生好奇心和求知欲
在第一时间激发学生的好奇心和求知欲是启发学生创新思维的关键。一个有趣且能全民参与的实例可以使教学内容在无形中自然推进。
本次穷举法教学课例由一个“数字魔术”游戏引入,如图1所示。一开始大家都很踊跃,想试试“电脑”是不是就真的那么神,能猜到自己心里想好的神秘数字,结果它真的猜到了,并且速度还很快。很自然的,同学们就很好奇,“这怎么可能?这个数字我没有告诉任何人呀,它是怎么知道的呢?”瞬间,整个课堂就活跃起来了。
图1 “数字魔术”游戏
3.2 问题剖析促使直觉思维向逻辑思维转化
运用直觉思维我们不可能发现“数字魔术”的秘密,那么运用逻辑思维来分析看看会有什么发现呢?
对于电脑而言,它所获取的信息有两个:①该数字是个3位数;②该3位数的个位、十位、百位排列组合后形成的其余5个数之和。由第一个条件可以确定要猜的数字在100到999之间,而第二个条件看上去对猜数字似乎没有任何帮助,这时我们运用数学中简单的提取公因式方法将其变换一下,即可得到如公式1所示的结果。至此,运用数学方法我们仍然不能得到确定的结果,怎么办呢?只能用最笨的方法了,那就是“一一测试”即“穷举”。其实,电脑也是这么做的,只是它的计算能力太强了,不到1秒就能得出答案。
122a 212b 221c = m 公式1
3.3 一题多解训练发散思维
请A同学叙述一下他运用穷举法猜数字的过程,然后按照A同学的叙述一步步编写程序即可得到下表1中方法一所示的程序,这种方法在每次测试时都要先将i分解成a、b、c,那能不能直接对a、b、c穷举呢?按照这种思路,就得到方法二。(由学生提出该方法更好)
表1 “数字魔术”核心代码
方法一:单重循环实现 方法二:多重循环实现 for(i=100;i<1000;i ){/*穷举范围*/
/*将整数拆分成个、十、百*/
a=i/100;
b=i/10;
c=i;
/*解的判定条件*/
if(122*a 212*b 221*c==m)
printf(“number=%d”,i);
} for(a=1;a<10;a )/*穷举范围*/
for(b=0;b<10;b )
for(c=0;c<10;c )
/*解的判定条件*/
if(122*a 212*b 221*c==m)
printf(“number=%d”,a*100 b*10 c);
3.4 沙里淘金培养聚合思维
分析上述两种方法,虽然它们在形式上不尽相同,但在本质上它们是一致的,从两种方法的解题思路上引导学生总结得出穷举法的应用要点,主要包括如下四步:
①能不能用穷举?只要问题的解是有限可列举的即可用穷举。
②确定穷举对象。要求什么就穷举什么,穷举对象应作为循环变量,有几个穷举对象就用几重循环与之相对应。
③确定穷举范围。确定每个穷举对象的可能取值范围,做到不遗漏、不重复。
④确定解的判定条件。用逻辑表达式表示解的判定条件,做到准确、不遗漏。
如上述所示的总结性知识要点最好由教师引导学生自主总结得到,不要采用平铺直叙的方式直接给出结论。如若不然,就达不到训练学生聚合思维的目的。
3.5难例应用启发逆向思维
“八皇后问题”用穷举法解决时有两个设计难点:一是穷举对象的表示,需要将棋盘上8个皇后的位置用一个整数表示出来。每个皇后的位置可用一个二元组表示,而且8个皇后两两不同行,因此可将位置信息中的行与整数的位对应,将对应行上的皇后列信息写入对应的整数位即可,如图2中a所示。二是解的判定条件中要求两两皇后不在同一斜线上的条件表示方法。总共8个皇后30条斜线,这个判定条件从正面分析是不可能得出结果的,此时就必须采用逆向思维的方法考虑两两皇后在同一斜线上的情况,很快就能写出判定条件了。如图2中b所示。
4 结束语
C程序设计的教学目标分为三个层次:知识本体的掌握、计算思维能力和编程能力的训练、创新能力的培养。在教学设计过程中应综合教学内容、教学目标和教学对象特点合理选择和组织教学实例,使知识的掌握与能力的训练有机结合以达到培养学生创新能力的目的。由于教学实例是实际的知识与能力的载体,因此选择具有趣味性、承载力和表现力强的教学实例是教学设计成败的关键。
【参考文献】
[1]李雪竹,王锋,蔡之让.C程序设计中创新能力的培养.宿州学院学报, 2007,22(1): 156-158.
[2]郭理,秦怀斌,戴建国.《程序设计基础》课程创新性教学的改革与实践.兵团教育学院学报,2013,23(2):38-41.
[3]张子睿.大学生创新与创业能力提升.北京:科学出版社,2008.
[4]刘道玉. 创造教育概论.武汉:武汉大学出版社,2009.