1、算法的概念算法的概念 算法通常指可以用来解决的某一类问题算法通常指可以用来解决的某一类问题的步骤或程序,这些步骤或程序必须是的步骤或程序,这些步骤或程序必须是明确的和有效的,而且能够在有限步之明确的和有效的,而且能够在有限步之内完成的。内完成的。算法的特征算法的特征 n一般性一般性n有穷性有穷性n确定与可行性确定与可行性有输入信息的说明有输入信息的说明有输出结果的说明有输出结果的说明普适性普适性程序框图程序框图 程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形。程序框名称功能起止框(终端框)表示一个算法的起始和结束,是任何流程图不可少的。输入、输出框表示一个
2、算法输入和输出的信息,可用在算法中任何需要输入、输出的位置。处理框(执行框)赋值、计算,算法中处理数据需要的算式、公式等分别写在不同的用以处理数据的处理框内。判断框判断某一条件是否成立,成立时在出口处标明“是”或“Y”;不成立时标明“否”或“N”。流程线 连接程序框连接点 连接程序框图的两部分观观察察右右图图开始输入ni2求n除以i的余数rin1或r0?i=i+1否是r0?输出“n不是质数”输出“n是质数”结束否是开始开始求求n除以除以i的余数的余数ri=2输入输入ni in-1n-1?r=0?输出输出“n是质是质数数”是是i=i+1否否输出输出“n不是不是质数质数”是是 结束结束否否观观察察
3、右右图图开始i1i=i+1i100s=s+i是是否输出输出s结束s=0算法的基本逻辑结构算法的基本逻辑结构 任何算法的程序框图都可以用三种基本结构任何算法的程序框图都可以用三种基本结构的组合来实现,它们是顺序结构、条件结构、的组合来实现,它们是顺序结构、条件结构、循环结构循环结构。一、顺序结构一、顺序结构 它是由若干个依次执行的处它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。的一种基本算法结构。AB输入ni2如在下面图中,如在下面图中,A框和框和B框是框是依次执行依次执行的,的,只有在执行完只有在执行完A框指定的操作后,
4、才能接框指定的操作后,才能接着执着执行行B框所指定的操作。框所指定的操作。例1、已知一个三角形的三边分别为a、b、c,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图。开始输入a,b,c结束pa+b+c2S.p(p-a)(p-b)(p-c)输出S例2、已知两个变量A和B的值,试设计一个交换这两个变量的值的算法,并画出程序框图。第一步、输入A、B第二步、令X=A第三步、令A=B第四步、令B=X第五步、输出A、B练习1 1、已知摄氏温度、已知摄氏温度C C与华氏温度与华氏温度F F之间的关系为之间的关系为F=1.8C+32F=1.8C+32。设计一个由摄氏温度求华氏温度。设计一个由摄氏
5、温度求华氏温度的算法,并画出相应的程序框图。的算法,并画出相应的程序框图。算法步骤:算法步骤:第一步:输入摄氏温度第一步:输入摄氏温度C C;第二步:计算第二步:计算1.8C+321.8C+32,并将这个值记为华氏温度并将这个值记为华氏温度F F;第三步:输出华氏温度第三步:输出华氏温度F F。练习2 2、已知变量、已知变量A A、B B、C C的值,试设计一个算法程序的值,试设计一个算法程序框图,使得框图,使得A A为为B B的值,的值,B B为为C C的值,的值,C C为为A A的值。的值。第一步、输入A、B、C第二步、令X=A第三步、令A=B第四步、令B=C第五步、令C=X第六步、输出A
6、、B、C的值1.1.2 程序框图与算法的基本逻辑结构(二)二、条件结构二、条件结构 是指在算法中通过对条件的判是指在算法中通过对条件的判断,根据条件是否成立而选择不同流向的算断,根据条件是否成立而选择不同流向的算法结构。法结构。是否 满足条件?是否 满足条件?步骤步骤1步骤步骤2步骤步骤1步骤步骤2 输出“n不是质数”是否r0?输出“n是质数”bxa 思考:设计求解不等式思考:设计求解不等式ax+b0(aax+b0(a00)的一的一个算法,并用流程图表示。个算法,并用流程图表示。开始开始输入输入a,ba0?是是否否输出解集输出解集结束结束bxa 条条 件件 结结 构构 例1,任意给定3个正实数
7、,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在.画出这个算法的程序框图.条件结构 算法步骤如下:第一步,输入3个正实数a,b,c.第二步,判断a+bc,a+cb,b+ca是否同时成立.若是,则存在这样的三角形;否则,不存这样的三角形.条件结构练习:设计一个算法计算分段函数 ,的函数值,并画出程序框图。)1()10(1)0(0 xxxxy分析:第一步、输入x第二步、判断“x0”是否成立,若是,则输出y=0,否则执行第三步;第三步、判断“x3,则费用为y=5(x-3)1.2=1.2x+1.4;若x3,则费用为y5.第三步,输出y.练习:开始输入a1,b1,c1,a2。b2,c2输出“
8、x=”;,“y=”;a1b2a2b10?x=(c2b1 c1b2)/(a1b2 a2b1)y=(c2b1 c1b2)/(a1b2 a2b1)结束NY输出“输入数据不合题意P.20 习题习题1.1B组第组第1题题算法步骤:第一步,输入a1,b1,c1,a2,b2,c2.第二步,计算x=(c2b1 c1b2)/(a1b2 a2b1)y=(c2b1 c1b2)/(a1b2 a2b1)第三步,输出x,y练习:1.1.2 程序框图与算法的基本逻辑结构(三)三、循环结构三、循环结构 在一些算法中,经常会出现在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处从某处开始,按照一定条件,反复执行某
9、一处理步骤的情况,这就是循环结构,反复执行的理步骤的情况,这就是循环结构,反复执行的处理步骤为循环体,显然,循环结构中一定包处理步骤为循环体,显然,循环结构中一定包含条件结构。含条件结构。循环体满足条件?否是循环体满足条件?否是 执行一次循环体后,对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环直到条件满足时终止循环.在每次执行循环体前,对条件进行判断,当条件当条件满足,执行循环体,否则满足,执行循环体,否则终止循环终止循环.特征:特征:求n除以i的余数r in1或r0?i=i+1否是注意:注意:1、循环结构要在某个条件下终止循环,这就需、循环结构要在某个条件下终止循环
10、,这就需要条件结构来判断。因此,循环结构中一定包含要条件结构来判断。因此,循环结构中一定包含条件结构,但条件结构,但不允许不允许“死循环死循环”。开始i=1S=0i=i+1S=S+ii100?输出S结束否是 例:例:设计一个计算设计一个计算1+2+3+1+2+3+100+100的值的的值的算法,并画出程序框图算法,并画出程序框图.第第1 1步,步,0 01 11.1.第第2 2步,步,1 12 23.3.第第3 3步,步,3 33 36.6.第第4 4步,步,6 64 410.10.第第100100步,步,4950495010010050505050.算法:算法:第一步,令第一步,令i i1
11、1,S S0.0.第二步,若第二步,若i 100i 100成立,则执成立,则执行第三步行第三步;否则,输出否则,输出S S,结束算法,结束算法.第三步,第三步,S SS Si.i.第四步,第四步,i=i+1,i=i+1,返回第二步返回第二步.当型循环结构当型循环结构i=i+1s=s+i 解决方法就是加上一个判断,解决方法就是加上一个判断,判断是否已经加到了判断是否已经加到了100100,如果,如果加到了则退出,否则继续加。加到了则退出,否则继续加。直到型结构直到型结构当型结构当型结构i=i+1 s=s+i是否i=i+1s=s+i否是i100?否是循环结构直到型结构当型结构 例 设计一个计算1+
12、2+3+100的值的算法,并画出程序框图.例.设计一个计算1+2+3+100的值的算法,并画出程序框图.第一步:确定首数a,尾数b,项数n;第二步:利用公式“S=n(a+b)/2”求和;第三步:输出求和结果。另解:开始结束输入a,b,nS=n(a+b)/2输出SP15P15(思考)(思考):设计一个算法,表设计一个算法,表示输出示输出1 1,1 12 2,1 12 23 3,1 12 23 3 (n-1)+n(nN(n-1)+n(nN*)的过程的过程.结束开始S=0i=1S=S+ii=i+1inYN输入n输出S第一步,令第一步,令i=1,S=0.i=1,S=0.第二步,计算第二步,计算S=S+
13、i.S=S+i.第三步,计算第三步,计算i=i+1,i=i+1,输出输出s.s.第四步,判断第四步,判断inin是否成立,若是,是否成立,若是,算法结束算法结束;否则返回第二步否则返回第二步.例,某工厂2005年的年生产总值为200万元,技术革新后预计以后每年的年生产总值都比上一年增长5.设计一个程序框图,输出预计年生产总值超过300万元的最早年份.算法步骤:第一步,输入2005年的年生产总值.第二步,计算下一年的年生产总值.第三步,判断所得的结果是否大于300.若是,则输出该年的年份;否则,返回第二步.结束开始输出na=200t=0.05a a=a+tn=n+1a300?Yn=2005N(1
14、)确定循环体:设a为某年的年生产 总值,t为年生产总值的年增长量,n为 年份,则循环体为t=0.05a,a=a+t,n=n+1.(2)初始化变量:n=2005,a=200.(3)循环控制条件:a300结束开始输入na=200t=0.05aa=a+tn=n+1a300?Yn=2005N结束开始输入na=200t0.05aaa+tnn+1a300?Nn=2005Y直到型当型1.对任意正整数n,111123Sn 的值,并画出程序框图.结束开始输入一个正整数n输出S的值S=0i=1S=S+1/ii=i+1inYN设计一个算法求练练 习习判断什么型循环?判断什么型循环?2.设计一算法,求积:123100
15、,画出流程图.结束输出Si=0,S=1开始i=i+1S=S*ii100?否是练练 习习求 的值.22221299100解:算法步骤:第一步,令i=1,s=0.第二步,若成立,则执行第三步,否则,输出s.第三步,计算s=s+i2 第四步,计算i=i+1,返回第二步.开始i=1S=0i=i+1S=S+i2i100?输出S结束否是当型循环结构3、P.20习题习题A组第组第2题题开始输入50米跑成绩rr6.8n9?结束NYYNP.20习题习题1.1B组第组第2题题 算法步骤:第一步,令计算变量n1.第二步,输入一个成绩r,判断r与6.8的大小,若r6.8,则执行下一步;若r6.8,则输出r,并执行下一步.第三步,令nn1.第四步,判断计数变量n与成绩个数9的大小,若n9,则返回第二步,若n9,则结束算法.n1nn1输出r小结:1、算法的程序框图的组成;2、三种基本逻辑结构;3、画程序框图要注意:流程线的箭头;判断框后边的流程线应根据情况标注“是”或“否”;4、循环结构中要设计合理的计数变量或累加变量等.谢谢