算法及其实现
【学习目标】
1、了解算法的含义
2、了解算法的表示方法
3、会用流程图表示算法
4、能正确理解流程图中算法的意义
【重难点】
正确理解流程图中算法的意义
【问题引导】
问:在考试练习中,同学们一定遇到这种题,你们怎么来做?这一类题在考试中以选择题的题型出现,占2分。
1
【教学活动】
1、
小组讨论(四人为一个小组,3分钟)
首先,我们一起来做一个游戏:一个农夫带着一条狼,一头山羊和一篮蔬菜要过河,但只有一条小船。乘船时,农夫只能带一样东西。当农夫在场的时候,这三样东西相安无事。一旦农夫不在,狼会吃羊,羊会吃菜。请问农夫如何能安全地将这三样东西带过河?
教师总结:同学们,经过分析,我们可以知道在农夫离开的情况下,狼和羊不能单独在一起,羊和菜不能单独在一起,但是狼和菜可以单独在一起。于是我们可以得到的步骤如下:
第一步:农夫带羊过河
第二步:农夫独自回来
第三步:农夫带菜过河
第四步:农夫带羊一起回来
第五步:农夫带狼过河
第六步:农夫独自回来
第七步:农夫带羊过河
同学们,你做对了吗?是不是把每个步骤都记录了下来呢?在这7步中常常有同学会漏了其中的第2,4,6步,而这些步骤在这个游戏中是不可缺少的动作,否则就不能完成总体目标,使问题获得圆满解决。因此,在解决某一问题时我们要把各个步骤都精确的考虑到。上面这个例子中的解决问题的步骤其实就是编制程序的基础——算法。教师展示课题与教学目标。
2、
学生自主学习(给学生2分钟的时间看书61页,完成学案)
算法就是解题方法的精确描述。算法是一种有穷的动作序列,即算法是由有限个步骤组成的。算法中,每一步动作的表示形式并没有特定的格式,可以是抽象的也可以的具体的,但是这些动作的含义应当是明确的(即没有二义性)。从广义的角度来看,日常生活中处处有算法,如菜谱是厨师做菜的算法,厨师只要根据菜谱上的步骤做可以做出从未做过的佳肴;乐谱是乐队演奏的算法,乐队根据乐谱在精确的时间段按照节奏演奏乐曲;广播体操图解是做广播体操的算法。
2
对同一个问题,有时可以有不同的解题方法和步骤。有的方法只需要较少的步骤,而有些方法则可能需要较多的步骤。一般情况下,尽可能采用简单省时的和步骤少的方法去解决问题。因此,为了有效地解决问题,不仅需要保证算法正确,还要考虑算法的质量,这就要求人们设计或选择合适的算法。
3、
小组讨论算法的优化(四人为一个小组讨论书61页的“泡茶”,3分钟)
要想泡茶喝,但当时的情况是:开水没有,水壶要洗,茶壶和茶杯要洗;火已生了,茶叶也有了,怎么办?
方法甲:洗水壶,灌上凉水,放在火上,在等待水开过程中,洗茶壶,洗茶杯,拿茶叶,等水开了泡茶喝。
方法乙:先做好一些准备工作,洗水壶,洗茶壶和茶杯,拿茶叶,一切就绪,灌水烧水,等待开了泡茶喝。
方法丙:洗水壶,灌上凉水,放在火上,等待水开,开了之后急急忙忙找茶叶,洗茶壶,洗茶杯,泡茶喝。
这三种方法都解决了“泡茶”这个问题,我们再来比较一下这三种方法所耗费的时间,我画出了“方法丙”的泡茶时间表,请同学们补充“方法甲”和“方法乙”的泡茶时间表,然后比较三者,回答以下问题:
1、三种方法都能达到泡茶喝的目标,说明评价算法最重要的标准是:________________ 2、哪种方法更优?
3、从方法甲相对较优,说明算法优化的主要标准之一是:_______________ 同学们,大家和我做的一样吗?
3
这三种方法都能达到泡茶喝,说明评价算法最重要的标准除了能正确解决问题,即算法的正确性外,还有一条重要标准,即算法的复杂性,也就是执行该算法是否省时省空间。
显然是方法甲最优。水壶不洗,不能烧开水,因而洗水壶是烧开水的先决条件。没开水,不取茶叶,不洗茶壶和茶杯就不能泡茶,因而这些又是泡茶的先决条件。由于烧开水需要比较长的时间,如果要提高效率,就要充分利用“等水开”的这段时间并行地进行其他工作,如洗茶杯,拿茶叶等。
从方法甲相对较优,说明算法优化的主要标准之一是考虑算法的质量,优化算法的目的是尽可能采用简单省时的和步骤少的算法去解决问题。
这个例子告诉我们即使解决问题的算法有多种,我们也要尽可能从中找出最科学最有效率的一种。
4、
学生自主学习算法的表示(给学生2分钟的时间看书62页,完成学案)
我们用什么方法来表示算法呢?一般来说,常用的算法的表示形式有三种:
1.自然语言:即用汉语或英语这样的自然语言来表示算法,类似我们上面“农夫过河”和“泡茶”的算法表示,这样的表示方法通俗易懂,但通常所用的文字为了精确的表达意思会比较冗长,还容易出现“二义性”,如“这个人连老刘也不认识”这句话可以理解成“这个人不认识老刘”,也可以理解成“老刘不认识这个人”。
2.计算机语言:通常采用计算机高级语言(如C、Pascal、VB、C++、Java等)来描述算法。这些语言的控制结构被用来说明算法步骤的执行顺序,对初学者来说会不太习惯,因而显得有一定的难度。
3.流程图:是人们经常用来描述算法的工具,流程图用图框及流程线来表示算法,形象直观。
在这三种里面,我们主要学习使用流程图方法来表示算法,首先我们要知道流程图表示法中常用的图框符号,美国国家标准化协会(ANSI)规定了流程图符号,最常用的有“处理框”,“输入,输出框”,“判断框”,“连接框”,“流程线”,“开始,结束框”。
4
例题
5
5、小组讨论能力提升
提示:Mod求两数相除的余数
四、小结
在本节课上我们知道了算法就是解题方法的精确描述。评价算法最重要的标准是算法的正确性和复杂性,我们要尽可能选择最优化的算法来解决问题。这节课上,我们主要学习了算法的三种表示方法中的自然语言和流程图表示方法,知道了流程图中常用图框符号的使用方法和功能特征,并学会了使用自然语言和流程图来表示算法,如果这些你都掌握了,那么恭喜你,你已经有算法的思想了,再加以练习,你就有可能做程序设计员了!
6