- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
“杨辉三角”与一题多解的计算思维.doc
“杨辉三角”与一题多解的计算思维
摘要:程序设计类课程充满了思维探索,教师可围绕某个典型题例,进行一题多解的思维训练,学生通过自主探索来接触计算思维,从多元角度对同一问题,进行分析与求解,立体训练自己的能力。
关键词:杨辉三角;一题多解;实践环节;计算思维
中图分类号:TP311.1 文献标识码:A 文章编号:1009-3044(2013)26-5917-03
1 概述
程序设计类课程对于初学学生来说,是一门既有挑战,又有点难度的课程。学得好的同学就是高手,不能入门的连考个及格都困难。因此教师教授这类课程时,肯定不能照本宣科,也不能简单按模块教学,应该围绕培养学生的计算思维展开。
即以典型的专题为载体,用思维训练来贯穿整门课程。精选案例,对每个案例发散展开,精讲多练,并让学生进行自主的循序渐进的实践训练。
案例或载体的选择原则如下:应该选择一些基础性的综合的案例。这些案例蕴含了:1)基本知识如语法、丰富数据类型;2)凸现程序基本结构;3)能带有一定典型算法。举例来说,杨辉三角带有组合问题数学背景,蕴含了循环结构和二维数组操作的案例。斐波拉契数列蕴含了迭代或递归等多个循环算法的案例。润年就是一个蕴含一个逻辑结构、选择结构算法的案例。
我们对案例内的一些内容作一些约定,比如基础算法选择结构、基本循环、基本双重循环、简单的数据结构都成为原子的知识或技能点或能力点。比如输出一个长方形的*形图案,考核的是对双重循环的掌握,我们认为这个长方形的*形图案是简单的、原子的能力点。还有上三角*也是原子的能力。而棱形*图案,我们认为它是复杂的,它对循环控制的要求较高。举例来说,下三角的输出就是一个原子能力点,代码如下:
//空C文件也是原子的
#include stdio.h
main()
{}
//原子能力点,二维数组的输出
for(i=0;iN;i++)
{ for(j=0;j N;j++)
printf(%d ,a[i][j]);
printf(\n);
}
//原子能力点,完整的下三角*的输出
#include stdio.h
main()
{ int i,j;
for(i=0;i5;i++)
{ for(j=0;j=i;j++)
printf(%c ,*);
printf(\n);
}}
后续文中提到的原子能力点,大家就不会感到突兀了。
2 何谓一题多解
这里讲到的一题多解,可以是从分析—设计—实现过程中任何可能的变化都可以提取到解题方法,谓之多解。多解的思维的一定是发散性的,发散了那么多的思绪,得到那么多解,如何传授的完毕。因而,在操作前老师,其实,都已经结合课程的内容,来准备案例了,将一些无关C语言课程的思绪撇开,保持集中几个重点,从经典的方法中挖掘思维,授课。
但是,到此如何终止那么学生是得不到锻炼的,因而,留下思考的空间给学生还有其他的解法吗,自己去动脑筋,考虑的方向,依然是用C规范范畴,可以结合数据结构或者算法或者根据问题的定义去设计解法,得到答案,要反馈总结,如,逆向思考,自己做得C程序的解是否有数据结构的局限性,存储空间的局限性,方法本身的局限性。甚至C都弄清楚后,对于一般程序设计的解法是什么,又进行了合并、推理、推广,得到新一轮提升。
3 杨辉三角与一题多解的计算思维
以杨辉三角为例谈一题多解的问题。得到我们的第一步:
1)待求解问题。
我们会先考虑分析其数学背景,为多项式系数问题,得到第二步:
2)转换与替代:把求解问题抽象成数学问题,需要有高中的数学背景知识。
从数学的角度递进得到,系数与组合的关系。
每个具体的数字是[Cnm],就是三者阶乘(m!/(m-n)!)/n!,到此,一种计算杨辉三角的方法诞生了:编写原子的求阶乘的函数,用单重循环实现,数学问题被替代成自然杨辉的C语言编码:数学的三者相除,被替代成三次调用此阶乘函数,c(i,j)= f(j)/f(i-j)/f(j),得到杨辉三角的每个系数,下一步,
3)类比发现隐含的相似性,杨辉三角的形状同C原子能力点下三角*输出形状相似,输出方法可以调用前面学过的知识,完成,杨辉三角的每个数据的输出方法。
* for(i=0;i4;i++)
* * {for(j=0;j=i;j++)
* * * 输出*
* * * * 回车}
类比得到:
for(i=0;iN;i++)
for (j=0;j=i;j++)
{c(i,j)=f(j)/f(i-j)/f(j);
输出c(i,j);
回车}
原创力文档


文档评论(0)