算法部分章质量检测本章知识结构算法程序框图算法语句辗转相除法与更相减损术排序进位制秦九韶算法一、知识点剖析1.算法的定义和特点掌握要点:算法定义:在数学中指按照一定规则解决某一类问题的明确和有限的步骤。算法特点:①有穷性:一个算法的步骤是有限的,它应在有限步操作之后停止。②确定性,算法的每一步操作必须是明确的,不能有歧义或模糊且算法执行后一定产生确定的结果,不能模棱两可。③可行性:算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个明确的后继步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都要准确无误才能解决问题。④不惟一性:求解某一类问题的算法是不惟一的,对于一个问题可以有不同的算法。⑤普遍性,很多具体的问题都可以设计合理的算法解决。易混易错:(1)算法一般是机械的,有时要进行大量重复的运算,只要按部就班的做总能算出结果,通常把算法过程称为“数学机械化”,“数学机械化”的最大优点是它可以让计算机来完成。(2)实际上,处理任何问题都需要算法。如,邮购物品有其相应的手续。购买飞机票也有一定的手续等。(3)求解某个问题的算法不惟一。2.(1)程序框图表示算法步骤的一些常用的图形和符号图形符号名称功能终端框(起止框)程序的开始和结束,输入、输出框表示数据的输入或结果的输出处理框赋值,计算判断框判断某一条件是否成立,成立时在出口处标明:“是”或“YES”;不成立时在出口处标明“否”或”NO”流程线连接程序框连接点连接程序框图的两部分易混易错:在所给的上述符号之中只有判断框有一个入口和两个出口,它是唯一有两个退出点的符号。(2)三种基本逻辑结构①顺序结构②条件结构③循环结构顺序结构:顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的。这是任何一个算法都离不开的基本结构。条件结构:在一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立会有不同的流向,条件结构就是处理这种过程的结构。易混易错:在条件结构中无论条件是否成立,都只能执行两框之一,两框不可能同时执行,也不可能两框都不执行。循环结构:算法结构中经常会遇到从某处开始,按照一定条件反复执行某些步骤的情况,这就是循环结构,反复执行的步骤成为循环体。循环结构分为两种:当性循环结构和直到性循环结构。当性循环结构:在每次执行循环体前,对条件进行判断,当条件满足时,执行循环体,否则终止循环。“先判断”直到性循环结构:在执行了一次循环体后,对条件进行判断,如果条件不满足就继续执行循环体,直到条件满足时终止循环。“先循环”注意:循环结构中一定包含着条件结构。3.基本算法语句(1)输入语句①输入语句的一般形式是:INPUT“提示内容”;变量②输入语句的作用是实现算法的输入信息功能③“提示内容”提示用户输入什么样的信息④输入语句可以给变量提供初值⑤提示内容与变量之间用分号隔开,若输入多个变量,变量之间用逗号隔开。例如:INPUT“提示内容1,提示内容2,提示内容3,…”;变量1,变量2,变量(2)输出语句①输出语句的一般形式是:PRINT“提示内容”;表达式②输出语句的作用是实现算法的输出结果功能。③“提示内容”提示用户输入什么样的信息,如PRINT“S=;S是提示输出的结果是S的值④PRINT语句可以在屏幕上出现常量、变量以及系统信息。注意:任何求解问题的算法,都要把求解问题的结果输出。(3)赋值语句①赋值语句是最基本的语句②赋值语句的一般格式为:变量=表达式③“=”叫做赋值号。易混易错:①赋值号做变只能是变量而不能使表达式。②赋值号的左右两边不能调换。③不能利用赋值语句进行代数式的演算(如化简、因式分解、解方程等)。④赋值号与数学中的符号意义不同。注意:输入语句、输出语句、赋值语句基本上对应程序框图中的顺序结构;一个算法有0个或者多个输入,有一个或多个输出;输出语句和赋值语句具有运算功能而输入语句不具有运算功能。(4)条件语句共分为两种形式IF-THEN-ELSE格式(1)IF条件THEN语句1ELSE语句2ENDIF满足条件?语句1语句2是否当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句1,否则执行ELSE后的语句2。其对应的程序框图为:(如上右图)②IF-THEN格式计算机执行这种形式的条件语句时,也是首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句,如果条件不符合,则直接结束该条件语句,转而执行其他语句。其对应的程序框图为:(如上右图)条件语句的作用:在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去。需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理。(5)循环语句算法中的循环结构是由循环语句来实现的。对应于程序框图中的两种循环结构。一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。即WHILE语句和UNTIL语句。①WHILE语句的一般格式是:其中循环体是由计算机反复执行的一组语句构成的。WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的。当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止。这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句。因此,当型循环有时也称为“前测试型”循环。其对应的程序结构框图为:(如上右图)②UNTIL语句的一般格式是:其对应的程序结构框图为:(如上右图)从UNTIL型循环结构分析,计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到IF条件THEN语句ENDIF满足条件?语句是否WHILE条件循环体WENDDO循环体LOOPUNTIL条件满足条件?循环体是否满足条件?循环体是否某一次条件满足时,不再执行循环体,跳到LOOPUNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句。区别:在WHILE语句中,是当条件满足时执行循环体,而在UNTIL语句中,是当条件不满足时执行循环体。4.算法案例辗转相除法算法:第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;第二步:若r0=0,则n为m,n的最大公约数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;第三步:若r1=0,则r1为m,n的最大公约数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2;……依次计算直至rn=0,此时所得到的rn-1即为所求的最大公约数。程序框图输入两个正整数m,nmn?r=mMODnr=0?m=nn=r结束开始x=nn=mm=x输出n否是否是程序:INPUT“m=”;mINPUT“n=”;nIFmnTHENx=mm=nn=xENDIFr=mMODnWHILEr0r=mMODnm=nn=rWENDPRINTmEND更相减损术更相减损术求最大公约数的步骤如下:可半者半之,不可半者,副置分母·子之数,以少减多,更相减损,求其等也,以等数约之。翻译出来为:第一步:任意给出两个正数;判断它们是否都是偶数。若是,用2约简;若不是,执行第二步。第二步:以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。(1)辗转相除法与更相减损术区别联系①都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。②从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到(2)秦九韶算法与排序掌握秦九韶算法的原理=anvk=vk-1+an-k(k=1,2,3,……n)(3)进位制进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。易混易错:表示各种进位制数一般在数字右下脚加注来表示,如111001(2)表示二进制数,34(5)表示5进制数.二、典型例题剖析1.判断某一事情是否为算法方法归纳:(1)判断某一问题是否为算法要把握算法的五个特征:①有穷性②确定性③可行性④不惟一性⑤普遍性例1.下列关于算法的说法中正确的个数有()①求解某一类问题的算法是唯一的②算法必须在有限步操作之后停止③算法的每一步操作必须是明确的,不能有歧义或模糊④算法执行后一定产生确定的结果A.1B.2C.3D.4主要过程:由算法的五个特征可以解得只有①是错误的,解答某一类问题的算法时不惟一的。强调内容:把握好算法的五个特征。2.就某一问题画出程序框图并写出算法方法归纳:(1)画程序框图时一定要明确图中各个符号的作用并能正确使用三种基本逻辑结构。(2)用程序设计语言描述算法时一定要注意有些符号与框图之中书写的不同。例2.设计算法求100991431321211的值.要求画出程序框图,写出用基本语句编写的程序.主要过程:强调内容:解答此题目是一定要注意循环终止的条件是i99而不是i100,因为这个数列共有99项3.讨论法画程序框图写程序方法归纳:先通过解决数学题的思想进行讨论,再画图写程序。例3、画出解关于x的不等式ax+b0(a,b∈R)的流程图及程序。开始i=1s=0s=s+1/(i*(i+1))i=i+1i99??????输出s结束INPUTa,bIFa=0THENIFb>0THENPRINT无解ELSEPRINTx为全体实数ELSEIFa>0THENPRINTbxa-<ELSEPRINTbxa->ENDIFENDi=1s=0DOs=s+1/(i*(i+1))i=i+1LOOPUNTILi99PRINTsEND主要过程:如上强调内容:注意讨论时要全面,不但要讨论a还要讨论b.4.实际应用:方法归纳:先通过解决数学题的思想进行讨论,再画图写程序例4、某城市现有人口总数为100万人,如果年自然增长率为1.2%,试解答下列问题:(1)写出该城市人口数y(万人)与年份x(年)的函数关系式;(2)用程序表示计算10年以后该城市人口总数的算法;(3)用流程图表示计算大约多少年以后该城市人口将达到120万人的算法。主要过程:(1)xy012.1100(2)程序如下:S=100I=1.2X=0WHILES120S=S*IX=X+1WENDPRINTXEND5.求高次多项式的值方法归纳:能够熟练利用秦九韶算法原理求高次多项式的值v0=anvk=v1k+akn(k=1,2,3,……n)用秦九韶算法计算543254321fxxxxxx主要过程:a5=5,a4=4,a3=3,a2=2,a1=1,a0=1v0=a5=5v1=v0*2+a4=5*2+4=14v2=v1*2+a3=14*2+3=31开始结束S=100I=1.2X=0S=S*IX=X+1S120??输出XNY输入a,b,cabaca=b输出aa=cYYNN第1题v3=v2*2+a2=31*2+2=64v4=v3*2+a1=64*2+1=129v5=v4*2+a0=129*2+1=259所以f(2)=259强调内容:注意在运算过程之中vk=v1k+akn(k=1,2,3,……n)的正确应用三、高考链接(2008广东)1.阅读右上的程序框图。若输入m=4,n=3,则输出a=__12__,i=_3____。(注:框图中的赋值符号“=”也可以写成“←”或“:=”)(2007山东)2.阅读如上右边的程序框图,若输入的n是100,则输出的变量S和T的(D)A.2500,2500B.2550,2550C.2500,2550D.2550,250