1、1.1算法与程序框图,1.1.1 算法的概念,第一步:-2得: 5y=3 ,第二步: 解得:,第三步: 将 代入,解得 .,对于一般的二元一次方程组 其中 也可以按照上述步骤求解.,第四步:得到方程组的解为,第四步:得到方程组的解为,算法的概念和特征,特征:(1)有限性:一个算法的步骤序列是有限的,必须在有限操作之后停止,不能是无限的. (2)确定性:算法中的每一步应该是确定的并且能有效地执行且得到确定的结果,而不应当是模棱两可. (3)逻辑性:算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个确定的后继步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都准确无误
2、,才能完成问题. (4)不唯一性:求解某一个问题的解法不一定是唯一的,对于一个问题可以有不同的算法. (5)普遍性:很多具体的问题,都可以设计合理的算法去解决。,概念:通常指按照一定规则解决某一类问题的明确的和有限的步骤。(现在,算法通常可以编成程序,让计算机执行并解决问题。),例1、设计一个算法,判断7是否为质数,第一步,用2除7,得到余数1,所以2不能整除7.,第四步,用5除7,得到余数2,所以5不能整除7.,第五步,用6除7,得到余数1,所以6不能整除7.,第二步,用3除7,得到余数1,所以3不能整除7.,第三步,用4除7,得到余数3,所以4不能整除7.,因此,7是质数.,类似地,可写出
3、“判断35是否为质数”的算法:,第一步,用2除35,得到余数1,所以2不能整除35.,第二步,用3除35,得到余数2,所以3不能整除35.,第三步,用4除35,得到余数3,所以4不能整除35.,第四步,用5除35,得到余数0,所以5能整除35.,因此,35不是质数.,例2、任意给定一个大于1的整数n,试设计一个程序或步骤对n是否为质数做出判断.,解:算法: 第一步:判断n是否等于2.若n=2,则n是质数;若n2,则执行第二步. 第二步:依次从2(n-1)检验是不是n的因数,即整除n的数.若有这样的数, 则n不是质数;若没有这样的数,则n是质数.,分析:(1)质数是只能被1和自身整除的大于1的整
4、数. (2)要判断一个大于1的整数n是否为质数,只要根据质数的定义,用比这个整数小的数去除n,如果它只能被1和本身整除,而不能被其它整数整除,则这个数便是质数.,点评:本算法是用自然语言的形式描述的.设计算法一定要做到以下要求: (1)写出的算法必须能解决一类问题,并且能够重复使用. (2)要使算法尽量简单、步骤尽量少. (3)要保证算法正确,且计算机能够执行.,若是,则m 为所求;,例3:用二分法设计一个求方程x2-2=0的近似根的算法.,算法分析:,设所求近似根与精确解的差的绝对值不超过=0.005.,第一步:令f(x)=x2-2.,因为f(1)0,所以设a=1,b=2.,第二步:令,判断
5、f(m)是否为0.,第四步:判断|a-b|是否成立?若是,则a或b为满足条件的近似根;若否,则返回第二步.,点评: (1)上述算法也是求 的近似值的算法.,(2)与一般的解决问题的过程比较,算法有以下特征: 设计一个具体问题的算法时,与过去熟悉地解数学题的过程有直接的联系,但这个过程必须被分解成若干个明确的步骤,而且这些步骤必须是有效的. 算法要“面面俱到”,不能省略任何一个细小的步骤,只有这样,才能在人设计出算法后,把具体的执行过程交给计算机完成.,计算机解决任何问题都要依赖于算法.只有将解决问题的过程分解为若干个明确的步骤,即算法,并用计算机能够接受的“语言”准确地描述出来,计算机才能够解
6、决问题.,练习一:任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积.,算法分析:,第一步:输入任意一个正实数r; 第二步:计算以r为半径的圆的面积S=r2; 第三步:输出圆的面积.,练习二:任意给定一个大于1的正整数n,设计一个算法求出n的所有因数.,算法分析:,第一步:依次从2(n-1)为除数去除n,判断余数是否为0,若是,则是n的因数;若不是,则不是n的因数. 第二步:在n的因数中加入1和n; 第三步:输出n的所有因数.,练习三:为了加强居民的节水意识,某市制订了以下生活用水收费标准:每户每月用水未超过7m3时,每立方米收费1.0元,并加收0.2元的城市污水处理费;超过7m3的部分,每立方米收费1.5元,并加收0.4元的城市污水处理费,请你写出某户居民每月应交纳的水费y(元)与用水量x(m3)之间的函数关系,然后设计一个求该函数值的算法.,解:y与x之间的函数关系为:,(当0x7时) (当x7时),解:y与x之间的函数关系为:,(当0x7时) (当x7时),求该函数值的算法分析:,第一步:输入每月用水量x; 第二步:判断x是否不超过7.若是,则y=1.2x;若否,则y=1.9x-4.9. 第三步:输出应交纳的水费y.,再见,