1、1.1.2 程序框图与程序框图与算法的基本逻辑构造算法的基本逻辑构造 任意给定一种不不大于任意给定一种不不大于1的整数的整数n,试设计一种程试设计一种程序或环节对序或环节对n与否为质数做出鉴定与否为质数做出鉴定.算法分析算法分析:从上节课我们懂得从上节课我们懂得:算法能够用自然语言来描述算法能够用自然语言来描述.第一步,给定不不大于2的整数n第二步,令i=2第三步,用i除n,得到余数r第四步,判断“r=0”与否成立,若是,则n不 是质数,结束算法;否则令i=i+1第五步,判断“i(n-1)”与否成立,若是,则n是质数,结束算法;否则返回第三步开始开始输入输入ni=2求求n除以除以i的余数的余数
2、ri的值增加的值增加1仍用仍用i表达表达in-1?输出输出“n不是质数不是质数”结束结束是是否否是是输出输出“n是质数是质数”否否r=0?设设n是一种不是一种不不大于不大于2的整的整数数.普通用普通用i=i+1表达表达.i=i+1也能够用也能够用图形方式图形方式来表达来表达(框图)(框图)思考思考?通过上述算法的两种不同体现方式的比较通过上述算法的两种不同体现方式的比较,你觉得用程序框图来体现算法有哪些特点你觉得用程序框图来体现算法有哪些特点?用程序框图表达的算法更加简洁用程序框图表达的算法更加简洁,直观直观,流向清流向清晰晰.程序框图又称流程图程序框图又称流程图,是一种用程序框、是一种用程序
3、框、流程线及文字阐明来精确、直观地表达算法的流程线及文字阐明来精确、直观地表达算法的图形图形.一种或几个程序框的组合表达算法中的一种环节一种或几个程序框的组合表达算法中的一种环节;带有方向箭头的流程线将程序框连接起来带有方向箭头的流程线将程序框连接起来,表达表达算法环节的执行次序算法环节的执行次序.基本的程序框和它们各自表达的功效以下基本的程序框和它们各自表达的功效以下:图形符号图形符号名称名称功能功能终端框终端框(起止框起止框)表达一种算法的起始表达一种算法的起始和结束和结束输入、输输入、输出框出框表达一种算法输入和表达一种算法输入和输出的信息输出的信息解决框解决框(执行框执行框)判断某一条
4、件与否成立判断某一条件与否成立,成立成立时在出口处标明时在出口处标明“是是”或或“Y”;不;不”成立时标明成立时标明“否否”或或“N”.判断框判断框赋值、计算赋值、计算流程线流程线连接程序框连接程序框连接点连接点连接程序框图的两部分连接程序框图的两部分开始开始输入输入ni=2求求n除以除以i的余数的余数ri=i+1in-1或或r=0?结束结束是是否否是是否否r=0?次序构造次序构造用程序框图来表达算法,有用程序框图来表达算法,有三种不同的基本逻辑构造:三种不同的基本逻辑构造:条件构造条件构造循环构造循环构造输出输出“n不是质数不是质数”输出输出“n是质数是质数”程序框图的三种基本的逻辑构造程序
5、框图的三种基本的逻辑构造次序构造次序构造条件构造条件构造循环构造循环构造(1)次序构造次序构造-是由若干个依次执行的解是由若干个依次执行的解决环节构成的决环节构成的.这是任何一种算法都离不开这是任何一种算法都离不开的基本构造的基本构造.例例1:已知一种三角形的三边边长分别为已知一种三角形的三边边长分别为a,b,c,运用海伦运用海伦-秦九韶公式设计一种算法秦九韶公式设计一种算法,求出它的求出它的面积面积,画出算法的程序框图画出算法的程序框图.例例1:已知一种三角形的三边边长分别为已知一种三角形的三边边长分别为a,b,c,运用海伦运用海伦-秦九韶公式设计一种算法秦九韶公式设计一种算法,求出它的求出
6、它的面积面积,画出算法的程序框图画出算法的程序框图.算法分析算法分析:第二步第二步:计算计算p的值的值.第三步第三步:由海伦由海伦-秦九韶公式求出三角形的面积秦九韶公式求出三角形的面积S.第四步第四步:输出输出S的值的值.第一步:输入三角形三条边的边长第一步:输入三角形三条边的边长a,b,c画出画出:已知三角形的三已知三角形的三边长边长a,b,c,求它的面积求它的面积的程序框图的程序框图.开始开始输出输出S结束结束输入输入a,b,c练习1 已知两个单元分别寄存了x和y的值。试交换这两个变量值。设计算法,并用框图表达(2)条件构造条件构造-在一种算法中在一种算法中,经常会碰到经常会碰到某些条件的
7、判断某些条件的判断,算法的流向根据条件与否算法的流向根据条件与否成立有不同的流向成立有不同的流向.条件构造就是解决这种条件构造就是解决这种过程的构造过程的构造.满足条件满足条件?步骤步骤A步骤步骤B是是否否满足条件满足条件?步骤步骤A是是否否例例2:任意给定任意给定3个正实数个正实数,设计一种算法设计一种算法,判断分判断分别以这别以这3个数为三边边长的三角形与否存在个数为三边边长的三角形与否存在.画画出这个算法的程序框图出这个算法的程序框图.算法分析算法分析:第一步第一步:输入输入3个正实数个正实数a,b,c;第二步第二步:判断判断a+bc,a+cb,b+ca与否同时成立与否同时成立,若是若是
8、,则能构成三角形则能构成三角形;若否若否,则组不成三角形则组不成三角形.程序框图程序框图:开始开始输入输入a,b,ca+bc,a+cb,b+ca与否与否同时成立同时成立?是是存在这样的存在这样的三角形三角形不存在这样的不存在这样的三角形三角形否否结束结束例例3:为了加强居民的节水意识为了加强居民的节水意识,某市制订了下某市制订了下列生活用水收费原则列生活用水收费原则:每户每月用水未超出每户每月用水未超出7m3时时,每立方米收费每立方米收费1.0元元,并加收并加收0.2元的都元的都市污水解决费市污水解决费;超出超出7m3的部分的部分,每立方米收每立方米收费费1.5元元,并加收并加收0.4元的都市
9、污水解决费元的都市污水解决费,请你请你写出某户居民每月应交纳的水费写出某户居民每月应交纳的水费y(元元)与用水与用水量量x(m3)之间的函数关系之间的函数关系,然后设计一种求该然后设计一种求该函数值的算法函数值的算法,并画出程序框图并画出程序框图.解解:y与与x之间的函数关系为之间的函数关系为:(当当0 x7时时)(当当x7时时)解解:y与与x之间的函数关系为之间的函数关系为:(当当0 x7时时)(当当x7时时)算法分析算法分析:第一步第一步:输入每月用水输入每月用水量量x;第二步第二步:判断判断x与否不超与否不超出出7.若是若是,则则y=1.2x;若若否否,则则y=1.9x-4.9.第三步第
10、三步:输出应交纳的输出应交纳的水费水费y.开始开始输入用水量输入用水量x0 x7?是是y=1.2x否否y=1.9x-4.9输出输出y结束结束程序框图程序框图例例4.画程序框图画程序框图,对于输入的对于输入的x值值,输出对应的输出对应的y值值.开始开始程序框图程序框图x0?是是y=0否否0 x100?是是输出输出S结束结束否否直到直到型循型循环构环构造造开始开始i=1S=0i100?是是S=S+ii=i+1否否输出输出S结束结束当型循环当型循环构造构造阐明阐明:(1)普通地普通地,循环构造中都有一种计数变量循环构造中都有一种计数变量和累加变量和累加变量.计数变量用于统计循环次数计数变量用于统计循
11、环次数,同时同时它的取值还用于判断循环与否终止它的取值还用于判断循环与否终止,累加变量用累加变量用于输出成果于输出成果.累加变量和计数变量普通是同时执累加变量和计数变量普通是同时执行的行的,累加一次累加一次,记数一次记数一次.(2)循环构造分为两种循环构造分为两种-当型和直到型当型和直到型.当型循环在每次执行循环体前,条件进行当型循环在每次执行循环体前,条件进行判断判断,当条件满足时,执行循环体当条件满足时,执行循环体,否则终止循否则终止循环环;(当条件满足时重复执行循环体当条件满足时重复执行循环体)直到型循环在执行了一次循环体之后直到型循环在执行了一次循环体之后,对对条件进行判断条件进行判断
12、,如果条件不满足,就继续执行如果条件不满足,就继续执行循环体循环体,直到条件满足时终止循环直到条件满足时终止循环.(重复执行重复执行循环体循环体,直到条件满足终止循环直到条件满足终止循环)程序框图程序框图:开始开始i=1S=0S=S+ii=i+1i100?是是输出输出S结束结束否否直到直到型循型循环构环构造造开始开始i=1S=0i100?是是S=S+ii=i+1否否输出输出S结束结束当型循环当型循环构造构造探究探究:画出用二分法求方程画出用二分法求方程x2-2=0(x0)的近似的近似根的程序框图根的程序框图.算法分析算法分析:第一步第一步:令令f(x)=x2-2.给定精确度给定精确度第二步第二
13、步:拟定拟定a,b.使得使得f(a)f(b)0,则令则令a=m;否则否则,令令b=m.第五步第五步:判断判断|a-b|0?程序框图程序框图开始开始f(x)=x2-2输入误差输入误差和初值和初值a,ba=m否否b=m|a-b|2)位数是不是回文数位数是不是回文数,用自然语言描述算用自然语言描述算法环节法环节.算法环节算法环节:第一步第一步:输入一种正整数输入一种正整数x和它的位数和它的位数.第二步第二步:判断判断n是不是偶数是不是偶数,如果是偶数如果是偶数,令令m=n/2;如果是奇数如果是奇数,令令m=(n-1)/2.第三步第三步:当当i从从1取到取到m值时值时,依次判断依次判断x的第的第i位与第位与第(n+1-i)位上的数字是不是相等位上的数字是不是相等,如果如果都相等都相等,则则x是回文数是回文数;否则否则,x不是回文数不是回文数.回文数是指从左到右读与从回文数是指从左到右读与从右到左读都是同样的正整数右到左读都是同样的正整数,如如121,676,94249,234432等。等。返回返回开始开始程序框图程序框图输入正整数输入正整数x和它的位数和它的位数nn是偶数?是偶数?是是m=n/2否否m=(n-1)/2第第i位与第位与第(n+1-i)(i=1,2,m)位上的数字相等位上的数字相等?是是x是回文数是回文数否否x不是回文数不是回文数结束结束