算法的教学

2024-06-20

算法的教学(共12篇)

算法的教学 篇1

一、教材处理

本节课以教育科学出版社教材《算法与程序设计》的第一章《如何用计算机解决问题》和第二节《算法描述与设计》作为基本教学内容,用一节课时间完成。

本节课学生第一次接触算法,如果只讲解算法的概念就要求学生对实际问题进行分析、建模、设计合理算法,感觉难度较大。因此,我从“人鬼过河”这一智力游戏开始,通过实例介绍算法的概念,再例举学生熟悉的数学问题,让学生在分析问题中学会设计算法,并让他们采用算法描述工具描述相应的算法。

二、教学目标

1.理解算法的含义。

2.掌握用自然语言、流程图描述算法。

3.了解算法的基本特征。

4.通过流程图形象直观地了解顺序、选择、循环三种基本结构。

三、教学重点与难点

重点:让学生经历分析问题、设计算法,用自然语言、流程图等方法描述算法的过程。

难点:对算法概念的理解,设计出合理的算法。

四、教学媒体

多媒体课件、VB小程序、网络教室

五、教学过程

教师活动:介绍游戏规则,让学生在“人鬼过河”这一Flash游戏中思考解决问题的步骤。

学生活动:在游戏中亲身经历分析问题、解决问题的过程。

(设计意图:算法的含义比较抽象,如果一下子抛出算法的定义,学生无法真正理解,所以引入趣味游戏,让学生在游戏中思考。)

(一)引入新课

教师活动:

①请个别学生讲解操作这个游戏的步骤,教师进行归纳总结,用自然语言描述出来。

②由解决游戏的步骤引出算法的定义——算法是解决问题的方法和步骤。

③算法需要将它描述出来才能为人所知。学生描述“人鬼过河”游戏的各步骤就是算法的一种描述方法——自然语言描述法。教师介绍如何用自然语言描述算法。

学生活动:

①理解算法的定义。

②初步体会用自然语言描述算法的过程。

(设计意图:①引导学生总结游戏步骤,由具体事例引出算法的概念。②学生体会用自然语言描述算法的过程。)

(二)学生实践一

1. 布置任务

教师活动:讲述“水仙花数”问题,让学生判断任一三位数是否为水仙花数,并引导学生用自然语言将自己设计的算法描述出来。

学生答案1:取百、十、个位数字,求他们的立方和,判断立方和是否等于原数,如果相等就是水仙花数,否则就不是水仙花数。

学生答案2:设x=abc,若a3+b3+c3=x,则x是水仙数,否则不是水仙花数。

2. 指导实践

教师活动:

①肯定学生作答的正确之处,指出学生答案中的不足。

②教师讲述:在算法的基础上,用计算机语言把算法描述出来(编程),提交给计算机,计算机按程序执行。在用自然语言描述算法时,既要考虑到人的描述习惯,更要兼顾编程的需要。算法描述中的每一步都应该是计算机能接受的算术运算、逻辑运算或能执行的动作。

就答案1和2而言,这样的描述对具备独立逻辑分析能力的人来说,解决相关问题已经足够,但对于只具有基本算术运算和逻辑运算的计算机而言,“取出百、十、个位上数字”、“设x=abc”这样的描述,计算机根本无法理解,不会智能地运行,所以应该明确告知具体的运算对象和运算方法。这也是算法的特征——算法的确定性和可行性,即每一步都要有确切的含义,能够被计算机执行。

③引导学生细化、完善他们刚才设计的算法。

(设计意图:①让学生了解,设计算法并不等同于用数学方法解决问题。②算法的每一步都必须是计算机所能明白的,能够被执行的,指出算法的特征。③通过实践一,学生对算法的概念有了比较深刻的理解,初步掌握了用自然语言描述算法的方法。)

3. 演示VB程序

教师活动:演示用VB编写的应用程序,并将程序代码展示给学生。

学生活动:对照自然语言描述算法的各步骤,理解程序代码的意思。

(设计意图:使学生加深印象,理解算法描述与编程之间的关系。)

(三)阶段小结

教师讲述:算法描述应按数字化输入、存储、计算、输出方式来描述,才符合数字计算机本质。这是确保算法编码化(程序化)的关键。每一步必须明确告诉计算机所要处理的具体对象和准确的处理过程,也就是说,算法的描述要尽可能精确、详尽。

(四)用流程图描述算法

教师活动:

①回顾先前的“人鬼游戏”和“水仙花数”的算法描述,分析用自然语言描述算法的优缺点,并引出用流程图描述算法的方法。

②以“水仙花数”问题为例,详细介绍流程图的基本图形、功能以及如何用流程图描述算法。

学生活动:掌握用流程图描述算法的方法。

(设计意图:让学生掌握用自然语言、流程图描述算法的方法。通过实例,掌握对顺序结构、分支结构的流程图画法。)

(五)学生实践二

教师活动:布置学生实践任务——用流程图描述“人鬼过河”游戏的算法。

(设计意图:通过实践练习,让学生掌握顺序结构流程图的画法,并记住流程图各图形的功能。)

(六)学生实践三

教师活动:

①布置学生实践任务——设计实现两数交换的算法,并用自然语言和流程图描述。

②教师点拨:这个问题看起来简单,但很多学生却出现了错误。教师以实际生活中两杯不同溶液进行交换为例,提示学生,引入第三个变量解决此问题。

③教师提问:除了引进第三个变量外,也可从数学的运算入手实现两数交换,这应该怎样设计算法?

学生活动:学生运用刚学的知识解决问题。经教师点拨,马上改正错误。

(设计意图:①学生通过实践掌握用自然语言、流程图描述算法。②让学生在探究中提高:同一问题可以有不同的算法。)

(七)学生实践四

教师活动:布置学生实践任务——设计求出所有水仙花数的算法,并用自然语言和流程图描述。

教师点评:要求出所有水仙数,只需要把所有的三位数判断出来就可以。可设置要判断的数为X,X的值从100开始,每判断完一次X,X的值便增加1,进而进行下一轮对X的判断,直至X的值变化至999为止。

学生活动:学生分析问题,设计算法。

(设计意图:提高难度,让学生对三种不同程序结构的流程图都掌握。)

(八)自主归纳

教师活动:引导学生从这几个题目的算法归纳总结出算法的特征。

学生活动:在教师的提示、引导下归纳总结算法特征,得出结论一一至少有一个输出、可行性、确定性、有穷性、可以有多个输入,也可以有零个输入。

(设计意图:培养学生归纳总结的能力。)

(九)总结

教师:计算机不管解决什么问题,都得经历编写程序、执行程序、解决问题的过程。编程就是用计算机语言实现算法,可见算法在程序设计中的地位。

从前面两数交换的例子可以看出,一个问题的算法并不是唯一的,不同的算法之间也有优劣之分,在设计算法时应追求最优算法。那么如何判断一个算法的优劣呢?“水仙花数”问题有没有最好的算法呢?

算法的教学 篇2

【中文摘要】随着信息社会和科学技术的发展,计算机在日常生活中起着越来越重要的作用。而算法是计算机工作的基础,了解算法知识及其思想成为现代社会每一个公民所应具备的基本素养。在许多发达国家,算法知识早已成为中学教材的重要内容。2003年4月教育部颁布《普通高中数学课程标准(试验)》,新课程开始陆续实施。作为新课程中首次出现的内容之一,算法的教学问题被人们所关注。湖北省于2010年才第一次进行必修3(含算法初步的内容)的教学。由于算法内容对刚实行新课改地区的中学数学老师来说是比较陌生的,心理上存在着畏惧情绪,在实际教学中缺少有效的教学指导,因此给他们的教学带来了全新的挑战。本文研究了国内外关于算法教学的研究及教学设计理论的发展,重点是国内的“双主”教学设计与“以活动为中心”的教学设计,对高中数学算法初步的内容进行了功能分析。结合教学实际,对算法初步的部分内容进行了教学设计。旨在为自己及同行的教学提供一个有益的探索与尝试。本文所给出算法设计方案只是初步的,有待于在今后的教学实践中进一步检验完善。

【英文摘要】Algorithm is an ancient concept,with the development of computational science,algorithm has become more and more important.The idea of Algorithm has already become a mathematical quality for modern citizens.In many developed countries, Algorithm has become an important part in senior

high school teaching.In April 2003, The Mathematics Curriculum Standard of High School began to be carried on in our country, and algorithm has appeared in the text-books of high school mathematics.But the problem of teac...【关键词】算法 功能分析 教学设计

【英文关键词】algorithm function analysis instructional design 【目录】高中数学算法初步的功能分析及教学设计4-5出8-9910-1111-14ABSTRACT5绪论8-11

摘要

1.1 研究问题的提1.2 研究意义9-101.2.2 研究的实践价值9-102 研究综述11-18

1.2.1 研究的理论意义

1.3 研究方法2.1 算法的研究综述

2.1.2 国内的算2.1.1 国外的算法研究11-13

2.2 教学设计的相关研究综述法研究13-1414-182.2.1 国外教学设计理论的发展14-162.2.2 国内教学设计理论的发展16-1818-20算法初步的功能分析

3.2 有助于3.1 有助于提高学生的信息素养18培养学生的逻辑思维与创造性思维18-19秀的算法传统19-20

3.3 有助于发扬优

4.1 算法初步的教学设计20-40算法初步的教学设计策略20-21析为起点2020

4.1.1 以内容分析和学情分

4.1.2 以现代信息技术为辅助手段

4.1.4 以数学文化为4.1.3 以思维训练为目的20

驱动力20-2121-40

4.2 算法初步的教学设计案例

21-24

4.2.2 程序4.2.3 基本算法4.2.1 算法概念的教学设计框图与算法基本逻辑结构的教学设计语句的教学设计29-3232-35

24-29

4.2.4 循环语句的教学设计教学建4.2.5 秦九韶算法的教学设计35-40

5.1 教学建议议及需要进一步研究的问题40-4240-4142-455.2 需要进一步研究的问题41-42参考文献

附录 附录 A:攻读硕士期间发表的论文45-46

中学数学中的算法教学 篇3

在现代社会里,由于计算机已经成为人们日常生活和工作不可缺少的工具,也为旧的算法注入了新的活力:一方面,出现了大量的能够推动现代社会科学进步和发展的算法;另一方面,在学习算法、熟悉算法的实践过程中,也带动了许多其他科学发展和繁荣并且产生了一些交叉学科。

联合国教科文组织宣称,未来社会的公民应该是从事“较多智力的和较少体力的,较多电子的而较少机械的劳动”[1],如何在数学教育中提高学生适应未来“瞬息万变”的社会所必需的基础知识和基本技能,那么在我们的教学实践中培养学生的算法思想和意识,使之成为一种观念和通识是非常必要的。

一、算法内容的教学

当前的数学教学改革在强调问题解决过程、数学过程的概念化和数学在现实生活中应用的同时,特别强调算法过程的学习和理解。中学教材的算法内容主要包括算法概念、流程图、基本算法语句和算法思想。

1.算法的概念

算法概念就是做某件事的步骤和程序,但这些步骤必须是确定的、有效的、有限的。在当今社会日新月异的发展过程中,要想给出算法的严格定义是不恰当的,但是有一种普遍的看法:为解决某个(类)特定问题而采取确定的有限步骤。也就是说,对于我们所要研究对象——数学问题求解时,我们必须要思路清晰,明确地给出解决问题步骤的先后顺序,并且要考虑到会出现分支的步骤和重复的步骤,然后再用图或文字把这个过程描述出来,这种描述可以以不同的方式:日常语言、数学公式或用程序筐图直观地表示算法的整个结构。

2.算法的流程图

流程图是算法表示的一种方式。它的特点是直观、清楚,便于检查和交流。在流程图的学习中,要让学生通过模仿、操作、探索,体验设计流程图来表达解决问题的过程。

有了流程图,算法的思想不再只是局限于数字计算了,而是可以更加广泛地描述许多操作过程。但在实际教学中,我们应该考虑学生对事物的认识是遵从螺旋式上升和波浪式前进的规律,对教材做适当的处理。鄂教版在用“二分法”求方程的近似解时,给出了这种解法的程序框图,渗透了算法思想,同时也为系列3中算法的学习奠定了基础。通过循序渐进的方式掌握和运用算法,实现框图在数学建模的表示,增强了学生的算法应用意识和实践能力。

3.基本算法语句

高中阶段的算法学习,所要掌握的基本算法语句有:输入语句、赋值语句、条件语句、循环语句、输出语句。通过这几种算法语句我们可以实现程序框图向程序语句的转化。在基本算法语句的教学中,要鼓励学生去总结规律。例如,若求只含有一个关系式的解析式的函数值时,仅用顺序结构就行了;若为分段函数或者需要分类讨论来执行时要先给出一个标准才能执行后续步骤的,就需要采用分支结构了;若问题涉及到的运算需要进行许多重复的步骤并且有相同的规律,就要考虑引入变量采用循环结构了,循环结构能大大简化算法的表达,循环变量在循环结构中发挥了十分关键的作用。

例计算1+2+3+4+5

算法(按照逐一相加的程序):

Step1:计算1+2,得3;

Step2:将第一步中运算结果3与3相加,得到6;

Step3:将第二步中运算结果6与4相加,得到10;

Step4:将第三步中运算结果10与5相加,得到15。

该算法是以程序思想为基础,计算1+2+3+4+5的一个专用算法(解决某个特定问题的算法),将五个数连续相加分解为四步,每步2个数相加。这个算法采用的是顺序结构,符合初学者的认识规律。(变式)请说出下面算法的运行结果

s1s=0,i=1,进入s2;

s2s=s+i,i=i+1,进入s3;

s3如果i>5,进入,否则go to s2;

s4输出s。

依然是求1+2+3+4+5的结果,但是这是一个既含有整体思想又含有构造思想的通用算法(解决某一类问题的算法),相对而言,通用算法比专用算法更具有通性通法的作用,也就更具有教育和发展的价值,但难度也是显然的。若将s3中“如果i>5”改为“如果i>n”?熏就可以推广为求自然数1+2+3+…+n的和了。在语句的表述上,也作了修改:由顺序变为循环的方式。

4.算法思想

算法含有丰富的数学思想:整体思想、程序思想、构造思想、最优化思想,教学中应该注意挖掘与渗透,培养学生思维发展的深度和广度。通过这些算法思想的学习可以达到以下几个效果:“(1)有利于学生理解构造性数学;(2)有助于弄清计算机工作的原理;(3)有利于培养学生的理性精神和实践能力”[2]。另外,算法思想的教学也需要选择典型性的算法案例为载体。通过对案例的分析,使学生明白算法的表达方式,体会算法的基本思想。

总之,算法的教学,根本上就是要教会学生如何设计自己的算法,帮助学生符合逻辑的组织他们的思想,最终要让学生能够确定自己的问题解决步骤和方法。

三、算法教学中应该注意的几个问题

1.教学内容上,不要把算法课上成计算机课

算法的定位应该是在问题解决和计算机求解之间,所以我们在算法的理解上要注意它的两个侧面:数学方面和计算机方面。在算法的教学中,应通过实例来说明由数学的算法到计算机使用的算法的过渡过程,要让学生理解算法各个基本内容(结构框图、语言等)的作用,在用算法求解问题中数学和计算机科学的关系如下图:

计算机能处理许多复杂的问题,但是这些问题在处理之前,必须把问题分解成简易的步骤。所以算法概念包含两个步骤:分解与组合。分解就是把复杂的问题简化成若干个单一的简单步骤;组合就是将若干个单一的简单步骤按照一定的逻辑关系组合起来,然后在按照一定的顺序逐个解决,从而实现问题的最终解决。在实例教学中,最好以教材中提供的案例为载体,引导学生在设计流程图以及在将流程图转化为程序语句的实践中,让学生理解和初步掌握算法的基本思想和操作过程,学会如何用流程图表达解决问题的思路。

2.教学方法上,要注意学生的认知特点

由现代教育心理学知识可知,学生在数学学习中存在着显著的认知差异,表现为:特征性和功能性。“大多数女生的行为是偏向于特征性的,而大多数男生则表现出较为强烈的功能性行为。在算法学习中,这种差异尤为明显”[3]。特征性思维明显的学生“优先考虑特征与关系,关注事件的结构,思考状态与状态间的关系”[3]。而功能性思维明显的学生一般注重某个过程并且善于考虑作用方式,因此他们把注意力集中在“动态和过程性的行动实施上,思考原理与信息流程”[3]。同时发现随着年龄的增长、学识的丰富,学生在认知结构上表现出相对稳定的认知定向,也就是说,大多数学生还是以原有的特征性或功能性认知结构取向来解决问题的。由于这种认知差异具有普遍的意义,需要教师在课堂上给予足够的重视,关注学生认识问题和解决问题的多元化取向,尽可能采用算法多样化教学。

3.教育目标上,要防止形而上学的趋势

算法教学对于学生思维品质培养的特点:使学生养成了推理的意识和审慎的思维习惯;增强了学生逻辑推理能力,使学生思维更加严密、秩序化。但是,我们也应该注意到:算法解决问题的逻辑思维特征也是一把“双刃剑”:一方面,算法的程序化解决问题的方式,具有很强的说服力和审美价值;另一方面,严密的逻辑程序不考虑其他主、客观条件的变化,未免过于僵化、呆板了。所以,在算法教学中,要注意程序化形式的存在范围和合理性,避免课堂教学陷入认识论上的形而上学。相反,我们更应该关注它的独立思考、尊重事实和思辨分析的理性思维。

算法作为新课标新增内容,是社会发展的需要。因为算法内容具有一定的创新取向(一个算法问题就是一个探究性案例),所以在数学教学中,要对算法内容给予足够的重视:注重培养学生诸如反思和批判、独立思考的精神,推理的意识和习惯,以及搜寻信息、动手操作等实践能力。另外,算法知识关于动作技能、智慧技能和思考与思维技能的不确定性和多元性需要学生敢于突破传统观念,不拘常规,这些都是新课标倡导的“培养学生的创新精神和实践能力”的理想材料。

参考文献

[1] 美国国家委员会.人人关心数学教育的未来.方企勤译.北京:世界图书出版公司,1993.12.

[2] 李金娇.关于新课标教材“算法”一章的教学思考与设想.数学通讯,2006(9):13.

[3] Schwank I.Iur konzeption praedikativer versus funktionaler kognitiver struktur and ihrer anwendung.In Zentralblatt Fuer Diaktik Der Mathematik,1996.

算法的案例教学探析 篇4

随着信息化的进展,计算机已经逐渐成为人们日常生活和工作不可缺少的工具。计算机科学将从前沿高新技术学科变成各专业、各行业均需要普及的基础学科。算法是计算机科学基础内容,也是计算思维培养的核心内容之一。计算机算法的学习,不仅可以让学生体会到计算机的计算能力的强大性,还能够增加学生的解决问题的技能。例如现今新闻、金融、语言等,几乎每个领域都有很多的大数据,挖掘大数据的工作不仅仅属于计算机专业的人员,相关专业的人员也要参与进来,因此掌握计算机算法,对解决类似大数据这类的大规模的、或者很复杂的问题有很大的帮助。

然而算法的学习需要有编程语言、数据结构等课程的学习基础,算法内容生涩难懂,枯燥乏味,非计算机类的专业,特别是文科类专业的计算机教学都避开它。这导致学生无法接触到算法的学习。本文将以生活案例的形式,避开编程语言、数据结构等专业知识,生动形象的介绍算法和算法的思维,以提高学生的学习兴趣,增强学生的计算思维能力。

2 算法的含义

什么是算法呢?简单来说,算法就是解决问题方法。算法处理的内容必然是问题所涉及的数据,算法和数据是程序设计中的核心内容。因此有这一说法:程序=算法+数据结构。

我们生活中也存在许多“算法”。举一例来说,煎一个蛋,厨师首先锅里滴上几滴油,鸡蛋磕破直接把蛋液倒入锅内,用勺子稍稍往鸡蛋上分散撒些食盐,小火等蛋清蛋黄凝固,然后,翻面再煎另一面,这样就做好了煎蛋。这个事例中,鸡蛋、食盐等食材是“数据结构”的话,厨师的烹饪过程便是“算法”。

针对同一问题,很有可能有多种不同的算法。例如,著名的数学家高斯在他小学的时候发生了一件很有名的故事,就是小学老师出于惩罚目的,出了一道算术难题:“计算1+2+3…+100=?”。作为初学算术的学生,高斯的同学都是被难住了,因为他们的解题思路是把这100个数做99次加法运算,需要大量的计算。但是高斯却在几秒后将答案解了出来,他所使用的方法是:对50对构造成和101的数列求和(1+100,2+99,3+98…),同时得到结果:5050。

高斯在小小年纪便能运用巧妙的解题方法,使得他的故事广为流传。人对解决问题与计算机在思维方法上的差异。那么,同样针对这个问题,用计算机程序算法来完成,又应该如何实现呢?

设1~100的累加和放在变量s中,那么让程序重复累加执行:s=s+i,让加数项从1逐步增加到100。这在计算机程序很容易实现。算法的流程和图1所示。

3 排序的应用

排序在生活中是很常见的。比如人员列队时按高矮排列;电影中的票房排行榜;字典或词典里的字词条排序;网上购物时多个推荐商品的前后排序等。

排序对于数据操作来说非常重要。例如:表1中有两组1~10的数字,A组数字是无序的,而B组是有序的。那么随机查找A组中的一个数字,查找方法是从头到尾依次查找,平均要查找5.5次。如果是查找1~10以外的数字,例如-5,则需要查找10次后才能确认它不在表中。而针对B组中有序的数字,我们可以采用折半查找法进行查找,即不是从头到尾依次查找,而是从中间开始查找。中点m=(s+e)/2,s和e分别为数组序号的上限和下限。例如,要查找数字4,一开始,s为1,e为10,m为5,B组中第5个数是5,没有找到4,但是这一次查找,我们可以确定的是,中点的数字是5,我们要找的数字4小于5,所示,它不可能会在数组的后半部分,那么我们可以排队第5~10的数字,只要在前4个数字中查找就可以了。于是第二步,在前4个数中,再次从中间找,s,e,m的值分别为1,4,2。中间的数字是2,也是没有找到,但可以排队第1、2个数字;接着第三步,在剩下的第3、4个数中找,s,e,m的值分别为3,4,3,查到的数字是3,也没找到,剩下只有第4个数了;最后一步,比较第4个数,当然,就找到了我们要查找的数字4。如果要查找1~10以外的数字,则最多4次便可以确定查找失败。因此可以确定,B组有序的数字查找快于A组。

上例中,有序的数所查找快于无序的数据,但是快速的优势并不明显,原因是数据量太小。如果我们把数据记录扩大为1万条。那么无序的查找次数平均为5000次,数据范围之外的数据要查找10000次。那么,对有序的数据,采用折半查找法进行查找,查找次数为,即13.3次。

由上述可知,数据的有序对操作的重要性。那么如何对数据进行排序呢?排序的算法有很多,如选择排序法、冒泡法、直接插入排序法、归并排序法、快速排序法、希尔排序法等。

4 穷举法

穷举法也称为枚举算法,其基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能情况逐一验证,直到全部情况验证完毕。若全部情况验证后都不符合题目的全部条件,则本题无解[1]。

生活中也存在许多穷举法的案例。例如,小明是新来的机房管理员,他要管理的是n间机房,有n把钥匙,但他不清楚哪条钥匙对应哪间机房,那么他便每扇门逐条钥匙的去试,直到确认每把钥匙对应的机房。

用穷举法来破解密码,也称暴力破解法,是密码破解技术中最基本的方法。简单来说就是将密码进行逐个推算直到找出真正的密码为止。比如一个四位并且全部由数字组成其密码共有10000种组合,也就是说最多我们会尝试9999次才能找到真正的密码。利用这种方法我们可以运用计算机来进行逐个推算,也就是说用我们破解任何一个密码也都只是一个时间问题。破解过程可以用网上免费的暴力破解软件演示给学生看。

穷举法在求解一个较小规模的问题时,可以根据问题中的约束条件把可能的情况一一列举出来,然后注意尝试从中找到满足约束条件的解。若该问题规模较大,比如破译一个有位数很长,且有多种符号可能的密码,其组合方法可能有万亿种组合。用普通的电脑可能会用掉几年甚至更多的时间去计算,这样长的时间显然是不能接受的。因此规模太大的求解问题穷举法并不适合,应考虑用其他效率更高的算法。

5 动态规划

动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。所有已解的子问题的答案将会记录在一个表中。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这样,当需要已求得的子问题的答案,只要在表中查找就可以了,这样就可以避免大量的重复计算,节省时间[2]。

简单地说,动态规划就是采用分治的策略,把求最优解问题分解为求若干子问题的最优解,记录子问题的解,化繁为简。

例:一个楼梯有x级(本例中x=5),每次可以走1级或2级,请问走完楼梯一共有多少种走法?

动态规划的关键是发现子问题和怎么记录子问题。此例中,分解为2个问题:(1)走1级,楼梯就还剩x-1级,这种情况下剩下的楼梯共有f(x-1)种走法。(2)走2级,变成x-2级,这种情况下剩下的楼梯共有f(x-2)种走法。

直到最后,如果只有1级楼梯的话,只有一种方法可以走完,那就是直接走1级;只有2级的话,可以走两步1极,或者走一步2级,共2种走法。显然f(1)=1,f(2)=2。

于是就得到了一个递推公式:

式(1)中设x=5,那么:

可以得出5级楼梯有8种走法。本例的程序算法,可采用递归函数的方法来实现。

6 并行计算

为了更好理解并行计算,我们先来看看2个并行思想的案例。

近年来澳洲的各个河流湖泊遭遇到了生态不平衡,河水里头的鲤鱼异常泛滥造成了当地的生态被坏。由于数量太多了,民众也没有动力去捕捉。单靠一个人或机构去捕捉是不现实的。为此,2015年底,澳大利亚政府想出了一个办法:在某河展开了一项活动,将芯片植入到一条鲤鱼,然后将它放回河里并且鼓励人们到河边钓鱼,如果钓到这条拥有芯片的鲤鱼则可获得100万澳元的奖金。试图吸引全国的钓鱼好手来钓鱼,以消灭成群的鲤鱼[3]。

另一个案例是美国纽约时报利用图形验证码的人工识别来输入的大量历史资料。纽约时报有大量的历史资料,这些早期纸质的资料由于印刷模糊等多种原因,机器无法准确识别。单靠人工录入不仅工作量巨大,准确度也难以保证。于是想到靠亿万网民来帮忙。先把资料扫描为图形,按单词切割成小块并编号,然后将这些单词图块放在验证码后面,网民输入验证码的同时也义务完成了资料的录入工作。为了保证正确率,同一单词图块在2次录入相同时,录入结果才被采纳。

并行计算是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的、含有多个处理器的超级计算机,也可以是以某种方式互连的若干台的独立计算机构成的集群。通过并行计算集群完成数据的处理,再将处理的结果返回给用户[4]。

并行操作能让问题解决的速度更快,关键是如何分解成若干个尽量相互独立的了问题,即问题分解方案,从而使计算机能够运用并行的方法高效的解决。云计算的核心原理就是实现在不同服务器之间的负载均衡,也就是说,让不同的服务器参与同一个计算,这就涉及并行计算的问题。

7 总结

算法是计算思维教育的核心内容之一。对于初学者,特别是文科类的初学者来说,算法生涩难懂,枯燥乏味。本文将生活案例引入分类别的算法教学中,将算法的思想生动形象的展现出来,使学生更容易理解和接受,能够很好地达到计算思维培养的目的。

摘要:算法是计算思维培养的核心内容之一,但目前因各种原因并未在非计算机专业的计算机教学中普及。该文将生活案例引入到算法教学中,这些生活案例分别对应动态规划、并行计算等类别的算法问题,生动形象的展示算法的思维,解决了算法教学需要多门课程基础的问题。

关键词:算法,案例,计算思维,教学

参考文献

[1]孙义欣,冯娜穷.举法在程序设计中的应用[J].计算机时代,2012(8):51-53

[2]王晓东.算法设计与分析[M].北京:清华大学出版社,2003:61-63.

[3]网易旅游.澳洲河流生态不平衡悬赏百万澳元捉拿一条鲤鱼[EB/OL].http://travel.163.com/15/1213/12/BANEPSK100063KE8.html,2015-12-13.

高中数学算法教学的应用论文 篇5

一、高中数学算法教学现状

从高中数学新课程标准的制定到目前为止,我们国家关于高中数学算法教学的研究有很多,提出了一些行之有效的教学策略。韩裕娜等人的研究内容主要是算法教学上的一些方法及应该注意的重点;胡学平、熊芹等人的研究重点在“算法初步”上;宋宝和等在实验基础上提出一些算法教学策略;王慧春、薛海分别从信息技术在课程中的应用、文献研究及案例分析的角度对高中数学算法教学进行研究。以上这些目前我们国家教育专家进行的研究大多都集中在算法的历史、在现代教学中的应用以及算法教学现状,针对高中数学算法教学的方式方法,如何提高高中数学算法教学有效性等研究较少,尤其没有从目标分类的角度研究高中数学算法教学策略。

二、高中数学新课程标准关于算法课程教学设计

全面解读高中数学新课程标准,把握教学目标,应该做到以下几个方面:一是基础,牢固掌握算法的基础知识、基本技能,理解算法基本的三种逻辑结构和五种算法语句。二是能力、算法意识,具备利用算法解决实际问题的能力以及在实际问题中利用算法的意识即算法思想。三是价值观、精神,充分意识到算法与计算机结合带来的便利,体会到数学逻辑在现实生活中的重要性,培养数学学习兴趣。

三、新课程背景下高中数学算法教学策略

(一)注重学生算法思想的培养

高中数学新课程标准关于算法的要求强调不仅要做到“算则”更要做到“算理”,对于算法的程序步骤理解更为重要,理解算法每一步程序的依据就是做到了“算理”,就是算法思想。培养学生算法思想具体就是锻炼学生的思维能力,达到有条理,有逻辑,严谨的思维标准,高中学生的思维能力正处于进一步形成、完善中,老师在教学中应该注重学生这方面能力的培养。算法思想具体包括分步递推思想、逻辑选择思想、循环思想等,要想形成一个思想,具备一定的习惯是一个长期的过程,“算法初步”有十二个课时主要就是加强学生算法思想学习,但这些时间是远远不够的,应该在整个高中数学算法教学中都应该注重学生算法思想的培养。

(二)重视程序框图的演示教学

算法语言最重要的一种表述形式就是程序框图,程序框图在表示算法结构及逻辑上具有直观清晰、简便快捷的优势,程序框图还是程序编写的基础。程序框图具体教学内容就是让学生能够用流程图展示一些问题的解决方案,流程图的学习过程是不断增强学生思维逻辑性的过程,在教学中注意增加实例,这样学生能够加深对这种转化的理解。数学课与计算机上机操作课要相互协调,各有侧重,在数学课中重视程序框图教学,学生能够意识到计算机与人类在解决实际问题时的不同之处。

(三)注重教学中的案例选取

老师在数学算法教学过程中要通过一定的案例来加深学生对知识的理解,老师选取的案例要注意结合学生知识水平,算法不能太难,这样不利于学生接受,达不到举例的效果,比如最大公约数、质数的.求解这些简单的例子能更便于学生理解,学生能够自己设计程序框图。算法案例还应该具有一定的趣味性,从实际生活中寻找案例,可以激发学生的学习兴趣,提高算法学习积极性。

(四)数学算法教学与计算机有机结合

高中数学算法教学还需要在计算机上进行操作,包括程序语言内容,两者密切相连,又有其各自的特点。简单来说算法教学注重的是算法思想,注重学生逻辑思维能力的培养,程序语言教学目的就是程序编写。算法教学和程序语言教学之间的联系在于,前者是后者的基础,后者是前者的延续。在实际教学中结合算法的特点,加强学生的动手操作能力,这样学生可以感受完整的算法设计,能够及时检验设计的算法是否有效、可行,数学算法与计算机有机结合才能有良好的学习效果。

四、结束语

算法的教学 篇6

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,即可求得登上任意指定楼梯级数的方法数. 通过此例可让学生深刻体会到算法的优劣及其在解决问题中的重要性.

综上所述,我们在教学“算法初步”这一内容时,由于它的实践性、操作性强,教师应注意引导学生设计算法,编制程序,上机验证,在上机调试程序的过程中理解算法语句、发现问题、解决问题、反思算法的优劣. 体验算法建模的一般流程:实际情境→提出问题→选择算法结构模型(顺序、选择、循环等)→流程图(修正想法、选择最优解法)→选择对应的算法语句→编程实现想法→上机检验并解决问题. 让学生体会到一种成就感和挑战性,调动他们的学习积极性,逐步帮助他们建立起用计算机解决问题的算法思维模式.

高中数学算法教学的应用探讨 篇7

一、算法教学课程的原则

在进行高中数学算法课程时,要根据以人为本的原则;通过高中生的知识接受能力和心理情绪的波动,设计教学的内容;通过对学生们基础知识的熟练掌握,提升自身的算法能力和计算的逻辑思维,从而建立学习的目标、人生的价值观、健康的心理、丰富空间想象结构和语言表达的能力.

二、算法教学的设计

(一)打好基础知识

首先让学生们进行课前的阅读,对于数学算法有初步的认识,对于算法中的程序框图、算法语句和算法案例进行仔细的阅读并进行操作;通过计算的严密性、条理性,一步步的给高中生建立空间计算结构,久而久之,会培养学生的自我解决问题和自我学习的能力,并带有一定的缜密性和逻辑性;只有熟练的运用算法的程序,掌握牢固算法的基础知识,才会对于新的数学知识有一定的消化能力.

(二)算法含义的教学

在进行算法教学时,是让学生们掌握算法的技巧和重点,而不是死记硬背,这样不仅会使学生计算的思维受到一定的限制,没有创新的思想,也会导致学习吃力的现象;首先教师可以运用先渗透后引进的教学模式,调动学生的积极性,在将传统的算法进行分解的形式,或其他新形式的计算法,从而拉近学生与算法的距离.

(三)算法程序框图教学

首先让学生们熟练的操作框图的流程,并通过程序框图,学会用简单的流程解决复杂的问题,例如;(2009年福建程序框图高考试题)阅读右图所示的程序框图,运行相应的程序,输出的结果是().

A.2 B.4

C.8 D.16

解析本题主要是考察学生的程序流程的基础知识,采用直倒型的计算方式,可以让学生清楚地知道每一步的并以以及计算的方式;由流程图算法进行计算得之在n=4前,都是执行的“否”指示,所以n=2×4=8所以选择C答案.

(四)数学课程结合算法教学

高中数学算法教学,应该将数学中的多种内容结合算法进行教学,学生可以利用简易、直观的流程图或其他公式,不仅会提升算法的学习,还会更好的理解数学课本的内容,如图所示;

总结

综上所述;算法对于高中数学的结合是非常有意义的,但是具体实施上有一定的难度,这也是对于教师的一种挑战,也需要相关的专家进行深入的研究;如何让学生们感受到算法教学的价值,首先教师要对算法定义以及应用熟练的掌握,从而将算法的流程,合理的融入到数学知识点中,并给学生充分锻炼的时间和机会,结合计算机程序的操作,让学生充分的意识到算法与数学结合的技巧和逻辑,使其学生全面的提升自身的综合能力.

参考文献

[1]许云伟.高中数学算法教学现状的调查与分析[D].东北师范大学,2012.

[2]刘平.新课程背景下高中数学算法教学的应用探讨[J].课程教育研究,2014,17:147.

[3]李程.普通高中数学算法教学的实践与研究[D].内蒙古师范大学,2012.

算法教学中的一些注意点 篇8

中学数学中引入计算机算法相关的内容是为了体现信息社会发展的需要, 其重要性是显而易见的。由于计算机具有强大的重复计算能力, 现代社会越来越多的事情需要交由计算机来进行自动化处理以提高劳动生产率。受制于经济条件, 中国计算机教育起步比西方发达国家要晚, 尤其在小学和中学阶段, 然而尽早形成算法思维对今后有效地使用计算机来解决实际问题非常重要。鉴于此, 我们有必要对计算机算法的一些基本特点进行探讨, 以此来促进算法课程的教学工作, 帮助学生适应和理解用计算机解决实际问题的一般性思维。

二、算法的概念

算法这个词并不是计算机领域专有的, 早在中国古代就有算法的概念, 从字面上理解算法就是计算的方法。具体的讲, 算法就是为了解决某一具体问题而提出的计算上可行的方案。在计算机出现之前, 人们就对很多经典的数学问题提出了很多可行的解决方案, 这些方案都可以称作算法。在计算机出现之后, 很多以前由于计算复杂度太大而无法手工模拟的算法可以迁移到计算机上得以实现, 同时也出现了很多针对计算机环境而设计的新算法。从这些概念可以看出, 算法并不是计算机领域专有的高深理论, 它本质上就是一种解决问题的方法和步骤。

一个算法首先要是正确的才有意义, 正确在这里意味着该算法可以对相应的问题提供确切可行的答案, 这是对算法的基本要求。但有一种情况是, 由于计算机所能提供的精度是有限的, 我们无法在计算机上对部分实际问题作精确表示, 这种情况下的算法我们称之为近似算法, 这种算法也可以认为是正确的。除此之外, 考虑到计算机的实际情况, 算法还需要在时间和空间上可行。虽然目前计算机的速度越来越快, 但是一个时间复杂度太大的算法随着问题规模的迅速增长也将会变得不可行。同样的, 计算机的内存空间也是有限的, 如果一个算法消耗太多的内存资源, 它也将在实践上是不可行的。

三、算法的元素

在计算上解决问题跟实际生活中解决问题的一个不同之处在于, 计算机上所有的问题最终都是以机器语言的形式来表示, 计算机无法理解人类用自然语言描述的问题。这就是说, 我们必须将算法用计算机所能接受的格式进行规范化, 然后才有可能利用到计算机的高速计算能力。一般来说, 一个算法都有输入、输出和处理等基本单元, 并且每个单元都有其相对固定的结构。这样我们可以很自然地看到, 在教材上出现的一些程序基本结构就是为了算法设计的标准化和直观化而提出的。不管问题有多复杂, 都必须通过这些最基本的元素的各种组合来表示才能最终付诸实施, 所以掌握这些最基本的元素对今后进一步学习复杂算法是至关重要的。更关键的是, 这些基本元素体现的是一种计算机思维, 即计算机解决问题的基本方式, 这恰恰是算法教学中最重要的一环。受限于计算机的硬件体系结构, 我们目前还无法用人类的思维方式来设计计算机。虽然有过很多的努力和尝试, 但目前计算机还仅仅是一个机器, 它的“思维方式”也完全是机械式。

四、中学算法教学

上面已经提到, 思维方式的改变是中学算法教学与学习的重要目标, 然而这往往是很难在短期内实现的一个目标。为了达到理想的教学效果, 教师必须利用一些可能的机会来强化算法的理念, 力图将学生从多年养成的“动物性”思维中转变过来。比如在日常的教学工作中, 除了在教材中能接触到的一些实例, 我们也应该更多地结合现实生活来展示算法在描述现实应用时的强大之处, 这样可以吸引学生尝试对未知的一些问题利用算法工具来建模处理, 其引导和启发作用是很明显的。我们虽然不可能把算法专门作为一门课程在高中阶段进行长时间深入的教学与训练, 但是相信通过合理的引导和重点的突出, 我们依然可以使学生在相对较短的时间内认识到算法精髓, 并能在今后的实际问题中一定程度上进行应用。

中学算法学习中的另一个要点就是各种流程图的作图, 这同样对于今后的深入学习必不可少。与文字相对, 流程图能使算法的设计者对算法的整体有更好的把握, 这样能在很大程度上提高设计的效率。同时, 标准的流程图比文字更便于与人交流。由于这些图表跟现实生活并不直接相关, 具有一定的枯燥性, 教师必须耐心对这部分内容进行介绍。为了使学生能对这些技术有较深的认知, 足够量的训练也是必不可少的。这个过程会比较枯燥, 但是在完成这一阶段的训练之后, 学生自己也会发现算法知识本身的巨大魅力。

五、总结

例谈整数笔算教学中算法的抽象 篇9

如教学“两位数乘一位数 (不进位) 笔算”, 学生在巩固练习阶段, 经常发生这样的错误:

尽管老师反复强调应该用十位上的“1”乘“4”, 得“4”个十, 这个“4”要写在十位上, 但学生再次练习时, 错误依旧。从表面上看是学生受加法竖式计算的负迁移影响, 把乘法算法与加法算法混淆了, 实际上是学生还不懂得乘法算式和算法的意义, 还不知道算理是如何过渡到算法的。

其实, 儿童的思维还处在由具体形象思维逐步向抽象逻辑思维过渡的阶段, 他们的抽象思维水平在很大程度上要依赖于形象或表象的支撑, 可以说, 动作思维、形象思维或表象思维在低年级儿童思维中占有很大的比重。过早的抽象会增加学生理解的难度和记忆的负担。为此, 教师要充分认识儿童的思维特点和认识水平, 在形象思维与抽象思维之间的铺路架桥。

在实际教学中, 要让学生在充分理解算理的基础上, 先自主探索算法, 再相互交流和比较算法, 然后逐步抽象和概括出算法, 并不断优化算法。要让学生切实体验过渡和演变的过程, 以获得对算理的深层理解和对算法的切实掌握。补救措施如下:

1. 再次理解并外化意义。

首先要让学生准确理解算式的意义, 在算式和算理之间自觉转换。如让学生知道12×4表示求4个12相加的和是多少, 与12+4的意义不同。在此基础上引导学生外化意义:或用4个12连加, 或操作, 或画图, 或想象成如下图。

这样便于学生利用直观算理抽象算法, 培养学生的数感。

2. 再次交流并比较算法。

对于如何计算12×4, 教师仍要放手让学生自主探索算法, 并通过交流和比较逐步优化算法。学生出现如下算法:

(1) 借助操作或图形计算和用连加计算

(2) 用乘法竖式计算和用最简的乘法竖式计算

教师引导学生通过比较, 再次感到用画图和加法计算都比较麻烦, 用乘法竖式计算简便些, 而最简的竖式计算更简单。教师还要引导学生进一步思考:在类似的乘法竖式计算中, 是不是还有相同的现象?为此, 需要继续研究。

3. 再次优化并提炼算法。

教师引导学生尝试用两种乘法竖式计算其他类似的算式, 如11×9:

这样便于学生进一步强化算理, 不断优化并提炼出最简便的一般算法。学生通过多次观察和比较, 采用不完全归纳法得到:可以把十位上的数乘一位数所得和积的十位上的数字直接写在十位上, 从而得到最简化的竖式。

4. 再次反思并理解算法。

教师还要启发学生思考:用这样竖式简算的根据是什么?教师要结合具体竖式, 如12×4的竖式, 借助直观算理, 使学生感悟到:竖式中的2×4表示求4个2的和是多少, 得8个一, 8要写在个位上;竖式上的1×4表示4个十的和是多少, 得4个十, 4要写在十位上, 最后把两次所得的积合并。这样学生才会在抽象算法与直观算理之间建立实质性的有意义的联系, 才会对算法不但知其然, 而且知其所以然, 知道算法是如何演变过来的。

5. 再次抽象并概括算法。

此时, 用最简的一般算法进行计算已经成为学生的自觉选择, 学生完全可以结合自己的体验和发现, 概括出算法。这样让学生再次从具体到抽象, 从个别到一般, 从感性到理性, 竖式由繁到简充分经历算法的不断建构过程, 逐步建立基本的算法模型, 不仅获得了对算理和算法的深层理解, 还学会了比较、优化、概括和归纳, 学会了数学化地表达, 这将有利于学生的自主迁移和创造, 也有利于其灵活地运用算法进行计算。

算法的教学 篇10

在新课程理念下, 高中信息技术与数学的整合也不再是单纯的技术支持, 而是教学内容上的融合、教学方式和学习方式的变革。信息技术教师要尽可能地向学生提供充分从事数学活动的机会, 有意识地在课堂中渗透各种数学思维方法。

●由算法教学延伸到数学思维训练

程序设计思想中最重要的是算法, 而算法是建立在数学思维上的。可以说, 程序只是一件衣服, 算法才是它的灵魂。

算法来自于数学, 没有深厚的数学思维功底很难真正懂得算法。一个具有数学修养的程序员在写代码时更有可能写出逻辑严密的最简化的高质量代码。微软公司总裁比尔·盖茨年轻时对数学很痴迷, 而微软的项目经理, 必须得具备超强的数学思维, 而且有些还是数学专业的博士, 从这也可以看出微软公司对数学人才的重视程度。

大学计算机专业学生对此普遍有感触, 计算机专业课程中最难的几门课程莫过于离散数学、编译原理、数据结构, 当然像组合数学、密码学、计算机图形学等课程也令许多人学起来相当吃力, 很多自认为数据库学得很好的学生在范式、函数依赖、传递依赖等数学性比较强的概念面前感到力不从心, 这些都是因为数学基础或者说数学知识的缺乏所造成的。

数学是计算机的基础, 这也是计算机专业研究生数学考试都采用最难试题 (数学一) 的原因。学计算机的学生之所以觉得《数据结构》这门课程很难, 就是因为他们的数学思维锻炼得不够!其实生活中有很多这样的例子:对于一个刚毕业、编应用软件的大学生, 在编程中用到《线性代数》的矩阵时, 恐怕便会想, 在大学把线性代数学好就好了;当在程序中用到动态链表、树时, 恐怕也会想“在大学时花点时间去学《数据结构》, 会多么有意义”;当学数据结构时, 恐怕也会想“学《离散数学》时为什么要逃那么多课”。所以, 数学思维不够, 在软件编程时就会有很多疑虑, 显得有点缩手缩脚, 而且写的程序也不够健全, 缺乏逻辑。

数学试题与应用程序试题是许多大型软件公司面试中指向性最明显的一类试题, 这些试题就是考查应聘者的数学能力与计算机能力。

不仅是微软, 世界上一些著名的IT公司在笔试的时候, 都会在程序设计题中考查应聘者的数学思维能力。数学上功底扎实, 在软件编程上会优势尽显, 项目的设计模式会格外优化, 程序逻辑条理也格外清晰。软件编程需要很强的逻辑思维能力, 而数学最能培养人的逻辑思维能力, 其实我们国家的计算机软件水平的落后不是因为我们缺少程序员, 而是因为缺乏懂数学的高质量的程序员。

●把程序设计运用到数学教学之中

高中新课程在内容选择上体现了信息技术与学科之间的融合。例如, 数学新教材中增加了算法、算法流程图及信息技术应用的内容, 有的甚至提供了实现算法的VB源程序。这与信息技术选修模块《算法和程序设计》的教学内容密切相关。另外, 《算法和程序设计》中解决的实际问题有很多是数学问题, 如求圆的周长、等差数列求和等。这为实现信息技术教学与数学教学的整合奠定了内容基础。数学教学内容与程序设计教学内容有很高的相关度, 数学、信息技术教学、信息学竞赛教学内容相互融合、相互促进, 通过教学内容的扩展和延伸, 相互渗透, 相互促进。

在学习中国古代数学时, 中学生能够很容易理解的内容还有熟知的割圆术、多项式求值的秦九韶算法等。算法内容反映了时代的特点, 同时也是中国数学课程内容的新特色。中国古代数学以算法为主要特征, 取得了举世公认的伟大成就。现代信息技术的发展使算法重新焕发出前所未有的生机和活力, 算法进入中学数学课程, 既反映了时代的要求, 也是中国古代数学思想在一个新的层次上的复兴, 成为了中国数学课程的一个新特色。

中学数学中的算法内容和其他内容是密切联系在一起的, 如线性方程组的求解、数列的求和等。具体来说, 需要通过模仿、操作、探索, 学习设计程序框图表达解决问题的过程, 体会算法的基本思想和含义, 理解算法的基本结构和基本算法语句, 并了解中国古代数学中的算法。

算法的教学 篇11

[关键词]高中数学 算法初步 建议

[中图分类号] G633.6 [文献标识码] A [文章编号] 16746058(2015)200026

《算法初步》是高中数学教材中的新增内容,大部分教师在教学过程中遇到了很多问题,如教学的方式陈旧、知识储备不够、教学重难点把握不准等.为了了解目前算法教学的现状,更好地处理有关算法的教学内容,笔者对兰炼总校的教师与学生进行了调查.现结合调查分析与自身的教学实践,提出以下几点教学建议.

一、研读新课程标准,加强算法相关知识的学习

教师必须理解、掌握好数学教材中有关《算法初步》的内容,才能正确引导学生理解算法及算法思想.首先,教师要研读新课程标准,理解和掌握教学的内容体系安排、逻辑结构关系、教学目标、教学重难点等,这样才能做到有的放矢.其次,教师最好能够掌握一些计算机程序设计语言.虽然新课程标准中强调不能把算法初步的内容当成程序语言,但教师应当清楚,掌握一定的计算机程序语言对教学工作和自身的发展都有着非常重要的作用.

二、合理把握教学难度,重视算法思想的培养

在教学中,要重视基础,把握难度,不要对学生要求过高,可列举一些恰当的、简单的、有代表性的例子,逐渐地渗透算法思想.教材引进算法的主要目的是让学生体验用算法思想解决实际问题的过程.尽管高考对算法的考查一般是一道选择题,但教学中,教师应在引导学生解决实际问题的过程中逐渐培养学生的算法思想.例如,在算法概念的教学中,教师可设置这样一道题:“一人带着一只狼、一只羊和一箱蔬菜要过河,但只有一条小船.乘船时,每次只能带狼、羊和蔬菜中的一种.当有人在场时,狼、羊、蔬菜都相安无事.一旦人不在,狼会吃羊,羊会吃蔬菜.请设计一个方案,安全地将狼、羊和蔬菜带过河.”这样的例子既增加了趣味性,又渗透了算法思想.又如,鸡兔同笼问题:“今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?”该题本质是解方程

可利用加减消元和代入消元设计不同的算法,这样可让学生多角度思考问题,设计算法.因此,培养算法思想可以提高学生的逻辑思维能力和解决实际问题的能力,提高学生对数学应用的认识与理解.

三、渗透数学文化,激发学生的学习兴趣

算法在我国古代数学中的表现尤为突出,教师在教学中渗透数学文化,不仅可以激发学生的学习兴趣,也有助于学生理解算法概念,培养学生的数学应用意识.例如,教师介绍《算法初步》这一章图中的算筹、算盘、《四元玉鉴》及古代数学的辉煌成就,并创设相关的教学情境,激发了学生的学习兴趣.学生有了兴趣,感受到算法就在身边,才能产生探索的欲望.又如,在教学《辗转相除法与更相减损术》时,教师可以介绍数学家欧几里得的故事及我国古代著作《九章算术》,或呈现某一问题解决的艰辛历程,让学生感受数学的丰富和神奇.渗透数学文化不仅可以激发学生的学习兴趣,发展学生的思维能力,还能陶冶学生的情操,使学生受到深刻的人文教育.

四、抓典型案例,落实教学目标

《算法初步》这一章有许多算法案例,基本上每一个知识点都是通过分析案例、归纳概括出来的.教师可以依据教学内容的需要,恰当选取源于生活的现实案例,如排序问题、查字典问题等;也可以选取数学教材中的例子,如解方程、求函数值、求绝对值等;也可以选取源于数学著作的例子,如《孙子算经》《九章算术》等;也可以选取经典的数学问题,如欧几里得算法等.总之,教师在选择案例时,尽量做到简单、易懂、可操作、有代表性,通过大量的案例教学,使学生更加清楚、准确地掌握算法知识,理解算法思想.

五、通过多样化的算法,让学生体会算法思想

在学习中,学生根据自己的理解设计多样化的算法,并通过交流,学习他人的长处.因此,教师可引导学生去比较、去评价各种算法,使学生掌握最优的、最基本的算法.例如,在《循环结构》的教学中,有这样一道题:计算1+2+…+100.有的学生设计为“当型循环”;有的学生设计为“直到型循环”.通过交流,学生可充分理解循环控制的条件.又如,在设计“求f(x)=2x5-5x4-4x3+3x2-6x+7,当x=5时的值”的算法时,有的学生设计的算法中包含15次乘法,5次加法,有的包含5次乘法,5次加法.教师应引导学生思考、讨论、总结高效算法的选择,让学生体会算法思想.但对于同一问题,如果要求学生设计几种不同算法会增加学生的负担,教师不应要求.

以上是笔者对《算法初步》教学的几点建议,教师应努力探索有效的教学途径和方法,不断提高教学效率.

算法的教学 篇12

●当前算法与程序设计教学中存在的主要问题

笔者在调查中发现, 很多学生选修这一课程的原因是对计算机如何解决实际问题充满好奇, 可一进入实际学习后, 发现编写一个成功的程序要求是如此苛刻, 进而逐渐丧失后续学习的信心。究其原因, 可以归纳为如下几点。

1.习惯性思维:教材“先理论后实践, 先语句后程序”失去了算法的核心

《算法与程序设计》先后介绍了算法的表示、VB6.0语法基础、程序实现。这种教材编排模式考虑到了学生认知的一般规律, 但是不利于学生深入理解计算机解决问题的“分析问题——设计算法——编写、调试程序”的“三段式”过程, 导致学生一碰到实际问题不会首先想到分析问题和设计算法, 而是直接进入编写、调试程序过程, 从而缺失“寻找算法”这一关键过程。

2.传统性教学:教师“依教材画瓢, 唯教材至上”, 缺少教师的引导性

受教材内容编排和传统性思维影响, 很多教师在课堂中一直未能寻找到一种能够让学生“快乐参与, 快乐学习”的教学模式。

3.普通课时编排:学生“渴望验证算法, 但缺少实践时间”成为一种怪象

算法与程序设计是一门算法思想培养与程序设计能力提高并重的课程, 特别是后一目标的实现需要大量的上机实践。而当前中学信息技术课程的开设情况是一个星期两节课, 并且相隔时间较长, 从而造成“前面学, 后面忘”的尴尬境地, 最终导致很多学生在紧张的课堂中未能完成验证性实验, 以致常常“带着失败的心情走出机房”。

●针对上述问题而修正的教学实践

针对以上列举的算法与程序设计教学中存在的问题, 笔者主要做了以下几点探索。

1.寓基础语法于简单程序实现中

对于任何一种编程语言, 如果学生对基本的语法规则都未“了然于胸”, 那么在后续的学习中必将加大程序调试和错误分析的工作量。而教材对于语法内容的编排是按照基本数据类型、常量和变量、基本运算和表达式、语句、过程和函数的顺序依次介绍的, 这对语法教学比较不利, 因为我们编制的每一段程序往往包括一系列的基础语法。因此, 教师一定要做到寓基础语法教学于程序实例中, 而不是各个语法“各自为战”。

比如, 笔者在介绍基本语法模块的第一课时就向学生介绍如何实现求和问题, 学生首先设计算法, 然后教师用VB演示具体实现:

在这个实例中就综合了数据类型、变量定义、基本运算和表达式、数据输入输出、事件等相关语法知识, 教师可以借此展开以上相关语法介绍, 这样就通过具有一定综合性的简单程序实例使这个载体实现基础语法的覆盖。

2.寓算法思想于复杂问题解决中

对简单的问题, 学生往往能够直接上机将程序编制出来, 而当遇到较为复杂的问题时就普遍表现出“不知如何下手”, 究其原因是教师没有引导学生分析问题并形成算法思想。比如, 笔者在介绍复杂问题的程序实现时, 选取了如下实例。计算

针对这种复杂问题的求解一般可按照“分析问题——设计算法——编写、调试程序”“三段式”进行。观察表达式后, 可以发现本实例是一个利用解析算法求数列和的问题, 其中数列的通项为:

总结出以上规律后, 就可以设计解决本问题的算法, 具体如下。

设计好算法后, 程序的编写就相对容易, 一个用来输入变量n值和一个用来输出最终结果S值的文本框, 再加一个按钮触发事件就可以了。

3.寓抽象理论于现实情境中

浙教版《算法与程序设计》介绍了枚举算法、解析算法、排序、查找等内容, 而这些理论内容都相对较为抽象、枯燥, 因此如何在课堂教学中创设情境将抽象理论与实际应用相结合, 是一个值得研究的课题。

比如, 对枚举算法, 笔者采用了如下的现实问题:“有一道写在纸上的数学题目因被水淋湿, 其中的两个数字已经模糊不清:如何编写程序找出以上两个模糊的数字?”这个问题本质上是枚举算法的实际应用。本问题也可以改为账户票据中被涂抹数字推算。除此之外, 教材上列举的变形金刚装箱问题以及《孙子算经》中的“物不知其数”问题等也是很好的抽象理论与现实情境相结合的枚举算法实例。

再如, 对教材上的选择排序的解析, 笔者是这样设计如下实例来讲解的。

10个不同身高的学生站成一排。

步骤一:从第1~10这10个人中选取身高最低的同学, 将其位置与第1个同学交换。

步骤二:从第2~9这8个人中选取身高最低的同学, 将其位置与第2个同学交换。

以上过程循环进行9次, 就得到了10个同学身高按照从低到高的递增排序。选择排序中的“选择”就是“选择最值”, 然后将选择出的最值“归队”, 再在余下的数据中重复进行“选择最值”和“归队”的过程, 直至所有数据有序。

4.寓上机实践于连排课教学中

学生是第一次接触程序, 加之当前学校一般将两节信息技术课分开来编排, 因此学生经常在课堂上机过程中出现“错误层出不穷”、“调试缺少时间”等问题, 严重影响课堂教学效率的提高。

针对上述实际, 可以首先采取连排课的形式, 将每周的两节课集中一起上, 这样使得每个学生都有充足的时间去发现和解决程序设计中的一系列问题。同时, 教师也要处理好自身主导地位和学生主体地位的关系, 避免和学生发生“抢时间”的现象, 教师讲授和学生上机时间应以1∶2左右为宜。其次, 可以建议学生养成从软件的“帮助菜单”中寻找答案的习惯, 充分利用好“帮助”文件这本“教科书”。

上一篇:探索自我下一篇:声音的控制