第一课时作为家里的一员,在平时分担一些力所能及的事是我们应尽的义务,你每天都帮家里做事吗?你会煮饺子吗?请写出你在家中煮饺子的过程1、往锅子内注水;2、点火加热,等水沸腾后,放入饺子;3、观察,当饺子浮起来后继续加水;4、重复步骤3至少两次。总结:“1”其实大部分事情都是按照一定的程序执行,因此要理清事情的每一步。“2”类似于这样按照顺序执行一系列步骤,最后完成任务的解决问题的思想,就是算法的基本思想。事实上,我们完成任何事,都要有一个步骤,合理安排步骤,会达到事半功倍的效果。在我们数学的意义来讲,在解决某些问题时,需要设计出一系列可操作或可计算的步骤,通过实施这些步骤来解决问题,我们通常把这些步骤称为解决问题的一种算法。这种描述不是算法的定义,但反映了算法的基本思想。【例1】在中央电视台的《幸运52》节目中,要求参与者快速猜出物品的价格。主持人出示某件物品,参与者每次估算出一个价格,主持人只能回答高了、低了或者正确。在某次节目中,主持人出示了一台价值在1000元以内的随身听,并开始了竞猜。下面是主持人和参与者的一段对话:………………….如果你是参与者,你接下来会怎么猜?800元!高了400元!600元!低了高了参与者主持人:李咏方法:(已知价格在1000元以内)1.报出首次价格T1;2.根据回答确定价格区间:(1)若T1低于价格P,则价格区间为(T1,1000);(2)若T1高于价格P,则价格区间为(0,T1);(3)若T1等于价格P,则游戏结束.3.若没结束,则报出上面确定的价格区间的中点T2.按照这种方法,继续判断,直到游戏结束.在给定素数表的条件下,请你设计一个算法,将936分成素因数的乘积.解:算法步骤如下:判断936是否为素数:否。确定936的最小素因数:2。936=2*468判断468是否为素数:否。确定468的最小素因数:2。936=2*2*234。判断234是否为素数:否。确定234的最小素因数:2。936=2*2*2*117。判断117是否为素数:否。确定117的最小素因数:3。936=2*2*2*3*39。判断39是否为素数:否。确定39的最小素因数:3。936=2*2*2*3*3*13。判断13是否为素数:13是素数,所以分解结束。分解结果是:936=2*2*2*3*3*13短除法可以使这个过程更清晰.468936234222117333913例一设计算法,求840与1764的最大公因数.解:第一步,将840分解质因数:840=23×3×5×7;第二步,将1764分解质因数:1764=22×3×72;第三步,确定它们的公共质因数:2、3、7;第四步,确定公共质因数的指数:2、1、1;第五步,最大公因数为:22×3×7=84.例二思考以下问题的算法:一位商人有9枚银元,其中有1枚略轻的是假银元。你能用天平(不用砝码)将假银元找出来吗?解:1.把银元分成3组,每组3枚。2.先将两组分别放在天平的两边。如果天平不平衡,那边假银元就放在轻的那一组;如果天平左右平衡,则假银元就在末称的第3组里。3.取出含假银元的那一组,从中任取两枚放在天平的两边。如果左右不平衡,则轻的那一边就是假银元;如果天平两边平衡,则末称的那一枚就是假银元。说明:1算法实际上就是解决某一类问题的步骤和方法,在解决问题时形成的规律性的东西,按照算法描述的规则与步骤,一步一步地去做,最终便能解决问题。2算法的基本思想就是我们分析问题时的想法。由于想法不同思考的角度不同,着手点不一样,同一问题存在不同的算法,算法有优劣之分。3从熟悉的问题出发,体会算法的程序化思想,学会用自然语言来描述算法例三韩信点兵是一个有趣的猜数游戏。如果你随便拿一把蚕豆(数目约在100粒左右),先3粒3粒地数,直到不满3粒时,把余数记下来;第二次再5粒5粒地数,最后把余数记下来;第三次是7粒一数,把余数记下来。然后根据每次的余数,就可以知道你原来拿了多少粒蚕豆了。不信的话,你还可以实地试验一下。例如,假如3粒一数余1粒,5粒一数余2粒,7粒一数余2粒,那么,原有蚕豆有多少粒呢?算法的特征概括性:必须能解决一类问题,并且能重复使用逻辑性:算法具有正确性和顺序性,并且每一步都具有确切的含义,从而组成一个很强逻辑性的序列普遍性:处理任何问题都需要用到算法有限性:一个算法在执行有限的步骤后,结束且有正确的输出不唯一性:求解某一问题的算法不唯一两个大人和两个小孩一起渡河,渡口只有一条小船每次只能渡1个大人或两个小孩,他们四人都会划船,但都不会游泳试问他们怎样渡过河去?请写出一个渡河方案。S1两个小孩同船过河去;S2一个小孩划船回来;S3一个大人划船过河去;S4对岸的小孩划船回来;S5两个小孩同船渡过河去;S6一个小孩划船回来;S7余下的一个大人独自划船渡过河去;对岸的小孩划船回来;S8两个小孩再同时划船渡过河去。例四设函数f(x)的图象是一条连续不断的曲线,写出用“二分法”求方程f(x)=0的一个近似解的算法.第一步,取函数f(x),给定精确度d.第二步,确定区间[a,b],满足f(a)·f(b)0.第五步,判断[a,b]的长度是否小于d或f(m)是否等于0.若是,则m是方程的近似解;否则,返回第三步.第三步,取区间中点.ma+b=2第四步,若f(a)·f(m)0,则含零点的区间为[a,m],否则,含零点的区间为[m,b].将新得到的含零点的区间仍记为[a,b];