112《算法与程序框图——程序框图与算法的基本逻辑结构》(新人教A版必修3).ppt
v主讲老师 潘学国1 1、什么是算法?、什么是算法? 算法通常是指按照算法通常是指按照一定规则一定规则解决解决某一类某一类问题的问题的明确明确和和有限有限的步骤。的步骤。 确定性确定性 逻辑性逻辑性 有限性有限性2 2、算法有哪些特征?、算法有哪些特征?3 3、怎样来表示算法?、怎样来表示算法?用自然语言来表示。用自然语言来表示。温故知新温故知新 思考:思考:算法步骤有明确的顺序算法步骤有明确的顺序性,而且有些步骤只有在一定条件下性,而且有些步骤只有在一定条件下才会被执行,有些步骤在一定条件下才会被执行,有些步骤在一定条件下被重复执行。那么,有没有使算法表被重复执行。那么,有没有使算法表达得更加直观、准确的方法呢?达得更加直观、准确的方法呢? 提出问题提出问题1 1、程序框图、程序框图 (1 1)程序框图的概念)程序框图的概念 程序框图又称流程图,是一种用规定的程序框图又称流程图,是一种用规定的程序框程序框、流程线流程线及及文字说明文字说明来准确、直观地表示算法的图形。来准确、直观地表示算法的图形。 在程序框图中,一个或几个程序框的组合表示算在程序框图中,一个或几个程序框的组合表示算法中的一个步骤;带有方向箭头的流程线将程序框连法中的一个步骤;带有方向箭头的流程线将程序框连接起来,表示算法步骤的执行顺序。接起来,表示算法步骤的执行顺序。新知探究新知探究图形符号图形符号名名 称称功功 能能终端框终端框(起止框起止框)输入、输入、输出框输出框 处理框处理框(执行框执行框)判断框判断框表示一个算法的起始和结束表示一个算法的起始和结束表示一个算法输表示一个算法输入和输出的信息入和输出的信息赋值、计算赋值、计算判断某一条件是否成立判断某一条件是否成立, ,成立时成立时在出口处标明在出口处标明“是是”或或“Y”,Y”,不成立时标明不成立时标明“否否”或或“N”N”.(2 2)构成程序框图的图形符号及其作用)构成程序框图的图形符号及其作用流程线流程线连接程序框连接程序框连结点连结点连接程序框图的两部分连接程序框图的两部分第一步,给定一个大于第一步,给定一个大于2的整数的整数n; 第二步,令第二步,令i=2; 第三步,用第三步,用i除除n,得到余数,得到余数r; 第四步,判断第四步,判断“r=0”是否成立是否成立.若是,则若是,则n不是质不是质数,结束算法;否则,将数,结束算法;否则,将 i的值增加的值增加1,仍用,仍用 i 表示;表示; 第五步,判断第五步,判断“i(n-1)”是否成立,若是,则是否成立,若是,则n是是质数,结束算法;否则,返回第三步质数,结束算法;否则,返回第三步. 例如例如,“判断整数判断整数n(n2)是否为质数是否为质数”的算法步骤如下:的算法步骤如下:开始开始输入输入ni = 2i = i + 1in或或r=0?n不是质数不是质数结束结束r=0?否否是是求求n n除以除以i的余数的余数r rn是质数是质数是是否否1. 1. 流程图的判断框,有一个入口和流程图的判断框,有一个入口和n n个出口,则个出口,则n n的的值为()值为()(A)1 (B) 2 (C) 3 (D) 4(A)1 (B) 2 (C) 3 (D) 42. 2. 下列图形符号表示输入输出框的是()下列图形符号表示输入输出框的是()(A)(A)矩形框矩形框 (B) (B) 平行四边形框平行四边形框(C) (C) 圆角矩形框圆角矩形框 (D) (D) 菱形框菱形框3.3.下列图形符号表示处理数据或计算框的是()下列图形符号表示处理数据或计算框的是()(A)(A)矩形框矩形框 (B) (B) 平行四边形框平行四边形框(C) (C) 圆角矩形框圆角矩形框 (D) (D) 菱形框菱形框BBA辨析练习辨析练习输入输入ni=2i=i+1in或或r=0?n不是质数不是质数r=0?否否是是求求n除以除以i的余数的余数rn是质数是质数是是否否顺序结构顺序结构循环结构循环结构条件结构条件结构2 2、算法的基本逻辑结构、算法的基本逻辑结构(1)(1) 顺序结构顺序结构 任何一个算法各步骤之间都有明确的顺序性,在算法的任何一个算法各步骤之间都有明确的顺序性,在算法的程序框图中,由若干个依次执行的步骤组成的逻辑结构,称为程序框图中,由若干个依次执行的步骤组成的逻辑结构,称为顺序结构顺序结构.顺序结构可以用程序框图表示为:顺序结构可以用程序框图表示为:步骤步骤n步骤步骤n+1新知探究新知探究思考:思考:你能说出这三种基本逻辑结构的特点吗?条你能说出这三种基本逻辑结构的特点吗?条件结构与循环结构有什么区别和联系?件结构与循环结构有什么区别和联系?例例1 1:已知一个三角形的三边长分别为已知一个三角形的三边长分别为a,b,c,利用海,利用海伦伦-秦九韶公式设计一个计算三角形面积的算法,并秦九韶公式设计一个计算三角形面积的算法,并画出程序框图表示画出程序框图表示.算法设计算法设计第一步,输入三角形三边长第一步,输入三角形三边长a a,b b,c c;第二步,计算第二步,计算abcp2第三步,计算第三步,计算sp(p-a)(p-b)(p-c)第四步,输出第四步,输出s。程序框图程序框图结束结束开始开始输入输入a,b,c2cbapc)-b)(p-a)(p-p(ps 输出输出s典例分析典例分析算法设计算法设计:第一步,输入圆的半径第一步,输入圆的半径 r . 第二步,计算第二步,计算第三步,输出第三步,输出s.2rs程序框图程序框图结束结束开始开始输入输入r输出输出s2rs计算计算练习:练习:任意给定一个正实数,设计一个算法求以这个任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积,并画出程序框图表示数为半径的圆的面积,并画出程序框图表示.巩固练习巩固练习例例2 2:写出下列程序框图的运行结果写出下列程序框图的运行结果: 开始开始输入输入a a,b ba2b4Sa/bb/a 输出输出S结束结束图中输出图中输出S ;5/2典例分析典例分析练习:练习:写出下列算法的功能。写出下列算法的功能。 开始开始输入输入a,bda2b2c输出输出c结束结束d左图算法的功能左图算法的功能是是 ; 求两数平方和求两数平方和的算术平方根的算术平方根巩固练习巩固练习(2 2)条件结构)条件结构 在某些问题的算法中,有些步骤只有在在某些问题的算法中,有些步骤只有在一定条件下才会被执行,算法的流程因条件一定条件下才会被执行,算法的流程因条件是否成立而变化是否成立而变化. 在算法的程序框图中,由若干个在一定在算法的程序框图中,由若干个在一定条件下才会被执行的步骤组成的逻辑结构,条件下才会被执行的步骤组成的逻辑结构,称为称为条件结构条件结构,用程序框图可以表示为下面,用程序框图可以表示为下面两种形式:两种形式:新知探究新知探究步骤步骤A步骤步骤B是是步骤步骤A是是否否否否满足条件?满足条件?满足条件?满足条件?条件结构可以用程序框图表示为下面两种形式:条件结构可以用程序框图表示为下面两种形式:例例3:任意给定任意给定3 3个正实数个正实数, ,设计一个算法设计一个算法, ,判断分别以判断分别以这这3 3个数为三边边长的三角形是否存在个数为三边边长的三角形是否存在. .画出这个算法画出这个算法的程序框图的程序框图. . 算法分析算法分析: 判断以判断以3个任意给定的正实数为三条边边长的三角形是个任意给定的正实数为三条边边长的三角形是否存在,只需验证这否存在,只需验证这3个数中任意两个数的和是否大于第个数中任意两个数的和是否大于第3个个数。这个验证需要用到条件结构。数。这个验证需要用到条件结构。第一步,输入第一步,输入3个正实数个正实数a,b,c; 第二步,判断第二步,判断a+bc,a+cb,b+ca是否同时成立,若是,是否同时成立,若是,则能组成三角形;若否,则组不成三角形则能组成三角形;若否,则组不成三角形.算法设计算法设计典例分析典例分析开始开始输入输入a,b,ca+bc,a+c b,b+c a是否同是否同时成立时成立?存在这样的存在这样的三角形三角形不存在这样不存在这样的三角形的三角形结束结束否否是是程序框图程序框图练习:练习: 城区一中学生数学模块学分认定由模块成绩决城区一中学生数学模块学分认定由模块成绩决定,模块成绩由模块考试成绩和平时成绩构成,各占定,模块成绩由模块考试成绩和平时成绩构成,各占50%,若模块成绩大于或等于,若模块成绩大于或等于60分,获得分,获得2学分,否学分,否则不能获得学分(为则不能获得学分(为0分),设计一算法,通过考试分),设计一算法,通过考试成绩和平时成绩计算学分,并画出程序框图。成绩和平时成绩计算学分,并画出程序框图。算法设计算法设计第一步,输入模块考试成绩第一步,输入模块考试成绩a和平时成绩和平时成绩b;第二步,计算模块成绩第二步,计算模块成绩S=(a+b)*50%;第三步,判断第三步,判断 “S=60”是否成立,若是,获得是否成立,若是,获得2学分,否学分,否则,获得则,获得0学分;学分;第四步,输出学分第四步,输出学分。巩固练习巩固练习开始结束输入输入a,bS=60?学分学分=2学分学分=0否否是是S=(a+b)*0.5输出学分输出学分程序框图程序框图220axbxc例 :设计一个求解一元二次方程的算法,并画出程序框图。3, ,a b c第一步,输入 个系数;24bac 第二步,计算;算法步骤:算法步骤:022bpqaa 第三步,判断是否成立,若是,则计算,;否则,输出“方程没有实数根”,结束算法;1212120,xxpxpq xpqx x 第四步,判断是否成立,若是,则输出;否则,计算并输出。例例4 4:典例分析典例分析开始开始输入输入a,b,cacb42?0abp2aq2?0 x1=p+qx2=p-q输出输出x1,x2x1,x2输出输出“方程没方程没有实数根有实数根”输出输出p p结束结束否否是是否否是是程序框图程序框图是是练习:练习:设计一个求任意数的绝对值的算法设计一个求任意数的绝对值的算法,并画出程并画出程序框图序框图.(0)|(xxxxx当时当 n-1,或或r=0?否否是是求求n除以除以i的余数的余数r反复执行的步反复执行的步骤称为循环体骤称为循环体.满足条件?满足条件?是是循环体循环体否否 特征:在执特征:在执行了一次循环体后,行了一次循环体后,对条件进行判断,对条件进行判断,如果条件不满足,如果条件不满足,就继续执行循环体,就继续执行循环体,直到条件满足时终止循环。因此,这种循环直到条件满足时终止循环。因此,这种循环结构称为直到型循环结构。结构称为直到型循环结构。(1 1)直到型循环结构)直到型循环结构 循环体循环体满足条件?满足条件?是是否否(2 2)当型循环结构)当型循环结构 特征:在每次执行特征:在每次执行循环体前,对条件进行循环体前,对条件进行判断,如果条件满足,判断,如果条件满足,就执行循环体,否则终就执行循环体,否则终止循环。因此,这种循环结构称为当型循环止循环。因此,这种循环结构称为当型循环结构。结构。注意注意: 循环结构不能是永无终止的循环结构不能是永无终止的“死循死循环环”,一定要在某个条件下终止循环,这就一定要在某个条件下终止循环,这就需要条件结构来作出判断,因此,循环结需要条件结构来作出判断,因此,循环结构中一定包含条件结构构中一定包含条件结构.例例1 1:设计一算法,求和: 1+2+3+100.第一步:确定首数确定首数a a,尾数,尾数b b,项数,项数n n;第二步:利用公式利用公式“总和总和=(=(首数首数+ +尾数)尾数)项数项数/2/2”求和;求和;第三步:输出求和结果。输出求和结果。算法1:开始开始结束结束输入输入a,b,nS=(a+b)*n/2输出输出S程序框图程序框图算法分析算法分析:第第1步步:0+1=1; 第第2步步:1+2=3;第第3步步:3+3=6; 第第4步步:6+4=10第第100步步:4950+100=5050.第第(i-1)步的结果步的结果+i=第第i步的结果步的结果各步骤有共同的结构各步骤有共同的结构: 为了方便有效地表示上述过程为了方便有效地表示上述过程,我们引我们引进一个进一个变量变量S来表示每一步的计算结果来表示每一步的计算结果,从从而把第而把第i步表示为步表示为S=S+i。S=0S=S + 1S=S + 2S=S + 3S=S + 100例例1 1:设计一算法,求和: 1+2+3+100.S=S+ i怎么用程序框图表示呢?怎么用程序框图表示呢?i有什么作用有什么作用?S呢?i = i + 1S=S + iS=0S=S + 1S=S + 2S=S + 3S=S + 100累加变量累加变量S来表示每一步的计来表示每一步的计算结果,从而把第算结果,从而把第i步表示为步表示为 S=S+iS的初始值为的初始值为0,i依次取依次取1,2,100 由于由于i同时记录了循环的次数同时记录了循环的次数,所以所以i称为计数变量称为计数变量.i = i + 1S=S + i 解决方法就是加上一个判断,解决方法就是加上一个判断,判断是否已经加到了判断是否已经加到了100,如果,如果加到了则退出,否则继续加加到了则退出,否则继续加。试分析两种流程的异同点试分析两种流程的异同点直到型结构当型结构S = S + ii=i+ 1是否S= S+ ii=i + 1否是i100?请填上判断的条件请填上判断的条件。 算法设计算法设计1: 第一步,令第一步,令i=1,S=0; 第二步,第二步, S=S+i; 第三步,第三步, i=i+1 ; 第四步,若第四步,若i 100成立,输出成立,输出S,结束算法,结束算法,否则,返回第二步。否则,返回第二步。开始开始S=0i=1S=S+ii=i+1i100?结束结束输出输出S是是否否直到直到型循型循环结环结构构程序框图程序框图 算法设计算法设计2: 第一步,令第一步,令i=1,S=0; 第二步,若第二步,若in?否是输入n程序框图程序框图练习:练习:设计一算法,求积设计一算法,求积:123100,画出流程图,画出流程图。结束输出Ai=0,A=1开始i = i + 1A=A*ii=100?否是思考:思考:该流程图与前面的例该流程图与前面的例1中求和的流程图有何不同?中求和的流程图有何不同?练习巩固练习巩固程序框图程序框图例例2 2:某工厂某工厂2005年的年生产总值为年的年生产总值为200万,技术革万,技术革新以后每年的年生产总值比上一年增长新以后每年的年生产总值比上一年增长5。设计一。设计一个程序框图,输出预计年生产总值超过个程序框图,输出预计年生产总值超过300万元的万元的最早年份。最早年份。算法分析:算法分析:第一步,输入第一步,输入2005年的年生产总值。年的年生产总值。第二步,计算下一年的年生产总值。第二步,计算下一年的年生产总值。第三步,判断所得的结果是否大于第三步,判断所得的结果是否大于300。若是,。若是,则输出该年的年份;否则,返回第二步。则输出该年的年份;否则,返回第二步。 由于由于“第二步第二步”是重复操作的步骤,所以可以用循环结构是重复操作的步骤,所以可以用循环结构来实现。我们按照来实现。我们按照“确定循环体确定循环体” “初始化变量初始化变量” “设设定循环控制条件定循环控制条件”的顺序来构造循环结构。的顺序来构造循环结构。(2)初始化变量:若将)初始化变量:若将2005年的年生产总值堪称计算的年的年生产总值堪称计算的起始点,则起始点,则n的初始值为的初始值为2005,a的初始值为的初始值为200.(3)设定循环控制条件:当)设定循环控制条件:当“年生产总值超过年生产总值超过300万元万元”时终止循环,所以可通过判断时终止循环,所以可通过判断“a300”是否成立来控制循是否成立来控制循环。环。(1)确定循环体:设)确定循环体:设a为某年的年生产总值,为某年的年生产总值,t为年生为年生产总值的年增长量,产总值的年增长量,n为年份,则循环体为为年份,则循环体为0.051taaatnn程序框图:程序框图:开始开始n=2005a=200t=0.05an=n+1a300?是是输出输出n结束结束否否a=a+t你能画出包你能画出包含当型循环含当型循环结构的程序结构的程序框图吗框图吗?新知探究新知探究3. 3. 程序框图的画法程序框图的画法 在用自然语言表述一个算法后,可以画出程在用自然语言表述一个算法后,可以画出程序框图,用顺序结构、条件结构和循环结构来表序框图,用顺序结构、条件结构和循环结构来表示这个算法。这样表示的算法清楚、简练,便于示这个算法。这样表示的算法清楚、简练,便于阅读和交流。阅读和交流。 下面,我们以下面,我们以“用用 “二分法二分法” 求方程求方程 x2 -2=0(x0)的近似解的算法)的近似解的算法”为例,利用三种基本逻为例,利用三种基本逻辑结构画出程序框图。辑结构画出程序框图。第四步第四步, ,若若f(a) f(m) 0?a=m否否b=m (2 2)算法步骤中的)算法步骤中的“第四步第四步”可以用条件结构来可以用条件结构来表示。在这个条件结构中,表示。在这个条件结构中,“否否”分支用分支用“a = ma = m”表示含零点的区间为表示含零点的区间为m, b,并把这个区间仍记并把这个区间仍记成成a,b; “ “是是”分支用分支用“b = mb = m”表示含零点的表示含零点的区间为区间为a,m,同样把这个区间仍记成同样把这个区间仍记成a,b:是是程序框图第三步第三步第四步第四步|a-b|d或或f(m)=0?输出输出m m (3 3)算法步骤中的)算法步骤中的“第五步第五步”包含一个条件结构,这个包含一个条件结构,这个条件结构与条件结构与“第三步第三步”“”“第四步第四步”构成一个循环结构,循环构成一个循环结构,循环体由体由“第三步第三步”“”“第四步第四步”组成,终止循环的条件是组成,终止循环的条件是“|a-|a-b|db|0?是是a=m|a-b|d或或f(m)=0?是是输出输出m结束结束否否b=m否否 (4 4)将各)将各步骤的程序步骤的程序框图连接起框图连接起来,并画出来,并画出“开始开始”与与“结束结束”两两个终端框,个终端框,就得到了表就得到了表示整个算法示整个算法的程序框图。的程序框图。2abm设计一个算法的程序框图的步骤:设计一个算法的程序框图的步骤: 第一步,用自然语言表述算法步骤;第一步,用自然语言表述算法步骤; 第二步,确定每一个算法步骤所包含的逻辑第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的程序框图表示,得到该步骤的结构,并用相应的程序框图表示,得到该步骤的程序框图;程序框图; 第三步,将所有第三步,将所有步骤的程序框图连接起来,步骤的程序框图连接起来,并加上并加上“开始开始”与与“结束结束”两个终端框,就得到两个终端框,就得到了表示整个算法的程序框图了表示整个算法的程序框图. .作业作业:P20页页A组组T1;(画出程序框图画出程序框图) 作业: 设计房租收费的算法,其要求是:住房面积80平方米以内,每平方米收费3元,住房面积超过80平方米时,超过部分,每平方米收费5元.输入住房面积数,输出应付的房租.1、掌握程序框的画法和功能。、掌握程序框的画法和功能。2、了解什么是程序框图,知道学习、了解什么是程序框图,知道学习程序框图的意义。程序框图的意义。3、掌握顺序结构的应用,并能解决、掌握顺序结构的应用,并能解决与顺序结构、条件结构有关的程序框与顺序结构、条件结构有关的程序框图的画法。图的画法。课时小结课时小结: :课时小结:课时小结:1、循环结构的特点2、循环结构的框图表示3、循环结构有注意的问题避免死循环的出现,设置好进入(结束)循环体的条件。当型和直到型重复同一个处理过程