1、1、算法初步算法初步目标:了解算法的基本思想;培养使用算法目标:了解算法的基本思想;培养使用算法的思想进行思考与表达解决问题的能力。的思想进行思考与表达解决问题的能力。内容:内容:1、算法的含义。、算法的含义。2、程序框图。、程序框图。3、实现算法的程序。、实现算法的程序。4、典型的算法介绍、典型的算法介绍。1、算法的含义算法的含义算法:用计算机解决问题的某一类问题的程算法:用计算机解决问题的某一类问题的程序或步骤,且在有限步内完成。序或步骤,且在有限步内完成。理解:理解:1、算法是一种解决问题的过程和步骤。、算法是一种解决问题的过程和步骤。2、算法是解决某一类问题的。、算法是解决某一类问题的
2、。3、算法具有某种意义上的通用性和普适性。、算法具有某种意义上的通用性和普适性。4、算法是与计算机对话的一种思维方式。、算法是与计算机对话的一种思维方式。5、算法必须有限步完成。、算法必须有限步完成。举例:求一元二次方程举例:求一元二次方程ax2+bx+c=0的实根。的实根。用算法的思想怎样来求?用算法的思想怎样来求?(全解全解p7例三例三)1、算法的含义算法的含义因式分解因式分解的方法行不行的方法行不行?不具有通用性!不具有通用性!解:Step1:确定:确定a,b,cStep2:计算判别式:计算判别式Step3:判别:判别的符号的符号Step4:三种结果:三种结果1)无实根;)无实根;2)有
3、两个相等实根;)有两个相等实根;3)有两个不等实根。)有两个不等实根。Step5:输出实根:输出实根开始输入a,b,c=b2-4ac;p=-b/2a;q=|1/2/2a=0 x1=p+q;x2=p-q;两个相等实根x1,x2输出不等实根x1,x2无实根x1=x2?结束否是是否 1、算法的含算法的含义例例1 任意给定一个大于任意给定一个大于1的整数的整数n,试设计一,试设计一个算法步骤对个算法步骤对n是否为质数做出判断是否为质数做出判断。Step1:输入:输入n,如果,如果n=2,则,则n是质数;若是质数;若n2,执行第二步;,执行第二步;Step2:令:令flag=1,标记标记flag区分是否
4、存在整除的情况区分是否存在整除的情况;Step3:依次从:依次从2n-1循环检验是否为循环检验是否为n的因数,在某一步,若是的因数,在某一步,若是n的因数,的因数,则令则令flag=0,中途直接停止即可,并作出判断,中途直接停止即可,并作出判断,n不是质数;不是质数;Step4:如果循环检查完:如果循环检查完2n-1中的每一个数,中的每一个数,flag=1仍然成立,则可以仍然成立,则可以做出判断,做出判断,n是质数。是质数。总体思路总体思路:如果:如果n大于大于2,将,将n依次除以依次除以2n-1,检查每一次是否整除,检查每一次是否整除,若某一次整除,则若某一次整除,则n不是质数,否则,全部检
5、查完,仍没有整除的情况,不是质数,否则,全部检查完,仍没有整除的情况,则则n是质数;是质数;n=2,直接判断是质数。,直接判断是质数。1、算法的含义算法的含义例例1、详细步骤:、详细步骤:Step1:输入:输入n,如果,如果n=2,则,则n是质数,结束;若是质数,结束;若n2,执行第二步;,执行第二步;Step2:令令flag=1;Step3:1)d=2;2)d整除整除n?21)是,是,flag=0;22)否,否,d自增加自增加1(d=d+1););3)d=n-1且且flag=1?31)是,重新判断第是,重新判断第2)步(即转)步(即转2)步);)步);32)否,下一步;否,下一步;Step4
6、:flag=1?41)是,是,n是质数是质数;42)否,否,n不是质数不是质数。框图框图 1、算法的含义算法的含义例例2、用二分法求方程用二分法求方程x2-2=0的近似根的算法的近似根的算法。Step1:令:令f(x)=x2-2,取区间端点为,取区间端点为x1=1,x2=2,则,则f(x1)0;Step2:令:令m=(x1+x2)/2,判断,判断f(m)=0?若是,若是,m即为所求,停止;即为所求,停止;Step3:否则,判断:否则,判断f(x1)f(m)0?若成立,令若成立,令x1=m;否则,令否则,令x2=m;Step4:判断:判断|x1-x2|2?d=d+1d0?结束x1=m否是f(m)
7、=0?x2=m|x1-x2|c且且a+cb且且b+ca2、条件成立,存在该三角形,否则,不存在。、条件成立,存在该三角形,否则,不存在。解决:解决:1、输入边长、输入边长a,b,c,判断思路,判断思路1中的条件。中的条件。2、根据思路、根据思路2中的结论,输出结论。中的结论,输出结论。2、程序框图、程序框图解解:开始a+bc且且a+cb且且b+ca同时成立?存在这样的三角形结束输入a,b,c不存在这样的三角形否是 2、程序框图、程序框图(3)循环结构)循环结构例例5:设计一个计算:设计一个计算1+2+100的值的算法的值的算法。思路:思路:1、算法要实现累加:问题是一个连加,按照算法的通用性和
8、、算法要实现累加:问题是一个连加,按照算法的通用性和普适性来说,该问题的共性是加法,且重复。普适性来说,该问题的共性是加法,且重复。2、有限次完成。、有限次完成。解决:解决:1、设置一个累加变量,用于存放总和。、设置一个累加变量,用于存放总和。2、设置一个计数变量,用于判断累加次数是否超过、设置一个计数变量,用于判断累加次数是否超过100次。次。2、程序框图、程序框图解解:开始i=1sum=0sum=sum+i输出sumi 100?结束i=i+1否是否是开始i=1sum=0sum=sum+i输出sumi 3?输出m结束输入人数xm=5否是m=5+(x-3)1.2 3、实现算法的程序计算机要完成
9、任何一项任务都需要算法,但计算机要完成任何一项任务都需要算法,但要让计算机正确执行,必须要将算法要让计算机正确执行,必须要将算法“翻译翻译”成计算机能够读懂的程序才能执行。成计算机能够读懂的程序才能执行。高级语言包括:高级语言包括:BASIC,PASCAL,C,C+(Visual C+,Bland C+等),等),JAVA,Power Builder,Delphi等,只要掌握一门或两门高级语言即可等,只要掌握一门或两门高级语言即可。3、实现算法的程序、实现算法的程序例例1、用描点法作函数、用描点法作函数的图像时,要求出自变量和函数的一组对应的图像时,要求出自变量和函数的一组对应值,编写程序,分
10、别计算当值,编写程序,分别计算当x=-5,-4,-3,-2,-1,0,1,2,3,4,5时的函数值时的函数值.3024323xxxy 3、实现算法的程序、实现算法的程序例例2、计算一个学生的数学、语文、英语三门、计算一个学生的数学、语文、英语三门课的平均成绩课的平均成绩.例例3、给一个变量重复赋值、给一个变量重复赋值.例例4、交换两个变量、交换两个变量A和和B的值,并输出交换前的值,并输出交换前后的值后的值.3、实现算法的程序、实现算法的程序例例5、编写程序求、编写程序求ax2+bx+c=0方程的根方程的根.例例6、编写程序,使任意输入的、编写程序,使任意输入的3个数从大到个数从大到小的顺序输
11、出小的顺序输出.习题:判断一年是否为闰年的程序习题:判断一年是否为闰年的程序.3、实现算法的程序、实现算法的程序循环结构:编写求和程序循环结构:编写求和程序.编写判断是否是质数的程序编写判断是否是质数的程序.思考:改进判断质数的程序思考:改进判断质数的程序.习题:二分法求习题:二分法求x2-2=0的近似根的近似根.案例1:辗转法相除求两数最大公约数求求8251与与6105的最大公约数的最大公约数8251=6105 1+21466105=2 2146+18132146=1813 1+3331813=5 333+148333=2 148+37148=4 37+0 4、典型的算法介绍、典型的算法介绍
12、程序流程图程序流程图r=m MOD nm=nn=rr=0?否是更相减损术更相减损术 可半者半之,不可半者,副置分母、子之数,以少减可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等着,以等数约之。多,更相减损,求其等着,以等数约之。第第1步:任给两个正整数;判断它们是否是偶数,若步:任给两个正整数;判断它们是否是偶数,若是,用是,用2约简;若不是,执行第约简;若不是,执行第2步。步。第第2步:以较大的数减去较小的数,接着把所得的差步:以较大的数减去较小的数,接着把所得的差与较小的数比较,并以大数减小数,继续这个操作直与较小的数比较,并以大数减小数,继续这个操作直到所得的数相等为
13、止。到所得的数相等为止。例例1 更相减损术求更相减损术求98与与63的最大公约数的最大公约数案例案例2:秦九韶算法:秦九韶算法f(x)=x5+x4+x3+x2+x+1(需做(需做10次乘法次乘法,5次加法)次加法)=x*x*x*x*x+x*x*x*x+x*x*x+x*x+x =(x x+x)x+x)x+x)x+x+1)(4次乘法次乘法,5次加次加法)法)f(x)=anxn+an-1xn-1+a1x+a0 =(anx+an-1)x+a1)x+a0 =(anxn-1+an-1xn-2+a1)x+a0 =(anxn-2+an-1xn-3+a2)x+a1)x+a0 =v1=55+2=27 v2=27
14、5+3.5=138.5 v3=138.5 5-2.6=689.9 v4=689.9 5+1.7=3451.2 v5=3451.2 5-0.8=17255.2 例例2:已知一个已知一个5次多项式为次多项式为f(x)=5x5+2x4+3.5x3-2.6x2+1.7x-0.8思考:总计多少次乘,多少次加思考:总计多少次乘,多少次加?f(x)=anxn+an-1xn-1+a1x+a0 =(anx+an-1)x+a1)x+a0程序流程图程序流程图 v0=an vk=vk-1x+an-k(k=1,2,n)输入a0,a1,a2,a3,a4,a5输入x0n=1n5?否是结束v=a5输出vv=v x0+a5-n
15、n=n+1开始案例3:排序 i 0 1 2 3 4 5 6 7 8i 0 1 2 3 4 5 6 7 8 (4949),3838,6565,9797,7676,1313,2727,4949 2 2(38)(38)(3838,49)49),6565,9797,7676,1313,2727,4949 3 3 (38 (38,4949,6565),9797,7676,1313,2727,4949 4 4 (38 (38,4949,6565,9797),7676,1313,2727,4949 5 5(76)(38(76)(38,4949,6565,7676,97)97),1313,2727,4949
16、6 6(13)(13)(1313,3838,4949,6565,7676,97)97),2727,4949 7 7(27)(13(27)(13,2727,3838,4949,6565,7676,97)97),4949 8 8(49)(13(49)(13,2727,3838,4949,4949,6565,7676,97)97)实例数据1:(4949),3838,6565,9797,7676,1313,2727,4949直接插入排序 i 0 1 2 3 4 5 6 i 0 1 2 3 4 5 6 (8 8),),3 3,2 2,5 5,9 9,6 6 2 2(3)(3)(3 3,8 8),),2
17、2,5 5,9 9,6 6 3 3(2)(2)(2 2,3 3,8 8),),5 5,9 9,6 6 4 4(5)(5)(2 2,3 3,5 5,8 8),),9 9,6 6 5 5(9)(9)(2 2,3 3,5 5,8 8,9 9),),6 6 6 6(6)(6)(2 2,3 3,5 5 ,6 6,8 8,9)9)实例数据实例数据2:8 8,3 3,2 2,5 5,9 9,6 6例例3 用冒泡法对数据用冒泡法对数据7,5,3,9,1从小到大进行排序从小到大进行排序753915739153791953713571953791357193517935179315791357913579见程序p
18、aixu2.bas案例4:进位制 进位制是人们为了计数和运算方便而约定的计数进位制是人们为了计数和运算方便而约定的计数系统,系统,“满几进一满几进一”就是几进制。几进制的就是几进制。几进制的基基数数就是就是几几。3721=3103+7102+2101+1100 一般地,若一般地,若k是一个大于是一个大于1的整数,那么以的整数,那么以k为基数的为基数的k进制数可以表示为一串数字连写在一起的形式进制数可以表示为一串数字连写在一起的形式 an an-1 a1 a0(k)(0ank,0 an-1,an-1,a1,a0 k).110011(2)=125+124+023+022+121+1207342(8
19、)=783+382+481+280例例4 把二进制数把二进制数110011(2)化为十进制数)化为十进制数110011(2)=125+124+023+022+121+120 =132+116+12+1 =51 例例5 把把89二进制数二进制数89=2 44+144=2 22+022=2 11+089=2(2(2(2 (2 2+1)+1)+0)+0)+1 =126+025+124+123+022+021+12011=2 5+1 5=2 2+1除除2取余法取余法8944 122 011 05 12 11 00 12222222余数余数89=(1011001)2例6 把89五进制数8917 43 20 3555余数余数89=(324)5 思考思考 割圆术割圆术循环结构:编写求和程序循环结构:编写求和程序.设圆的半径为设圆的半径为1,弦心距为,弦心距为hn,边长,边长为为xn,面积为,面积为Sn,由勾股定理,由勾股定理2222)1()2(,)2(1nnnnnhxxxhhnxnx2n)6()1(212nhxnSSnnnn4366S其中金亚洲注册 http:/