1.1.2程序框图与算法的基本逻辑结构“鸡兔同笼”是我国隋朝时期的数学著作《孙子算经》中的一个题目:“今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何.”请您设计一个这类问题的通用算法.并画出算法的程序框图.设有x只鸡,y只兔.则解:鸡兔同笼,设鸡兔总头数为H,总脚数为F,求鸡兔各有多少只.算法分析如下:,24.xyHxyF解方程组,得(4)/2,(2)/2.xHFyFH一、知识导入第一步:输入总头数H,总脚数F第二步:计算鸡的个数x=(4H-F)/2第三步:计算兔的个数y=(F-2H)/2第四步:输出x,y开始输出x,y结束x=(4H-F)/2y=(F-2H)/2输入H和F解:算法程序框图二、知识探究1.程序框图算法的表现形态不仅有自然语言,还有程序框图与程序.用自然语言描述算法的优点是通俗易懂,当算法中的操作步骤都是顺序执行时比较容易理解.缺点是如果算法中包含判断和循环,并且操作步骤较多时,就不那么直观清晰了.函数图象算法程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.程序框图程序框名称功能终端框(起止框)表示一个算法的起始和结束输入、输出框表示一个算法输入和输出的信息处理框(执行框)赋值、计算判断框判断某一条件是否成立,成立时在出口处标明“是”或“Y”;不成立时标明“否”或“N”.连接点连接程序框图的两部分流程线连接程序框(1)起止框:框内填写开始、结束,任何程序框图中,起止框是必不可少的;(2)输入、输出框:框内填写输入、输出的字母、符号等;(3)处理框(执行框):算法中需要的算式、公式、对变量进行赋值等要用执行框表示.(4)判断框:当算法要求在不同的情况下执行不同的运算时,需要判断框.框内填写判断条件.四种基本框图的用法例1.“判断整数n(n2)是否为质数”的算法第一步:给定大于2的整数n.第二步:令i=2第三步:用i除n,得余数r.判断余数r是否为0,若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示这个数.第四步:判断i是否大于n-1,若是,若是,则n是质数;否则,返回第三步.自然语言(1)给定大于2的整数n.(2)令i=2(3)用i除n,得余数r.判断余数r是否为0,若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示这个数.(4)判断i是否大于n-1,若是,则n是质数;否则,返回第三步.开始输入ni=2求n除以i的余数ri=i+1in-1或r=0?①否①r=0?是是n不是质数结束n是质数否程序框图2.算法的基本逻辑结构开始输入ni=2求n除以i的余数ri=i+1in-1或r=0?①否①r=0?是是n不是质数结束n是质数否顺序结构循环结构条件结构尽管算法千差万别,但它们都是由三种基本的逻辑结构构成的,这三种逻辑结构就是顺序结构、条件结构、循环结构.(1)顺序结构由若干个依次执行的处理步骤组成的结构.它是任何一个算法都离不开的结构.步骤n步骤n+1画顺序结构程序框图时注意事项(1)在程序框图中,开始框和结束框不可少;(2)在算法过程中,第一步输入语句是必不可少的;(3)顺序结构在程序框图中的体现就是用流程线将程序框自上而下地连接起来,按顺序执行算法步骤.算法第二步:计算2abcp第三步:计算()()()Sppapbpc第四步:输出三角形的面积S框图开始1()2abcp()()()Sppapbpc输出S结束第一步:输入的值,,abc输入,,abc例2.已知一个三角形的三边边长分别为利用海伦-秦九韶公式,(,),设计一个算法,求出它的面积,并画出算法的程序框图.()()()Sppapbpc2abcp,,abc(2)条件结构在一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流向.符合条件就执行A,否则执行B符合条件就执行A,否则执行条件结构后的步骤满足条件?步骤A步骤B是否步骤A满足条件?是否例3.任意给定3个正实数,设计一个算法,判断以这3个正实数为三条边边长的三角形是否存在,并画出这个算法的程序框图.算法程序框图开始输入,,abcabcbcacab是否同时成立?存在这样的三角形结束不存在这样的三角形第一步:输入的值,,abc第二步:判断,,是否同时成立.若是,则存在这样的三角形;否则,不存在这样的三角形.abcbcacab否是本题的编制程序让计算机执行时比较困难.开始输入,,abc结束?abc?bca是存在这样的三角形?cab是是不存在这样的三角形否否否例4.设计一个求解一元二次方程的算法,并画出程序框图表示.20axbxc0有两个不相等的实数根0有两个相等的实数根0没有实数根242bbacxa22baa算法第一步:输入三个系数,,abc第二步:计算24bac0第四步:判断是否成立.若是,则输出12xxp否则,计算12,,xpqxpq并输出12,.xx第三步:判断0是否成立.若是,则计算,,22bpqaa否则,输出“方程没有实数根”,结束算法.程序框图开始输入,,abc2qa0?24bac0?2xpq12,xx输出结束2bpa是输出p是方程没有实数根否1xpq否开始输入,,abc24bac0?0?12bxa12bxa输出12,xx结束输出“方程无实数根”2bxa输出x是是否否(3)循环结构有些算法中,也经常出现从某处开始,按照一定条件,反复执行某些步骤的情况.这就是循环结构.反复执行的步骤称为循环体.求1+2+3+…+100第一步:令1,0iS第二步:若成立,则执行第三步;否则,输出S,结束算法.100i第三步:SSi第四步:1ii,返回第二步.开始1i0S100?iN输出S结束1iiSSiY计数变量:用于记录循环次数,同时还用于判断循环是否终止.累加变量:用于输出结果,一般与计数变量同步执行,累加一次,计数一次.循环终止条件循环体循环结构的设计步骤(1)确定循环结构的循环变量和初始条件;(2)确定算法中需要反复执行的部分,即循环体;(3)确定循环的终止条件.循环结构的三要素循环变量,循环体、循环的终止条件.循环结构一定包含条件结构,用以控制循环过程,避免出现“死循环”.判断框内写上条件,两个出口分别对应终止条件成立与否,其中一个指向循环体,经过循环体回到判断框的入口处.循环结构分为当型循环结构和直到型循环结构差异:循环终止条件不同,检验条件是否成立的先后次序也不同.当型循环结构:先判断后执行循环体.直到型循环结构:先执行循环体后判断条件是否成立.循环体满足条件?否是直到型循环结构当型循环结构循环体满足条件?是否例5.某工厂2005年的生产总值为200万元,技术革新后预计以后每年的生产总值比上一年增加5%.设计一个程序框图,输出预计年生产总值超过300万元的最早年份.算法第一步:输入2005年的年生产总值.第二步:计算下一年的年生产总值.第三步:判断所得结果是否大于300.若是,输出该年年份;否则,返回第二步.循环结构的设计步骤(1)确定循环结构的循环变量和初始条件;(2)确定算法中需要反复执行的部分,即循环体;(3)确定循环的终止条件.,an200,2005an0.051taaatnn300?a直到型循环结构0.05aa300?a当型循环结构开始2005n200a0.05taaat1nn300?a否结束输出n是开始2005n200a300?a结束输出n否当型循环结构直到型循环结构0.05taaat1nn是第一步:令,2)(2xxf给定精确度d.第三步:取区间中点2bam].,[ba含零点的区间为].,[bm第四步:若()()0,fafm则含零点的区间为];,[ma否则,将新得到的含零点的区间仍记为第二步:确定区间满足0)()(bfaf],,[ba第五步:判断],[ba的长度是否小于d或f(m)是否等于0.若是,则m是方程的近似值;否则,返回第三步.顺序结构条件结构循环结构写出用“二分法”求方程近似解的算法.)0(022xx三、随堂演练第一步:令,2)(2xxf给定精确度d.第三步:取区间中点2bam第二步:确定区间满足0)()(bfaf],,[ba顺序结构2()2fxx输入精确度d和初始值,ab2abm].,[ba含零点的区间为].,[bm第四步:若()()0,fafm则含零点的区间为];,[ma否则,将新得到的含零点的区间仍记为条件结构()()0?fafmam否bm是||abd或()0?fm第四步第三步否输出m是2bam否则,第三步:取区间中点].,[ba含零点的区间为].,[bm第四步:若()()0,fafm则含零点的区间为];,[ma将新得到的含零点的区间仍记为第五步:判断],[ba的长度是否小于d或f(m)是否等于0.若是,则m是方程的近似值;否则,返回第三步.循环结构||abd或()0?fmam否bm是2abm()()0?fafm否输入精确度d和初始值,ab2()2fxx开始结束输出m是四、小结作业为了使大家彼此之间能够读懂各自画出的框图,必须遵守一些共同的规则.(1)使用标准的框图符号.(2)框图一般按从上到下、从左到右的方向画.(3)流程线是带有方向箭头的线,用以连接框图,直观地表示算法的流程.在程序框图中,任意两个程序框之间都存在流程线.(4)在程序框图中,除起止框外,任意一个程序框都只有一条流程线“流进”,输入输出框、处理框都只有一条流程线“流出”,但判断框一定是至少有两条流程线“流出”.(5)一个完整的程序框图包括以下几部分:表示相应操作的程序框、带箭头的流程线、程序框外必要的文字说明.以起止框表示开始,以终止框表示结束.1.画流程图的规则2.程序框图的画法通过对以上知识点的学习可以看出,画出一个算法的程序框图很有必要.我们可以借助三种基本逻辑结构来表示这样的算法,使得算法清楚、简练,便于阅读和交流.一般地,一个算法的程序框图有以下几个步骤:第一步:用自然语言表述算法步骤.第二步:确定每一个算法步骤所包含的逻辑结构,并用相应的程序框图表示,得到该步骤的程序框图.第三步:将所有步骤的程序框图用流程线连接起来,并加上终端框,得到表示整个算法的程序框图.3.作业P20习题1.1A组3B组2