新课标高中一轮总复习理数理数第八单元复数、算法初步第58讲基本算法语句与算法案例1.理解输入语句、输出语句、赋值语句、条件语句、循环语句这五种算法语句的含义.2.能准确地实现程序框图与算法语句的互相转化。3.了解秦九韶算法、辗转相除法与更相减损术等特殊案例的算法思想和算法语句.1.某一程序中先后相邻的两个语句是:x=3*5,x=x+1,那么下列说法中正确的是()①x=3*5的意思是x=3×5=15,此式与算术式中的意义是一样的;②x=3*5是将数值15赋给x;③x=3*5也可以写为3*5=x;④x=x+1在执行时,赋值号右边的x值是15,执行后左边的x值是16.BA.①③B.②④C.①④D.②③2.运行如图所示的程序后,输出的结果为()Ci=1WHILEi7i=i+1S=2*i-1i=i+2WENDPRINTS,iENDA.13,7B.7,4C.9,7D.9,5由程序知该算法循环了两次,第一次,S=2×2-1=3,i=4;第二次,S=2×5-1=9,i=7.因为i≥7,循环结束,输出S=9,i=7.3.把二进制数1011001(2)化为五进制数是.324(5)1011001(2)=1×26+1×24+1×23+1=89,所以89=324(5).4.程序如下:以上程序输出的结果是.t=1i=2WHILEi≤4t=t*ii=i+1WENDPRINTtEND24由题意可知,它表示计算1×2×3×…×n的算法,所以输出的结果为1×2×3×4=24.一、基本算法语句1.输入、输出语句和赋值语句:输入语句格式:①;输出语句格式:②;赋值语句格式:③.2.条件语句:(1)框图:INPUT“提示内容”;变量PRINT“提示内容”;表达式变量名=表达式(2)条件语句格式:IF条件THEN语句1ELSE语句2ENDIF条件语句的嵌套:条件语句④,当出现3个或3个以上的判断点时,就要用到⑤,其一般格式为:主要用于实现算法中的条件结构程序嵌套IF表达式1THEN语句序列1;ELSEIF表达式2THEN语句序列2ELSE语句序列3ENDIFENDIF3.循环语句:(1)WHILE语句的结构WHILE语句的一般格式:WHILE条件循环体END(2)UNTIL语句的结构:UNTIL语句的一般格式:DO循环体LOOPUNTIL条件二、算法案例1.辗转相除法与更相减损术.(1)辗转相除法:⑥..,反复操作,直到余数为0为止,即m=nt+r(0≤r≤n).因此要用“后测试型”循环语句表示,其程序如下:求两个正整数的最大公约数的方法.用较大的数m除以较小的数n得到余数rINPUTm,nDOr=mMODnm=nn=rLOOPUNTILr=0PRINTmEND(2)更相减损术是⑦..用较大数减去较小数,再用差数和较小数构成一对新数,再用大数减去小数,以同样的操作一直做下去,直到所得的数相等为止.这一过程可由循环语句表达算法,其程序如下:求两个正整数的最大公约数的算法INPUTa,bWHILEabIFa>=bTHENa=a-bELSEb=b-aENDIFWENDPRINTa,bEND2.秦九韶算法.n次多项式f(x)=anxn+an-1xn-1+…+a1x+a0=(anxn-1+an-1xn-2+…+a1)x+a0…=(((…(anx+an-1)x+an-2)x+…+a1)x+a0得到递推公式v0=an且vk=vk-1x+an-k,其中k=1,2,…,n.其算法可用循环语句来实现.3.排序.直接插入排序法:⑧...冒泡法的排序算法步骤:第一步:用第1个数与第2个数比较,若前者小则两个数不变,否则调整两数位置.第二步:按同样的规则,比较第2个数与第3个数,……直到比较完最后两数,这个过程称为“一趟”.从第一个数开始,依次把每个数插入到已排好序的适当位置,直到完成对最后一个数的操作第三步:如果前一趟比较中交换次数为0,说明排序已完成,否则返回第二步.4.进位制.(1)将十进制数化为二进制数的算法称为⑨;将十进制数化为k进制数的算法称为⑩.(2)将k进制数化为十进制数的算法步骤为:第一步:从左到右依次取k进制数anan-1…a1a0(k)各位上的数字乘以k次幂,k从n开始取值,每次递减1,递减到0,即an·kn,an-1·kn-1,…,a1·k,a0·k0;第二步:把所有积加起来,就得到十进制数.除2取余法除k取余法题型一基本算法语句及应用例1典例精讲典例精讲典例精讲典例精讲高一(2)班共有54名同学参加数学竞赛,现已有这54名同学的竞赛分数,请设计一个程序,求成绩优秀同学的平均分(规定90分以上为优秀).由于涉及54名同学的分数,因此,可以使用循环结构控制输入分数,用条件结构来判断分数是否高于90分,同时统计高于90分的成绩的总和和人数,从而求平均分.S=0M=0i=1WHILEi≤54INPUTxIFx90THENS=S+xM=M+1ENDIFi=i+1WENDP=S/MPRINTPEND程序设计如下:点评点评在解决实际问题时,要正确理解其中的算法思想,根据题目写出其关系式,再写出相应的算法.在循环语句中,也可能嵌套条件语句,甚至是循环语句,此时需要注意嵌套这些语句需要保证语句完整性,否则就会造成程序无法执行.变式变式变式因庆期间,某超市实行购物优惠活动,规定一次购物付款总额:①若不超过200元,则不予优惠;②若超过200元,但不超过500元,则按标价价格给予9折优惠;③如果超过500元,500元的部分按②优惠,超过500元的部分给予7折优惠.编写一个收款的相应程序.程序如下:INPUTxIFx≤200THENPRINTxELSEIFx200ANDx≤500THENy=0.9*xPRINTyELSEy=0.9*500+0.7*(x-500)PRINTyENDIFENDIFEND题型二程序框图与程序的相互转化例2某商场购物实行优惠措施,若购物金额x在800元以上打8折;购物金额x在500元以上打9折,否则不打折.请设计程序框图,并根据框图编写程序,要求输入金额x,输出实际交款额.根据题意,实际交款额y(元)与购物金额x(元)的函数关系如下:x(0x≤500)0.9x(500<x≤800)0.8x(x>800).程序框图如下:y=程序如下:INPUTxIFx800THENy=0.8*xELSEIFx500THENy=0.9*xELSEy=xENDIFENDIFPRINTyEND点评点评解决分段函数的求值问题时,一般采用条件结构设计算法.如果变量分为三级(或以上),就需要用到条件结构的嵌套.另外,不能忽视结果中“是”和“否”的书写,否则不知执行哪一条路径.变式变式变式现给出某班50名同学的数学成绩,60分以上为及格.要求统计及格人数和全班同学的平均分,画出程序框图,并写出程序语句.程序框图如右图所示.程序如下:i=1S=0t=0DOINPUTxS=S+xIFx>=60THENt=t+1ENDIFi=i+1LOOPUNTILi>50p=S/50PRINTpPRINTtEND点评点评该题主要运用算法的条件结构及条件语句正确表达算法,关键是理解变量x的作用,用x来表示某学生的分数,每循环一次输入一个x的值,表示及格人数的变量t与表示学生人数的变量i均加1.题型三算法案例例3用秦九韶算法求多项式f(x)=8x7+5x6+3x4+2x+1当x=2时的值.分析分析利用秦九韶算法一步一步地代入运算,注意本题中有几项不存在,此时在计算时,我们应该将这些项加上,比如含有x3的这一项可看做0·x3.根据秦九韶算法,把多项式写成如下形式:f(x)=8x7+5x6+0·x5+3x4+0·x3+0·x2+2x+1=((((((8x+5)x+0)x+3)x+0)x+0)x+2)x+1,v0=8v1=8×2+5=21,v2=21×2+0=42,v3=42×2+3=87,v4=87×2+0=174,v5=174×2+0=348,v6=348×2+2=698,v8=698×2+1=1397.所以当x=2时,多项式的值为1397.点评点评秦九韶算法是多项式求值的优秀算法,其特点是:(1)化高次多项式求值为一次多项式求值;(2)减少了运算次数,提高了效率;(3)步骤重复执行,容易用计算机实现.利用秦九韶算法计算多项式的值关键是能正确地将所给多项式改写,然后由内向外逐次计算,由于后项计算用到前项的结果,故应认真、细心,确保中间结果的准确性,若在多项式中有几项不存在,可将这些项的系数看成0,即把这些项看做0×xn.变式变式变式(1)将七进制数235(7)转化为十进制的数;(2)把五进制的数44(5)转化为二进制的数.分析分析(1)把七进制数写成各位上数字与7的幂的乘积之和的形式,再按十进制的运算得到结果;(2)先把五进制的数化为十进制的数,再化为二进制的数.(1)235(7)=2×72+3×71+5×70=2×49+3×7+5=124.(2)44(5)=4×51+4×50=24.所以24=11000(2).备选题备选题(1)用辗转相除法或更相减损术求三个数324,243,135的最大公约数.(2)某工程的工序流程如图所示,现已知工程总时数为10天,则工序c所需工时为多少天?(1)(方法一)辗转相除法:324=243×1+81,243=81×3+0,则34与243的最大公约数是81.又135=81×1+54,81=54×1+27,54=27×2+0,则81与135的最大公约数为27.故三个数34,243,135的最大公约数为27.(方法二)更相减损术:因为(324,243)→(243,81)→(162,81)→(81,81),又(135,81)→(81,54)→(54,27)→(27,27),所以324,243,135的最大公约数为27.(2)设工序c所需工时数为x天,由题意,a→c→e→g,需要工时数1+x+4+1=10,所以x=4,即工序c所需工时数为4天.方法提炼方法提炼1.关于条件语句.(1)“条件”是由一个关系表达式或逻辑表达式构成的,其一般形式为“〈表达式〉〈关系运算符〉〈表达式〉”,常用的运算符有“”(大于)、“”(小于)、“=”(大于或等于)、“=”(小于或等于),表达式的结果可取两个值,以“真”或“假”来表示,“真”表示条件满足,“假”表示条件不满足.(2)“语句”是由程序语言中所有语句构成的程序段,即可以是语句组.(3)条件语句可以嵌套,即条件语句的THEN或ELSE后面还可以跟条件语句,其一般形式是:IF条件1THEN语句1ELSEIF条件2THEN语句2ELSE语句3ENDIFENDIF内层条件语句外层条件语句对应的程序框图如下图所示.嵌套时,注意内外分层,避免逻辑混乱.2.关于循环语句.(1)“循环体”是由语句组成的程序段,能够完成一项工作,当使用WHILE语句时,循环体内部应当有改变循环的条件,否则会产生无限循环.(2)循环语句主要用来实现算法中的循环结构,处理一些需要反复执行的运算任务,如在累加求和、累乘求积等总是中常用到.(3)在用WHILE语句和UNTIL语句编写程序解决问题时,一定要注意它们的格式及条件的表述方法.(4)注意两种循环语句的区别:①当型循环用WHILE语句,直到型循环用UNTIL语句;②在WHILE语句中,是当条件满足时执行循环体,而在UNTIL语句中中,是当条件不满足时执行循环体;③当型循环先判断后执行,直到型循环先执行后判断;④对同一算法来说,当型循环和直到型循环的条件互为反条件.3.(1)辗转相除法与更相减损术是求两个正整数的最大公约数的两种方法,关键是掌握这两种算法的操作步骤,计算时应认真、细心,确保中间结果的准确性,因为下一次计算要用到上一次计算的结果.(2)利用“除k取余法”将十进制数化为k进制数时,要把各步所得余数从下到上排,切莫把顺序弄错.(3)利用秦九韶算法计算多项式的值的关键是正确地将多项式改写,然后由内向外逐次计算.由于下一次计算用到上一次计算的结果,同样应认真、细致地计算每一步,确保每一步结果的准确性.(4