• 读者文摘
  • 美文摘抄
  • 短文摘抄
  • 日记大全
  • 散文精选
  • 感恩亲情
  • 人生感悟
  • 智慧人生
  • 感悟爱情
  • 心灵鸡汤
  • 实用文档
  • 名人名言
  • 伤感文章
  • 当前位置: 蜗牛文摘网 > 读者文摘 > 引导学生算法思维方式发展的策略探究

    引导学生算法思维方式发展的策略探究

    时间:2020-04-06 05:17:45 来源:千叶帆 本文已影响

    摘要:学生的思维能力存在个性差异,本文着眼于研究如何通过引导学生思维方向和方式来提高学生思维能力。

    关键词:思维方式和方法;算法代码;思维能力

    思维方式和方法,实质是人的思维的个性特征,它反映了每个个体智力或思维水平的差异,是发展学生思维能力的一种方法。教会学生思考,引导学生的思维在知识和技能学习和应用中自由发挥,是教师在教学中的目标。

    一、分类概括,递进推导,引导思维方式方法沿合理性方向发展。

    人的思维活动的广度性、深刻性和难度,集中表现为智力活动中深入思考问题,它是思维活动的抽象程度和逻辑水平以及思维活动的广度和深度的集中表现。

    案例:C++程序设计语言课的教学中,在介绍选择排序之前,先请学生复习冒泡排序的方法。然后讨论:第一遍排序的实质是什么,如何简化这个过程?学生概括:每一个排序就是在剩余未排序的数中最大(或最小)的数放在这些数的最后(或最前面)。教师布置任务:学习选择排序,先以每一遍为例,思考这个循环目的是什么?

    min=0;

    for(j=1;j<N;j++)

    if(data[j]<data[min])

    min=j;

    学生反馈:这个循环完成以后,变量min中记录了data数组中最小数的位置。教师提示并提问:若用以下语句,完成什么功能?

    if(min!=0)

    {

    k=data[min];

    data[min]=data[0];

    data[0]=k;

    }

    學生反馈:数组data中的第一个元素中存放了这组数中的最小数。教师提示:对于长度N的数组,需处理N-1次,以上的流程就是这N-1次中的第一次,请问如要完成排序应如何安排算法?学生反馈:相似于冒泡排序,利用双重循环:

    for(i=0;i<N-1;i++)

    {

    min=i;

    for(j=i+1;j<N;j++)

    if(data[j]<data[min])

    min=j;

    if(min!=0)

    {

    K=data[min];

    data[min]=data[0];

    data[0]=k;

    }

    }

    教师分析总结:我们把这个实现步骤分解以后会发现其实选择排序一点都不难,其过程可以分两步:第一步找数据,找出每一遍中要找的那个最小(或最大)数。第二步交换,如果找到的最小(或最大)数不在它应在的未排序的数的首(或末)则应将它放置到指定的位置。高级语言中很多算法是在原来学过的算法基础上通过合理的分类概括和递进推导而合理地组合起来,因而引导学生思维方式和方向的合理性方向发展是首要环节。

    二、合理想象,多向求解,培养思维方式的灵活性和方向的多元性。

    思维的灵活性是指思维活动的灵活程度,表现为思维过程灵活,创意能力强,善于组合分析,思维结果往往是合理而灵活的结论。

    案例:在C++程序设计语言课上,学生已掌握了1+2+3+…+99+100的循环结构的基础上,让学生推导1-2+3-4+…+99-100的程序代码,最初设想让学生推导出s=s+i*9-(-1)*(i+1),但是在实际的上课过程中学生却给出了五花八门的答案:

    (1)设定初始值n=1,在后面的循环体内设置n=-n;s=s+n*i;

    n=1;s=0;

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

    {

    s=s+n*i;

    n=-n;

    }

    (2)采用循环加分支,认为可以通过条件判断来决定正负号

    s=0;

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

    if(i%2==0)

    s=s-i;

    else

    s=s+i;

    分析:学生的想象力和创造力是惊人的,“条条大路通罗马”这句话是对算法实现方法的最好诠释。所以,在日常教学中,我们必须给学生多一点时间和空间,让他们自己去思考和实践。

    三、拓展思维,敢于尝试,一题多解,在思维和想象力上培养学生的创造性

    所谓创造性思维是指有创见的思维,对于一般人来讲,创造性思维能力就是“自我实现”和“自我开发”的能力。只要通过自己的努力,思考解决了本人以前未能解决的一些问题,就是创造性思维能力的表现。

    案例:在上课时以“水仙花数”(一个三位数,它本身等于它的各位的立方之和,如153=13+53+33)作为练习,要求出100-1000以内的所有“水仙花数”。大部分学生直接根据给出的提示,得到如下代码:

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

    {

    a=i/100;//百位数

    b=(i-a*100)/10;//十位数

    c=i%10;//个位数

    if(i==a*a*a+b*b*b+c*c*c)

    cout<<i<<endl;

    }

    也有一部分学生认为“水仙花数”的每一位都是范围固定,所以可用筛选的方法,以组合的方法将不同三位数组合起来判断是否是“水仙花数”,从而得出如下代码:

    for(a=1;a<=9;a++)

    for(b=0;b<=9;b++)

    f(c=0;c<=9;c++)

    if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)

    cout<<a<<b<<c<<endl;

    这样通过这两个方法的讲解分析,让学生理解不同思路,引领学生的发散思维,从而拓展了思维,为创造性思维的建立打下基础。

    四、比较鉴赏,独立分析,大胆质疑,培养学生的“扬弃”能力

    思维方式和方法的建立是具有批判性的,从而达到“扬弃”的目的。在教学中我们应当创造提供条件,要求学生大胆进行批判性思维,大胆分析,大胆提出更好的见解,提出不同的方法和观点。

    案例:以经典例题求解“百钱买百鸡”(鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一),问鸡翁、雞母和鸡雏各几何?

    部分学生给出算法:公鸡的范围是1-20,母鸡的范围1-33,小鸡的范围1-100。

    for(x=1;x<=20;x++)

    for(y=1;y<=33;y++)

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

    if(x+y+z==100&&5*x+3*y+z/3==100)

    cout<<x<<’,’<<y<<’,’<<z<<endl;

    教师提问:有没有其他好的算法?部分学生得出新算法:公鸡的范围为1-20,母鸡的范围为1-33,假定公鸡有x只,母鸡y只,那么小鸡就是100-x-y。

    for(x=1;x<=20;x++)

    for(y=1;y<=33;y++)

    {

    z=100-x-y;

    if(5*x+3*y+z/3==100)

    cont<<x<<’,’<<y<<’,’<<z<<endl;

    }

    教师分析:比较两段算法代码,第一个算法是三重循环,第二个算法是双重循环,我们可以推算第一个算法的执行是2033100=66000次,而第二算法是2033=660次,在相同的计算机中运行次数相差100倍,从恒量算法的效率指标上来看,第二个算法更有效率,因而第二算法较第一算法更理想。

    从讲究学生思维的多样性,培养学生的发散思维来看,合理地以空间、时间效率来恒定算法的优劣,学会“扬弃”,利用他山之石来攻玉也是引导学生思维方式和方法培养的一个重要的方面。

    五、结语

    引导学生的思维方式方法,有助于学生思维的发展,它是一个循序渐进的系统工程。我们不仅要尊重客观规律,同时也要勇于改革教学理念,改进教学方法和手段,制订一套不断完善的、科学的教育教学体系,并且及时反馈和总结,以达到学生发展的最终目的。

    参考文献:

    [1][美]斯腾伯格史渥林思维科学(前言)[M]北京中国轻工业出版社2008

    [2]林祟德教育的智慧-----写给中小学教师[M]北京北京师范大学出版社2007

    相关热词搜索:引导学生探究思维方式算法策略

    • 名人名言
    • 伤感文章
    • 短文摘抄
    • 散文
    • 亲情
    • 感悟
    • 心灵鸡汤