生活中的算法
导入
好,上课同学们好,请坐。我们看这个屏幕啊,大家看一下这个灰色的这个区域,你知道是什么地方吗?有人知道吗?(柴达木盆?地有点接近了),这个是我们中国最大的沙漠,塔克拉玛干大沙漠。
现在沙漠化的问题越来越严重,尤其是前段时间蒙古吹过来的沙尘暴,大家都亲身体会到了吧。所以我们也在通过一些公益的事业,通过植树,来改善这个自然环境。
知识点1:
这节课我们也来种一棵小树苗。那种树需要几个步骤呢?
我这里做了几个板贴,请同学到上面来板贴一下这些步骤,谁能来试一下?
哎我们找近一点的同学,你来吧来试一下。可以在这个地方。把你植树的步骤贴一下。现在我把这个位调一下,像这些步骤,如果我们再加上开始、结束,我再连上一些线条和箭头。像这样按照从上往下的顺序执行。
为了解决某一个问题而采取的步骤,我们就称之为算法。
今天这节课,我们就一起来走进【生活和算法】(贴),探索算法世界的奥秘。
3min
二、新授
刚才我们同学已经把这个正确的步骤离出来了,我呢也设置了一个小的动画,来模拟植树的步骤。待会儿在这个动画演示的过程中,如果你发现有什么问题的话,赶紧喊停。 现在模拟开始。
如果你发现他有问题,赶紧想停啊。啊要停吗?哎没有人喊停啊?
提问:你来说这个过程有没有问题?
回答:他一直在挖动,然后就没有停过,就没有放入树苗。就没有往下的一些其他步骤
评价:啊你说的非常的明确。
那像我们这个算法呢有穷的。也必须要非常的明确。
知识点2:
挖洞到底挖多深?(贴)放入树苗之后,那到底要浇多少水?(贴)每一个步骤都必须非常的明确,那这个我们称之为算法的确定性。
现在有5个步骤,5个步骤执行完之后,我们这个算法就结束了。在有序的步骤之后能够结束,我们称之为算法的有穷性。
除此之外,这个算法你要交给计算机,或者说交给这个机器人去执行,它必须是可以执行的,我们称之为算法的可行性。
当然,一般在计算机上执行的程序,我们还有输入和输出。
这5个特性呢就是我们算法最核心的五大特征。
过渡:那刚才我们是通过一个动画来模拟的植树算法。那么在现实世界中,有没有真正的植树机器人?我们来看一个短视频。
3min
提问1:看来刚才这个小视频,大家有什么想发表的感言吗?随便说啊,都可以。
【回答:他们对于沙漠化的治理有了一定的改善和科技创新。
提问2:他们利用科技创新改善荒漠化。还有其他的吗?你觉得这个团队怎么样?
回答:这个团队很好。好在哪里?他们碰到了很多问题,最终它解决。
这个团队具有锲而不省的精神,对吧?
回答:他们那个治理的过程,就研究那些机器人的过程比我们想象多,困难很多。中要经历将近两年的研究。
将近两年也久,解决了很多问题。才造出这样一个挖洞的机器,对吧。非常好。感谢您的回答。】
我们该学习他们锲而不舍的探索求知的精神,来解决各种各样现实中的问题。接下来,我也有一个问题需要大家一起解决。
好,刚刚我们已经挖好坑了,那在植树过程中,运输是个非常重要的环节,那到底需要运输多少棵树呢。
问题1:如果在200 * 200个正方形的区域上,要间隔两米,种一棵树。每一排能种几棵树?
提问;你能说下这个式子吗?
200/2+1=101棵。非常好。
问题2:那这是一排的数量。那如果是整个正方形面积呢?
那整个正方形呢应该多少?
101 * 101这是整个正方形面积中的树的数量。
问题3:那如果是用字母的方式表示呢?接下去同学们拿出你的导学案尝试来写一下。(巡视)
好,我们一起来看一下。
首先看第一个,每一排能住几棵树?
我现在很多人都已经写好了,来,把你的这个答案念一下吧:a/k+1。这样写,评价:非常好。你现在已经能够用字母来抽象表达数量之的关系。
知识点2:那像这样用字母来表示数字之间的数量关系,啊在数学里面我们称这个代数是吧?那么在程序里面,我们称之为变量。
变量,用来保存我们程序在运行中要用到的数据。
第二个,k分之a加一的平方,就是刚才第一个式子的平方。
下一个式子你来说一下五分之m,五分之m。有没有不同意见5000分之m。千万不要忘了,单位之间这个是不一样,一个是k g,一个是吨。
那么像这样的一个计算了这个步骤,
如果我们用流程图的方式将它从上下串联起来,请大家再想一想,除了刚才这三个计算的式子之外,还要补上输入什么,输出什么?
提问:你来说,输入akm。a, k,m这三个量是需要输入的对吧?
啊然后N等于k分之a加一的平分。N等于就是这个式子写过来。T呢把这个式子写过来。输出是什么?。,我们最终要得到是需要多少卡车来运输这个树描。
非常好。那像这样一个张用流程图表示的算法,你觉得是否符合刚才我们所说的这5个关键特征吗?
符合。符合是不是。有穷的步骤,能够执行,每一个步骤都非常确定,有输入,有输出。
非常好,像这样一个完整的算法,我把它做成了一个小的程序。作为奖励给你,请你到台上来帮我们演示一下。讲解:可以直接更换这个数字,然后单击这个按钮,就可以计算出需要多少卡车。有没有其他人想再来试一下。
那么像这样一个计算的过程,我们把它用程序实现之后,大家发现计算非常快速对不对?
那实现这个程序,它背后的代码是什么样的呢?我们来看一下。
这个程序的背后,就是像这样的代码实现的。好,我们来把它对应一下,这几句话就是我们刚才所对应的输入,而这个呢就是我们的计算的过程。最终我们把这个t输出,这就是一个完整的用代码实现算法的一个过程。那么和刚才我们用流程图相比,这两者方式其实都是算法的不同表达,
不管是用代码也好,不管是用这个流程图也好,流程图呢是用一种步骤让我们更加能够容易理解,而代码呢是通过能够让计算机能够理解并且执行的方式来实现。这都是我们一个算法的实现过程。
而刚才我们是通过算法解决了运输的过程,那么这个树苗种下之后,它后续的生长状况怎么样呢?呃我们捐出的人士呢,也非常想了解一下。比如说在桌面上我们有这样一个文档啊,是十多万条的树苗的信息,如果要在这些信息中我们要快速的找到,比如说像这样的一个信息。这个是一个树号信息,大家想一想,我怎么才能快速把找到啊。自己来动手试一下。
找到了吗? 比较两种方法 1.用眼睛 2.查找 如果你找到马上举手示意我。
直接用鼠标上下拉。我们想一想它是不是利用了计算机?它依靠了敏锐的视觉以及快速的大脑判断,通过来回的拖动找到我们要寻找了这个这个信息。
还有没有不一样的方法?编辑里面就有个查找。
哦他用到了编辑里的查找,对吧?输入相应的关键字,然后快速的查找对吧?
很好,两种不同的方法。那么我们可以发现,其实同一个问题,可以有不同的算法来解决。当然,我们在这个查找的过程中,如何查找,用什么方法查找。查找背后肯定也蕴藏着不同的算法。
那么老师给大家带来了两个跟查找相关的,最为典型的算法,我做了一个ppt,我们一起来体验一下。现在我先来说一下这个怎么使用?
第一张是一个功能介绍,第二张跟第三张分别是两种典型的算法。
你需要使用这些按钮,来运行。
首先必须放映。你可以按初始化,把这个数据清除一下。输入关键字,你可以单步执行它。动画自动呈现每一步。也可以单击这个查找,让它完整的自动执行整个过程。那么需要一点点小的注意,就是在它自动查找的过程中,你不要再去单机其他按钮了。不然就乱掉了。
那这个是第二页的,第三页也是类似的按钮。啊大家可以试一下,然后理解一下。这两种查找算法有什么差异?
(找的过程中就不要再去按了)
两种算法话都体验过的,请你完成导学稿中的探索任务。(巡视,指导一两个学生,让他说说发现)
体验完后,导学案里的探索任务,自己算一算。
我们一起来看一下。刚才我们体验的两种算法,一种叫顺序查找,一种叫二分查找。
探索里面有一个表格,刚刚已经填过了。来说一说你的答案。
如果要在这个数列中,顺序查找,找3跟42分别需要几次?
谁先来说一下。
3是一次,42是10次比较之后。
第二个就难一点了,二分查找,你觉得需要几次?
先说一下你的这个格子填的,你来说。
这个程序我给大先初始化一下。找三,我们看这个找的过程,看这动画,啊哎首先是确定了18,跟它比较,这个数字比18小,所以找前面的对吧?第二次跟十再比较,第三次呢是跟三比较,第三次的时候找到了。
如果是42的话,啊我们也来运行一下。哎同样也三次。答案是正确的,
那么这二分查找,谁能用自己的话简单概括一下。
答:说得非常好,啊我们给他鼓励一下,太棒了。
但我们想,不同的算法,在解决相同的问题,他们肯定有优劣之分,就像这个二分差查跟顺序查找。大家想一想这两个算法,他们在测试中有什么优劣呢?这个问题比较难,我们同桌之间可以互相讨论一下,啊互相说一下一分钟的时间。
好,时间到好,我们每个人稍微酝酿一下你的这个话。这两种算法你觉得各有什么有什么优劣。来,请你来说一下吧。
如果要查找的数字小的话,顺序查找更为快。【关键字吗还是说整个数列小】因为数字比较小的时候别较靠前,对,这样的话可能以顺序查找更为快。
如果二分查找的话,它是以中间间为主,然后在左右左右那个去找这个数字就要经过很多个步骤。
但如果这个数字比较大的话,可能用顺序查找会很很麻烦,他会要一个一个比较,但用二分查找的话,它是如果这个数比它小的话,它可能是会往左边人移。如果比他大的话,会往右边移,这样的话,会稍微快一点。
还有其他补充的吗?其他的有没有补充。
二分查找他对数叶要求必须是从小到大排,不然的话,他就没有没有办法用二分查找 去找我们要的那个数。
说太棒。他讲到一个非常关键的一个点,二分查找它的前提是什么,
就这个整个树列,它必须是有序排序过的。而顺序查它的优点是什么呢?即便你没有排序过,我也可以一个一个对关键字进行比较,是不是?总之还是能找到,但是效率会比较低。而二份查找它的效率,数字越大,这个数字越多,它查找的效率其实更加明显啊。非常好,感谢你的回答。
那这节课我们在这整个植数的过程中。分别从种树,运输,查询这很多环节来讨论各种碰到的问题,并且用算法来解决,那实际上算法在我们的生活中无处不在,大家想想除了植树这个环节之外,在生活中有没有其他的场景也有的算法。这个算法只要是步骤就就是算法。不一定跟机器啊或者程序啊有关系。
哎,你觉得有吗?1.寄快递?你说看有几个步骤。就是把快递给油气员,然后邮寄员运输到要到的地方,然后到了地方之后在别人去查询。
寄己快店也要需要步骤很好,请说还有吗?
旅游需要导航,导航就有很多条路,然后就得挑种最近的或者最快的路。好,你选的这个好,和老师选了一些,其中有一个是一样的。
所以这个算法不管是我们外出出行要用到,还是在家里,到处充满了算法,充满了各种我们用算法实现的程序,来提高我们的生活质量。包括老师这节课是所用到的教学设计,它其实也是一个算法。在课堂上,我们所用到的各种小程序更是各种算法的具体实现。
那么,通过今天这节课的学习,大家有什么收获吗?
1.比如说你今天学到的算法有几个特征?5个特征
2.你说看:就是生活中离不开算法,算法可以让那个生活变得更加便利。它可以就是,例如要寻找一个数字的话,它可能就是没有,如果没有算法的话,他会很麻烦。但是有了算法之后,会发现它会就是变得更快。但是,算法也有有也有优点,也有缺点,啊你说的太多了,太好了,
这个算法科技的这个种子,在你的心中已经萌芽。
今天这节课我们虽然是种了一棵小树苗,啊这个树苗很小,但是通过我们不断的努力,也能够让沙漠变成绿洲。我们的人生,其实何尝不是一种算法,需要不断的优化升级才能让你取得更大的这个成就。
那今天这个这节课我们就上到这里