1、算法与程序框图 w 1.程序框图w 2.算法的基本逻辑结构w 3.程序框图的画法 程序框图有称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.在程序框图中,一个或几个程序框的组合表示算法中的一个步骤;带有方向箭头的流程线将程序框连接起来,表示步骤的执行顺序.表列出了几个基本的程序框、流程线和它们表示的功能.算法步骤有明确的顺序性算法步骤有明确的顺序性,而且有些步骤只而且有些步骤只是在一定条件下才会被执行是在一定条件下才会被执行,有些步骤在一定条有些步骤在一定条件下会被重复执行件下会被重复执行.因此因此,我们有必要探究使算法我们有必要探究使算法表达得更加直观、准确的方法表达得更加直观、
2、准确的方法.1.程序框图程序框图(流程图)流程图)表格表格图形符号名 称功 能终端框表示一个算法的起始和结束输入、输出框表示一个算法输入和输出的信息处理框(执行框)复值、计算判断框判断某个条件是否成立,成立在出口出标明(是)不成立标明(否)流程框连接程序框连接点连接程序图的两部分 例如,1.1.1节中“判断整数n(n2)是否为质数”的算法就可以用下面的程序框图表示.算法步骤:第一步,给定大于2的整数n.第二步,令i=2.第三步,用i除n,得到余数r.判断余数r是否为0,若是,则n不是质数,结束算法;否则,将i的值加1,仍用i表示.第四步,判断i是否大于(n-1),若是,则是n质数;否则,返回第
3、三步.开始输入ni=2求n除以i的余数rn是质数n不是质数结束否是否i=i+1in-1或r=0?r=0?是判断质数程序顺序结构顺序结构220 x 2.算法的基本逻辑结构分三种:算法的基本逻辑结构分三种:条件结构条件结构循环结构循环结构顺序结构输入n步骤n+1(1)顺序结构的顺序结构的应用应用例例3任意给出三任意给出三个正实数个正实数,利利用海伦秦用海伦秦九韶公式设九韶公式设计一个算法计一个算法,求出以这三求出以这三个数为边长个数为边长的三角形的的三角形的面积面积.画出这画出这个算法的程个算法的程序框图序框图.开始开始输入输入a,b,ca,b,c输出输出s结束结束s=SQR(p*(p-a)*(p
4、-b)*(p-c)p=(a+b+c)/2条件结构满足条件?步骤A步骤B结束是是否否满足条件?是是步骤A结束否否开始输入a,b,ca+bc,a+c b,b+c a是否同时成立?存在这样的三角形不存在这样的三角形结束否否是是(2)条件结构的应用)条件结构的应用例例4、任意给定、任意给定3个正实数,设计一个算法,判断分别以这个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在,画出程序框图。个数为三边边长的三角形是否存在,画出程序框图。循环结构循环体条件满足?否是条件满足?否是循环体开始s=0i=i+1s=s+ii100?输出s结束否是(3)循环结构的应用)循环结构的应用例例5、设计
5、一个计算、设计一个计算1+2+3+100的值的算法,的值的算法,并画出程序框图。并画出程序框图。i=1求和程序开始开始输入输入nin?结束结束思考思考?如何用自然语言表述例如何用自然语言表述例5的算法的算法?改进这一算法改进这一算法,表示输出表示输出1,1+2,1+2+3,1+2+n(nN*)的过程的过程.算法步骤:算法步骤:第一步第一步,令令i=1,s=0,输入输入n.第二步第二步,若若in成成立立,则执行第三则执行第三步步;否则否则,输出输出s结束算法结束算法.第三第三步步,s=s+i.第四第四步步,i=i+1,返回第返回第二步二步.i=i+1s=s+ii=1,s=0是否算法分析:算法分析
6、:第一步:令f(x)=。因为f(1)0,所以设a=1,b=2。例1、用二分法设计一个求 近似值,并画出程序框图。2abm第二步:令 。判断f(m)是否为0。若是,则m为所求;若否,则继续判断f(a)f(m)大于0还是小于0。23x 220 x 第三步:若f(a)f(b)0,则令a=m;否则,令b=m。3第四步:判断a-b0.005是否成立?若是,则a或b为满足条件的近似根;若否,则返回第二步。练习练习1二分法求平方根二分法求平方根练习练习1二分法求平方根二分法求平方根开始a=1b=2f(x)=x23a=mb=mm=(a+b)/2a=mb=mf(m)=0f(x1)f(m)0|a-b|0.005结束输出所求的近似根mm=(a+b)/2n是是是否否二分法求平方根3.程序框图的画法 设计一个算法的程序框图通常要经过以下步骤:第一步,用自然语言表述算法步骤.第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的程序框图表示,得到该步骤的程序框图.第三步,将所有步骤的程序框图用流程线连接来,并加上终端框,得到表示整个算法的程序框图