(共21张PPT)
本课学习目标:
一、知识与技能目标:
了解算法的概念和发展历史。
二、过程与方法目标:
学会分析问题,提取问题形成算法描述。
掌握流程图的概念与制作方法。
三、情感、态度与价值观目标:
通过对问题的研究和分析,设计算法对问题进行求解,提高分析问题和解决问题的能力,体会算法分析的魅力。
传说古印度的舍罕王整天被一群溜须拍马的大臣们包围着,百无聊赖,每天要通过玩游戏方式来消遣度日,可当时印度国内已知的游戏技术难度低,舍罕王玩几天就失去了兴趣,便向全国重金悬赏新游戏来打发时间,并夸下海口说:“天下所有的游戏,只要他研究学习半个月就可以达到最高的境界”。宰相西萨·班·达依尔见国王自负虚浮,决定给他一个教训,他向国王推荐了一种在当时尚无人知晓的游戏。国王对这种新奇的游戏很快就产生了浓厚的兴趣,一年两年过去了,舍罕王对这种新游戏兴趣不减,越研究越觉得这种新游戏高深莫测,一直到他即将驾鹤西去,心里还惦念着这种新游戏——国际象棋。
舍罕王为了表彰宰相西萨·班·达依尔发明国际象棋的功绩,一天将他传到大殿,问他需要得到什么赏赐,于是,宰相西萨·班·达依尔跪在国王面前说:“陛下,请您在这张国际象棋棋盘的第一个小格内,赏给我一粒麦子,在第二个小格内给两粒,第三格内给四粒,照这样下去,每一小格都比前一小格加一倍。陛下啊,把这样摆满棋盘上所有64格的麦粒,都赏给您的仆人罢!”国王慷慨地答应了宰相的要求,他下令将一袋麦子拿到宝座前。计数麦粒的工作开始了。第一格内放一粒,第二格两粒,第三格四粒……还没到第二十格,袋子已经空了。一袋又一袋的麦子被扛到国王面前来,但是,麦粒数一格接一格地增长得那么迅速,很快就可以看出,即使拿来全印度的小麦,国王也无法兑现他对宰相许下的诺言!宰相西萨·班·达依尔到底要求的是多少麦粒呢?稍微算一下就可以得出:1+2+22+23+24+……+263=264-1(2的64次方减1),直接写出数字来就是
18,446,744,073,709,551,615粒。宰相西萨·班·达依尔所要求的,竟是当时全世界在两千年内所产的小麦的总和!如果造一个宽四米,高四米的粮仓来储存这些粮食,那么这个粮仓就要长三亿公里,可以绕地球赤道7500圈,或在日地之间打个来回。国王哪有这么多的麦子呢?他的一句慷慨之言,成了他欠宰相西萨·班·达依尔的一笔永远也无法还清的债。
正当国王一筹莫展之际,王太子的数学教师知道了这件事,他笑着对国王说:“陛下,这个问题很简单啊,就像1+1=2一样容易,您怎么会被它难倒?”国王大怒:“难道你要我把全世界两千年产的小麦都给他?”这位教师说:“没有必要啊,陛下,其实,您只要让宰相大人到粮仓去,自己数出那些麦子就可以了。假如宰相大人一秒钟数一粒,数完18,446,744,073,709,551,615粒麦子所需要的时间,大约是5800亿年。就算宰相大人日夜不停地数,数到他自己魂归极乐,也只是数出了那些麦粒中极小的一部分。这样的话,就不是陛下不支付赏赐,而是宰相大人自己没有能力取走赏赐”。国王恍然大悟,当即下令召来宰相,将教师的方法告诉了他。西萨·班·达依尔沉思片刻后笑道:“陛下啊,您的智慧超过了我,那些赏赐……我也只好不要了!”当然,最后宰相西萨·班·达依尔还是获得了很多赏赐(当然没有麦子了^O^)。
一位农夫要带一只狼、一只羊和一棵白菜过河,如果没有农夫看管,狼就要吃羊,羊要吃白菜,但是船很小,只够农夫带一样东西过河。问农夫该如何解此难题?
一、算法的概念
1.算法的概念。
人们把进行某一工作的方法和步骤称为算法。
2.解决问题的一般方法
首先对问题进行观察、分析、细化,同时收集必要的信息,然后根据已有的知识、经验进行判断和推理,尝试按照一定的方法和步骤去解决问题
想一想:
如果你是农夫,你应该怎样将狼、羊、白菜安全地运过河去呢?
我们使用了语言描述解决问题的过程,这种方法称为自然语言描述算法。
第一步:农夫把羊先带过河,自己返回。
第二步:再把白菜带过河,同时把羊带回来。
第三步:把羊放下,然后把狼带过河,自己回来。
第四步:最后把羊带过河。
算法的择优
(1) 处理同一个问题可能有不同的算法,采用什么样的算法更简单、方便呢?
(2例子:著名数学家华罗庚“烧水泡茶”的两个算法。
算法一
第一步:烧水;
第二步:水烧开后,洗刷茶具;
第三步:沏茶。
算法二
第一步:烧水;
第二步:烧水过程中,洗刷茶具;
第三步:水烧开后沏茶。
第二个算法的科学性在于应用了“统筹方法”。因此,我们可以明白一个好算法必须用到科学的方法。我们应该好好学习各学科处理问题的科学方法。
流程图(flow chart)是描述我们进行某一项活动所遵
循顺序的一种图示方法。
就是编程
即把算法解释为计算机能够识别的二进制数据
1、vb是使用英语语言进行编程的开发工具。
Private Sub Sum_Button_click() Dim I, S As Integer
S=0
For I=1 To 100
s=S+I
Next I
Print "1+2+3+...+100=";S
End Sub
VB程序代码
求和1+2+3+4+……+100= 的VB程序代码
2、E语言使用汉语言进行编程的开发工具。
全中文支持,无需跨越英语门槛。全可视化编程,支持所见即所得程序界面设计和程序流程编码。中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。参数引导技术,方便程序语句参数录入。无定义类关键字。所有程序定义部分均采用表格填表方式,用户无需记忆此类关键字及其使用格式。命令格式统一。所有程序语句调用格式完全一致。
2、你会做西红柿炒鸡蛋这道菜吗?请根据自己的方法写一个西红柿炒鸡蛋的算法。
1、以下给出关于算法的几种说法,其中正确的是( )。
A、算法就是某一个问题的解题方法
B、对于给定的一个问题,其算法不一定是唯一的
C、一个算法可以不产生确定的结果
D、算法的步骤可以无限地执行下去不停止
2010年3月1日