刍议信息技术与算法初步教学的整合
2014-02-28施永新
信息技术的基本支撑载体是算法,信息技术的硬件是固化的算法,应用计算机解决一类问题的核心是程序设计,而程序设计的关键通常是选择或构造一个合适的算法,因此称算法是程序的灵魂. 算法在科学技术、社会发展中发挥着越来越大的作用,并且融入了社会生活的许多方面,算法思想已经成为现代人应具备的一种数学素养. 高中算法初步中涉及的算法“就是可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.”所以信息技术与算法初步教学既有整合的基础更有整合的必要.
1“整合”能有效检验算法的正确性与合理性
算法初步中赋值语句、输入、输出语句、条件语句、循环语句的教学,必须结合实例进行编程来说明各语句的作用,实践性、操作性强. 如果只是在黑板上编程教学,那无异是 “纸上谈兵”,学生体验不深,而且所编的程序有时自认为是正确的,但往往因为一个小的疏忽,而在计算机上不能运行通过或结果错误. 例如我在讲解循环语句时,在课堂练习中请学生先做了这样一道练习题,设计计算1×3×5×7×…×13的一个算法程序.对这道题大部分同学都能比较顺利地写出程序1:
程序1接着笔者提出如下问题,这个程序执行完共循环了多少次?能否修改程序使循环次数减少?学生A回答一共循环了7次,若将i=1改为i=3,则循环次数减少1次. 我接着追问,若交换s=s*i,i=i+2的先后顺序,输出的结果s的值是否变化?对于这个问题,学生中出现了不同的结论,经讨论后学生B举手回答,若交换s=s*i,i=i+2的先后顺序,输出的结果s的值将会改变,因为交换后当循环变量i=11时,循环一次后i=13,s的值已为1×3×5×7×…×13,由于此时i=13满足循环条件,再循环一次i=15,s的值已变为1×3×5×7×…×13×15. 这时我再在电脑上当场执行这两段程序,使学生信服地看到s=s*i,i=i+2的先后顺序不能随意交换. 在讲评完这道题后,我又给出了如下一道变式题让学生练习,设计求满足条件1×3×5×7×…>135135的最小整数的一个算法程序. 请学生思考这道题与刚才这道题有何不同?经思考后学生C回答,一是前一道题已知循环次数,而这道题循环次数未知. 如何设计算法程序?学生D举手回答他设计的程序2:
程序2大多数同学同意这个程序设计,这个程序究竟是否正确?我们将此程序输入计算机执行后得i的值是17,若交换s=s*i,i=i+2的先后顺序,再将程序输入计算机执行后得i的值为15. 显然由前一题1×3×5×7×…×13=135135可知,15是使1×3×5×7×…>135135成立的最小整数. 这道题由于数字较大不易手工检验,所以如果没有计算机即时执行程序检验较难发现错误. 通过这两道题的练习,引导学生总结出用循环语句编写程序时,循环体内的最后一条语句一般应是改变循环变量的值.
2“整合”能有效促进学生数学机械化思想的养成
现代数学机械化思想的核心就是算法,即把现实问题数学化,数学问题代数化,然后构造算法,通过计算机来试探、尝试和证明,从而发现、证明规律. 在算法初步的教学中,我们应通过案例教学法初步让学生学会用计算机解决问题的基本思想,即首先找到解决问题的算法(可用计算机实现),然后通过编写程序借助计算机的高速运算使问题快速获解. 如设计一个程序,实现:从键盘上输入一个不小于2的正整数n,判断n是否为质数,并在屏幕上显示“是质数”或“不是质数”.根据质数的定义“除了n=input(“请输入不小于2的正整数n的值:”);
程序3能被1和它本身整除之外不能再被其它整数整除的数叫质数”,故这个问题的算法思想是:由键盘任意输入一个不小于2的正整数n,设置循环变量i的初值为2,循环条件为n是否不能被i整除,若是循环变量增加1,继续检验,直到n能被i整除为止,结束循环. 然后判断n与i是否相等,若相等说明n只能被1和它本身整除是质数,若不等则说明n不是质数. 程序如程序3:(用Scilab-533语言编写)
然后上机执行程序,检验所编程序是否正确. 只有让学生经历设计算法→编写程序→上机调试这样的实际体验,才能逐步建立起用算法语句编程解决实际问题的思维方法和数学机械化思想的养成.
3“整合”能有效提高学生学习算法的积极性
在算法初步的教学过程中,应注重将算法融入到高中数学课程的相关内容中,让学生体验用算法在解决数学实际问题中的作用和信息技术与算法整合的优越性,提高他们学习算法的兴趣和积极性. 例如学生在高中一年级时学过用二分法求方程的近似解,当初利用笔算或计算器计算做这类题都比较繁琐,现在利用算法语句编成程序在计算机上执行,则方便快捷. 也可选取一些用常规方法解决比较困难的数学问题,通过编程后在计算机上运行直接得到结果,学生有了在计算机实现算法的体验,会增强对算法的感性认识,也会增强对算法的兴趣,真正理解算法的实际应用. 例如我在算法案例教学中,曾给学生这样一个数学问题:“一个人欲登上第10级楼梯,如果规定每步只能跨上一级或两级,则不同的走法共有多少种?”这个问题的一种解法是用分类计数原理,第一类:没有一步两级的,则只有一种走法;第二类:恰有一步是走两级的,则走完10级要走9步,9步中选一步是走两级的,有C19=9种可能走法;第三类:恰有两步是一步走两级的,则走完10级要走8步,8步中选两步是一步走两级的,有C28=28种可能走法;依次类推,共有1+C19+C28+C37+C46+C55=89种走法. 但这种解法不能算是一个好的算法,因为这种算法不便于编程在计算机上运行. 要使这个问题能够通过编写程序让计算机运行解决,前提必须要寻找到一个好的算法. 用计算机解决问题的核心思想是通过循环语句让计算机反复运行,借助计算机的高速运算,达到快速解决问题的目的. 为了要使用循环语句,通常利用递推思想建立起一个递推关系式. 本题的具体算法思想如下:假设走完这10级楼梯有an种走法,这些走法可按第一步来分类,第一类:第一步是一步一级,则余下的n-1级有an-1种走法;第二类:第一步是一步两级,则余下的n-2级有an-2种走法,所以an=an-1+an-2,又易得a1=1,a2=2. 据此递推公式和初始值可编写程序4.a=1;
程序4此程序输入计算机运行后得c=89. 将此程序稍作修改,第一行添加语句“n=input(“请输入登上楼梯的级数n=”);”循环条件改为i<=n,即可求得登上任意指定楼梯级数的方法数. 通过此例可让学生深刻体会到算法的优劣及其在解决问题中的重要性.
综上所述,我们在教学“算法初步”这一内容时,由于它的实践性、操作性强,教师应注意引导学生设计算法,编制程序,上机验证,在上机调试程序的过程中理解算法语句、发现问题、解决问题、反思算法的优劣. 体验算法建模的一般流程:实际情境→提出问题→选择算法结构模型(顺序、选择、循环等)→流程图(修正想法、选择最优解法)→选择对应的算法语句→编程实现想法→上机检验并解决问题. 让学生体会到一种成就感和挑战性,调动他们的学习积极性,逐步帮助他们建立起用计算机解决问题的算法思维模式.
作者简介 施永新,男,1963年11月生. 副教授,主要研究数学教育与数学教育技术. 在省级刊物上发表文章十多篇.制作的课件《函数 的图象》、《球的表面积》、《线性规划》等获全国师范院校初教系统教师自制教育软件评比一等奖.endprint
信息技术的基本支撑载体是算法,信息技术的硬件是固化的算法,应用计算机解决一类问题的核心是程序设计,而程序设计的关键通常是选择或构造一个合适的算法,因此称算法是程序的灵魂. 算法在科学技术、社会发展中发挥着越来越大的作用,并且融入了社会生活的许多方面,算法思想已经成为现代人应具备的一种数学素养. 高中算法初步中涉及的算法“就是可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.”所以信息技术与算法初步教学既有整合的基础更有整合的必要.
1“整合”能有效检验算法的正确性与合理性
算法初步中赋值语句、输入、输出语句、条件语句、循环语句的教学,必须结合实例进行编程来说明各语句的作用,实践性、操作性强. 如果只是在黑板上编程教学,那无异是 “纸上谈兵”,学生体验不深,而且所编的程序有时自认为是正确的,但往往因为一个小的疏忽,而在计算机上不能运行通过或结果错误. 例如我在讲解循环语句时,在课堂练习中请学生先做了这样一道练习题,设计计算1×3×5×7×…×13的一个算法程序.对这道题大部分同学都能比较顺利地写出程序1:
程序1接着笔者提出如下问题,这个程序执行完共循环了多少次?能否修改程序使循环次数减少?学生A回答一共循环了7次,若将i=1改为i=3,则循环次数减少1次. 我接着追问,若交换s=s*i,i=i+2的先后顺序,输出的结果s的值是否变化?对于这个问题,学生中出现了不同的结论,经讨论后学生B举手回答,若交换s=s*i,i=i+2的先后顺序,输出的结果s的值将会改变,因为交换后当循环变量i=11时,循环一次后i=13,s的值已为1×3×5×7×…×13,由于此时i=13满足循环条件,再循环一次i=15,s的值已变为1×3×5×7×…×13×15. 这时我再在电脑上当场执行这两段程序,使学生信服地看到s=s*i,i=i+2的先后顺序不能随意交换. 在讲评完这道题后,我又给出了如下一道变式题让学生练习,设计求满足条件1×3×5×7×…>135135的最小整数的一个算法程序. 请学生思考这道题与刚才这道题有何不同?经思考后学生C回答,一是前一道题已知循环次数,而这道题循环次数未知. 如何设计算法程序?学生D举手回答他设计的程序2:
程序2大多数同学同意这个程序设计,这个程序究竟是否正确?我们将此程序输入计算机执行后得i的值是17,若交换s=s*i,i=i+2的先后顺序,再将程序输入计算机执行后得i的值为15. 显然由前一题1×3×5×7×…×13=135135可知,15是使1×3×5×7×…>135135成立的最小整数. 这道题由于数字较大不易手工检验,所以如果没有计算机即时执行程序检验较难发现错误. 通过这两道题的练习,引导学生总结出用循环语句编写程序时,循环体内的最后一条语句一般应是改变循环变量的值.
2“整合”能有效促进学生数学机械化思想的养成
现代数学机械化思想的核心就是算法,即把现实问题数学化,数学问题代数化,然后构造算法,通过计算机来试探、尝试和证明,从而发现、证明规律. 在算法初步的教学中,我们应通过案例教学法初步让学生学会用计算机解决问题的基本思想,即首先找到解决问题的算法(可用计算机实现),然后通过编写程序借助计算机的高速运算使问题快速获解. 如设计一个程序,实现:从键盘上输入一个不小于2的正整数n,判断n是否为质数,并在屏幕上显示“是质数”或“不是质数”.根据质数的定义“除了n=input(“请输入不小于2的正整数n的值:”);
程序3能被1和它本身整除之外不能再被其它整数整除的数叫质数”,故这个问题的算法思想是:由键盘任意输入一个不小于2的正整数n,设置循环变量i的初值为2,循环条件为n是否不能被i整除,若是循环变量增加1,继续检验,直到n能被i整除为止,结束循环. 然后判断n与i是否相等,若相等说明n只能被1和它本身整除是质数,若不等则说明n不是质数. 程序如程序3:(用Scilab-533语言编写)
然后上机执行程序,检验所编程序是否正确. 只有让学生经历设计算法→编写程序→上机调试这样的实际体验,才能逐步建立起用算法语句编程解决实际问题的思维方法和数学机械化思想的养成.
3“整合”能有效提高学生学习算法的积极性
在算法初步的教学过程中,应注重将算法融入到高中数学课程的相关内容中,让学生体验用算法在解决数学实际问题中的作用和信息技术与算法整合的优越性,提高他们学习算法的兴趣和积极性. 例如学生在高中一年级时学过用二分法求方程的近似解,当初利用笔算或计算器计算做这类题都比较繁琐,现在利用算法语句编成程序在计算机上执行,则方便快捷. 也可选取一些用常规方法解决比较困难的数学问题,通过编程后在计算机上运行直接得到结果,学生有了在计算机实现算法的体验,会增强对算法的感性认识,也会增强对算法的兴趣,真正理解算法的实际应用. 例如我在算法案例教学中,曾给学生这样一个数学问题:“一个人欲登上第10级楼梯,如果规定每步只能跨上一级或两级,则不同的走法共有多少种?”这个问题的一种解法是用分类计数原理,第一类:没有一步两级的,则只有一种走法;第二类:恰有一步是走两级的,则走完10级要走9步,9步中选一步是走两级的,有C19=9种可能走法;第三类:恰有两步是一步走两级的,则走完10级要走8步,8步中选两步是一步走两级的,有C28=28种可能走法;依次类推,共有1+C19+C28+C37+C46+C55=89种走法. 但这种解法不能算是一个好的算法,因为这种算法不便于编程在计算机上运行. 要使这个问题能够通过编写程序让计算机运行解决,前提必须要寻找到一个好的算法. 用计算机解决问题的核心思想是通过循环语句让计算机反复运行,借助计算机的高速运算,达到快速解决问题的目的. 为了要使用循环语句,通常利用递推思想建立起一个递推关系式. 本题的具体算法思想如下:假设走完这10级楼梯有an种走法,这些走法可按第一步来分类,第一类:第一步是一步一级,则余下的n-1级有an-1种走法;第二类:第一步是一步两级,则余下的n-2级有an-2种走法,所以an=an-1+an-2,又易得a1=1,a2=2. 据此递推公式和初始值可编写程序4.a=1;
程序4此程序输入计算机运行后得c=89. 将此程序稍作修改,第一行添加语句“n=input(“请输入登上楼梯的级数n=”);”循环条件改为i<=n,即可求得登上任意指定楼梯级数的方法数. 通过此例可让学生深刻体会到算法的优劣及其在解决问题中的重要性.
综上所述,我们在教学“算法初步”这一内容时,由于它的实践性、操作性强,教师应注意引导学生设计算法,编制程序,上机验证,在上机调试程序的过程中理解算法语句、发现问题、解决问题、反思算法的优劣. 体验算法建模的一般流程:实际情境→提出问题→选择算法结构模型(顺序、选择、循环等)→流程图(修正想法、选择最优解法)→选择对应的算法语句→编程实现想法→上机检验并解决问题. 让学生体会到一种成就感和挑战性,调动他们的学习积极性,逐步帮助他们建立起用计算机解决问题的算法思维模式.
作者简介 施永新,男,1963年11月生. 副教授,主要研究数学教育与数学教育技术. 在省级刊物上发表文章十多篇.制作的课件《函数 的图象》、《球的表面积》、《线性规划》等获全国师范院校初教系统教师自制教育软件评比一等奖.endprint
信息技术的基本支撑载体是算法,信息技术的硬件是固化的算法,应用计算机解决一类问题的核心是程序设计,而程序设计的关键通常是选择或构造一个合适的算法,因此称算法是程序的灵魂. 算法在科学技术、社会发展中发挥着越来越大的作用,并且融入了社会生活的许多方面,算法思想已经成为现代人应具备的一种数学素养. 高中算法初步中涉及的算法“就是可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.”所以信息技术与算法初步教学既有整合的基础更有整合的必要.
1“整合”能有效检验算法的正确性与合理性
算法初步中赋值语句、输入、输出语句、条件语句、循环语句的教学,必须结合实例进行编程来说明各语句的作用,实践性、操作性强. 如果只是在黑板上编程教学,那无异是 “纸上谈兵”,学生体验不深,而且所编的程序有时自认为是正确的,但往往因为一个小的疏忽,而在计算机上不能运行通过或结果错误. 例如我在讲解循环语句时,在课堂练习中请学生先做了这样一道练习题,设计计算1×3×5×7×…×13的一个算法程序.对这道题大部分同学都能比较顺利地写出程序1:
程序1接着笔者提出如下问题,这个程序执行完共循环了多少次?能否修改程序使循环次数减少?学生A回答一共循环了7次,若将i=1改为i=3,则循环次数减少1次. 我接着追问,若交换s=s*i,i=i+2的先后顺序,输出的结果s的值是否变化?对于这个问题,学生中出现了不同的结论,经讨论后学生B举手回答,若交换s=s*i,i=i+2的先后顺序,输出的结果s的值将会改变,因为交换后当循环变量i=11时,循环一次后i=13,s的值已为1×3×5×7×…×13,由于此时i=13满足循环条件,再循环一次i=15,s的值已变为1×3×5×7×…×13×15. 这时我再在电脑上当场执行这两段程序,使学生信服地看到s=s*i,i=i+2的先后顺序不能随意交换. 在讲评完这道题后,我又给出了如下一道变式题让学生练习,设计求满足条件1×3×5×7×…>135135的最小整数的一个算法程序. 请学生思考这道题与刚才这道题有何不同?经思考后学生C回答,一是前一道题已知循环次数,而这道题循环次数未知. 如何设计算法程序?学生D举手回答他设计的程序2:
程序2大多数同学同意这个程序设计,这个程序究竟是否正确?我们将此程序输入计算机执行后得i的值是17,若交换s=s*i,i=i+2的先后顺序,再将程序输入计算机执行后得i的值为15. 显然由前一题1×3×5×7×…×13=135135可知,15是使1×3×5×7×…>135135成立的最小整数. 这道题由于数字较大不易手工检验,所以如果没有计算机即时执行程序检验较难发现错误. 通过这两道题的练习,引导学生总结出用循环语句编写程序时,循环体内的最后一条语句一般应是改变循环变量的值.
2“整合”能有效促进学生数学机械化思想的养成
现代数学机械化思想的核心就是算法,即把现实问题数学化,数学问题代数化,然后构造算法,通过计算机来试探、尝试和证明,从而发现、证明规律. 在算法初步的教学中,我们应通过案例教学法初步让学生学会用计算机解决问题的基本思想,即首先找到解决问题的算法(可用计算机实现),然后通过编写程序借助计算机的高速运算使问题快速获解. 如设计一个程序,实现:从键盘上输入一个不小于2的正整数n,判断n是否为质数,并在屏幕上显示“是质数”或“不是质数”.根据质数的定义“除了n=input(“请输入不小于2的正整数n的值:”);
程序3能被1和它本身整除之外不能再被其它整数整除的数叫质数”,故这个问题的算法思想是:由键盘任意输入一个不小于2的正整数n,设置循环变量i的初值为2,循环条件为n是否不能被i整除,若是循环变量增加1,继续检验,直到n能被i整除为止,结束循环. 然后判断n与i是否相等,若相等说明n只能被1和它本身整除是质数,若不等则说明n不是质数. 程序如程序3:(用Scilab-533语言编写)
然后上机执行程序,检验所编程序是否正确. 只有让学生经历设计算法→编写程序→上机调试这样的实际体验,才能逐步建立起用算法语句编程解决实际问题的思维方法和数学机械化思想的养成.
3“整合”能有效提高学生学习算法的积极性
在算法初步的教学过程中,应注重将算法融入到高中数学课程的相关内容中,让学生体验用算法在解决数学实际问题中的作用和信息技术与算法整合的优越性,提高他们学习算法的兴趣和积极性. 例如学生在高中一年级时学过用二分法求方程的近似解,当初利用笔算或计算器计算做这类题都比较繁琐,现在利用算法语句编成程序在计算机上执行,则方便快捷. 也可选取一些用常规方法解决比较困难的数学问题,通过编程后在计算机上运行直接得到结果,学生有了在计算机实现算法的体验,会增强对算法的感性认识,也会增强对算法的兴趣,真正理解算法的实际应用. 例如我在算法案例教学中,曾给学生这样一个数学问题:“一个人欲登上第10级楼梯,如果规定每步只能跨上一级或两级,则不同的走法共有多少种?”这个问题的一种解法是用分类计数原理,第一类:没有一步两级的,则只有一种走法;第二类:恰有一步是走两级的,则走完10级要走9步,9步中选一步是走两级的,有C19=9种可能走法;第三类:恰有两步是一步走两级的,则走完10级要走8步,8步中选两步是一步走两级的,有C28=28种可能走法;依次类推,共有1+C19+C28+C37+C46+C55=89种走法. 但这种解法不能算是一个好的算法,因为这种算法不便于编程在计算机上运行. 要使这个问题能够通过编写程序让计算机运行解决,前提必须要寻找到一个好的算法. 用计算机解决问题的核心思想是通过循环语句让计算机反复运行,借助计算机的高速运算,达到快速解决问题的目的. 为了要使用循环语句,通常利用递推思想建立起一个递推关系式. 本题的具体算法思想如下:假设走完这10级楼梯有an种走法,这些走法可按第一步来分类,第一类:第一步是一步一级,则余下的n-1级有an-1种走法;第二类:第一步是一步两级,则余下的n-2级有an-2种走法,所以an=an-1+an-2,又易得a1=1,a2=2. 据此递推公式和初始值可编写程序4.a=1;
程序4此程序输入计算机运行后得c=89. 将此程序稍作修改,第一行添加语句“n=input(“请输入登上楼梯的级数n=”);”循环条件改为i<=n,即可求得登上任意指定楼梯级数的方法数. 通过此例可让学生深刻体会到算法的优劣及其在解决问题中的重要性.
综上所述,我们在教学“算法初步”这一内容时,由于它的实践性、操作性强,教师应注意引导学生设计算法,编制程序,上机验证,在上机调试程序的过程中理解算法语句、发现问题、解决问题、反思算法的优劣. 体验算法建模的一般流程:实际情境→提出问题→选择算法结构模型(顺序、选择、循环等)→流程图(修正想法、选择最优解法)→选择对应的算法语句→编程实现想法→上机检验并解决问题. 让学生体会到一种成就感和挑战性,调动他们的学习积极性,逐步帮助他们建立起用计算机解决问题的算法思维模式.
作者简介 施永新,男,1963年11月生. 副教授,主要研究数学教育与数学教育技术. 在省级刊物上发表文章十多篇.制作的课件《函数 的图象》、《球的表面积》、《线性规划》等获全国师范院校初教系统教师自制教育软件评比一等奖.endprint