数学直通车数学直通车--------算法初步算法初步知识体系知识体系第一节第一节 算法与程序框图算法与程序框图基础梳理基础梳理1. 算法通常是指可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是确定的和能执行的,而且能够在有限步之内完成.2. 程序框图(1)定义:程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.(2)说明:在程序框图中,一个或几个程序框的组合表示算法中的一个步骤;带有方向箭头的流程线将程序框连接起来,表示算法步骤的执行顺序.3. 三种基本逻辑结构条件结构循环结构定义由若干个依次执行的步骤组成的,这是任何一个算法都离不开的基本结构算法的流程根据条件是否成立有不同的流向,条件结构就是处理这种过程的结构从某处开始,按照一定的条件反复执行某些步骤的情况,反复执行的步骤称为循环体程序框图 名称 顺序结构 条件结构 循环结构内容定义由若干个依次执行的步骤组成,这是任何一个算法都离不开的基本结构算法的流程根据条件是否成立有不同的流向,条件结构就是处理这种过程的结构从某处开始,按照一定的条件反复执行某些步骤的情况,反复执行的步骤成为循环体程序框图典例分析典例分析题型一题型一 算法的设计算法的设计【例1】已知点 和直线l:Ax+By+C=0(A≠0),求点 到直线l的距离d,写出其算法并画出程序框图.分析 由公式 可知,欲求点到直线的距离,要先求 及 ,代入 ,用顺序结构解决.解 算法如下:第一步,输入点P的坐标x0,y0及直线方程的系数A、B、C.第二步,计算 第三步,计算 第四步,计算 第五步,输出d.程序框图:学后反思 给出一个问题,设计算法时应注意:(1)认真分析问题,联系解决此问题的一般数学方法;(2)综合考虑此类问题中可能涉及的各种情况;(3)将解决问题的过程划分为若干个步骤;(4)借助变量或参数用数学表达式表述算法;(5)用简练的语言将各个步骤表示出来.举一反三举一反三1. 写出求解方程a +x+c=0的一个算法.解析解析 第一步,判断a是否等于零.若a=0,则解x=-c;若a≠0,则执行第二步.第二步,判断判别式Δ=1-4ac是否小于零.若Δ<0,则原方程无实数解;若Δ≥0,则执行第三步.第三步,计算第四步,输出方程的实数解.题型二题型二 算法的顺序结构算法的顺序结构【例2】如图,设计算法求底面边长为4,侧棱长为5的正四棱锥的侧面积及体积,并画出相应的程序框图.分析 方法一:先求体积V= Sh,S= ,高h= ,R= a,斜高h′= ,从而求得 =4× ah′=2ah′.方法二:推导出利用a和l表达的侧面积及体积公式,然后代入求解.解 由方法一可得算法一:第一步,a=4,l=5.第二步,R= a.第三步,h= ,S= .第四步,V= Sh.第五步,输出V.第六步,h′= .第七步, =2ah′.第八步,输出 .由方法二得算法二:第一步,a=4,l=5.第二步,S侧=2a .第三步,V= 第四步,输出S侧、V.算法一程序框图如图1,算法二程序框图如图2. 图1 图2学后反思 通过本题体会算法的思想,比较两种算法的优点.利用算法和程序框图,能够规范思维,可以锻炼书面表达的能力,先求什么,后求什么,无论是用算法表达,还是用程序框图表达,都是一目了然,非常清晰的,所以把这种方法用于我们平时的做题会使解题的思路简练、易懂、有逻辑性.2. 写出求过两点 (2,0), (0,3)的直线方程的一个算法,并画出程序框图.解析解析 算法如下:第一步,a=2,b=3.第二步,输出结果程序框图:题型三题型三 算法的条件结构算法的条件结构【例3】“特快专递”是目前人们经常使用的异地邮寄信函或托运物品的一种快捷方式,某快递公司规定甲、乙两地之间物品的托运费用根据下列方法计算:f= 0.53ω (ω≤50), 50×0.53+(ω-50)×0.85 (ω>50).其中f(单位:元)为托运费,ω为托运物品的重量(单位:kg).试设计计算费用f的算法,并画出程序框图.分析 这是一个实际问题,求费用f的计算公式随物品的重量ω的变化而不同,因此要对物品重量ω进行判断,比较ω与50的大小,然后由相应关系式求出费用f并输出.解 算法如下:第一步,输入ω.第二步,如果ω≤50,那么f=0.53ω;否则,f=50×0.53+(ω-50)×0.85.第三步,输出f.程序框图:学后反思 利用条件结构解决算法问题时,要引入判断框,要根据题目的要求引入一个或多个判断框,而判断框内的条件不同,对应的下一图框中的内容和操作要相应地进行变化,故要逐个分析判断框内的条件.3. 儿童乘坐火车时,若身高不超过1.1 m,则无需购票;若身高超过1.1 m,但不超过1.5 m,可买半票;若超过1.5 m,应买全票.请以此设计一个算法并画出相应的程序框图.解析解析 算法如下:第一步,测量儿童身高h.第二步,如果h≤1.1,那么免费乘车;否则,如果h≤1.5,那么买半票乘车;否则买全票.程序框图如图所示.举一反三举一反三题型四题型四 算法的循环结构算法的循环结构【例4】(12分)某企业2008年的生产总值为200万元,技术创新后预计以后每年的生产总值将比上一年增加5%,问:最早哪一年的生产总值将超过300万元?试写出解决该问题的一个算法,并画出相应的程序框图.分析分析 设第n年后该企业生产总值为a,则 ,此时为(2 008+n)年.解解 算法设计如下:第一步,n=0,a=200,r=0.05.第二步,T=ar(计算年增量).第三步,a=a+T(计算年产量)…………………………….3′第四步,如果a≤300,那么n=n+1,重复执行第二步;如果a>300,则执行第五步.第五步,N=2 008+n.第六步,输出N……………………………………………6′程序框图:方法一: 方法二: ……………12′ …………12′学后反思学后反思 注意直到型循环结构和当型循环结构的本质区别,直到型循环结构先执行a=a+T,再判断a>300,若不满足,则执行循环体,直到满足才输出N;而当型循环结构先判断a≤300,若成立,则执行循环体,直到a≤300不成立才结束循环,输出N.举一反三举一反三4.(2009·江苏)如图是一个算法的流程图,最后输出的W= .答案: 22解析: 第一次:T=1,S=1 -0=1;第二次:T=3,S=3 -1=8;第三次:T=5,S=5 -8=17,此时满足S≥10,所以W=S+T=17+5=22.易错警示易错警示【例1】设计一个程序框图,求 的值.错解错解 如图1,图2.错解分析错解分析 图1的错误在于i=i+1,步长为1,计算的是图2的错误在于先执行i=i+2而后执行 ,计算的是正解正解【例2】已知函数 请设计一个程序框图求函数值y.错解 程序框图如图1,图2. 图1 图2错解分析 图1表示的函数为故错误.图2的错误在于被判断的条件x=0放在菱形框外,应放在菱形框里,同时菱形判断框只能有一个进口和两个出口. 正解 程序框图如图.考点演练考点演练答案: A>0?V=S+T10. (2009·辽宁改编)某店一个月的收入和支出总共记录了N个数据 ,其中收入记为正数,支出记为负数.该店用如图所示的程序框图计算月总收入S和月净盈利V,那么在图中空白的判断框和处理框中,应分别填入,.解析: 分析题意并结合框图可知:S代表收入,T代表支出,∴当A= >0时,累加到S,反之,累加到T,故判断条件为A>0?;则知T<0,∴总利润V=S+T.第第1010题图题图11. 用 代表第i个学生的学号, 代表第i个学生的成绩(i=1,2,3,…,50).设计程序框图打印出不低于80分的全部学生的学号和成绩.解析解析 12. 在国家法定工作日内,每周满工作量的时间为40小时,若每周工作时间不超过40小时,则每小时工资8元;如因需要加班,超过40小时的每小时工资为10元.某公务员在一周内工作时间为x小时,但他须交纳个人住房公积金和失业保险(这两项费用为每周总收入的10%).试分析算法步骤并画出其净得工资y元的算法的程序框图.(注:满工作量外的工作时间为加班)解析解析 算法如下:第一步,输入工作时间x小时.第二步,若x≤40,则y=8x×(1-10%);否则,y=40×8(1-10%)+(x-40)×10(1-10%).第三步,输出y值.程序框图:第二节第二节 基本算法语基本算法语句句1. 三种语句的一般格式和功能语句一般格式功能输入语句输出语句赋值语句INPUT“提示内容”;变量 输入信息 PRINT“提示内容”;表达式 输出结果 变量=表达式 将表达式的值赋给变量 2. 条件语句(1)定义:算法中的 由条件语句来表达.(2)条件语句的格式及框图 ①IF—THEN格式条件结构基础梳理基础梳理②IF—THEN—ELSE格式3. 循环语句(1)算法中的循环结构是由循环语句来实现的.(2)循环语句的格式及框图. ①UNTIL语句② WHILE语句 (3)WHILE语句和UNTIL语句之间的区别与联系WHILE语句 UNTIL语句 区别 执行循环体前测试条件,当条件为真时执行循环体,当条件为假时终止循环,可能不执行循环体 执行循环体后测试条件,当条件为假时执行循环体,当条件为真时终止循环,最少执行一次循环体 联系 可以相互转换,LOOP UNTIL(条件)相当于WHILE(反条件) 题型一题型一 输入、输出和赋值语句输入、输出和赋值语句【例1】某企业为职工计算工资时按时间计,每月的总工资=每月劳动时间×每小时工资,从总工资中扣除15%作为医疗保险金,再以总工资的5‰作为奖金,要求输入劳动时间和每小时工资数,输出每位职工应发工资.设计算法并画出程序框图,写出程序.分析(1)设出每小时工资,每月劳动时间,每月总工资,先求出每月总工资,再求应发工资.(2)在程序编写中赋值语句是其中关键的基本语句.解 算法如下: 第一步,输入月劳动时间t和每小时工资a. 第二步,求每月总工资y=每月劳动时间t×每小时工资a. 第三步,求应发工资z=每月总工资y×(1-15%)+y×5‰. 第四步,输出应发工资z.典例分析典例分析 程序框图: 程序: INPUT t,a y=a*t z=0.855*y PRINT z END学后反思 编写程序的关键是先搞清问题的算法,特别是算法的结构,然后确定采用哪一种算法语句.本题实质是求一个函数对应于自变量的函数值,故可用顺序结构实现算法. 举一反三举一反三1.(2009·临沂模拟)下列赋值语句中正确的有( )①3=B;②x-y=2;③A=B=-2;④T=T+T.A. 0个 B. 1个 C. 2个 D. 3个解析:①错,赋值语句中变量不能给常数赋值;②错,赋值语句不能给一个表达式赋值;③错,赋值语句只能给一个变量赋值;④正确.答案:B题型二题型二 条件语句条件语句【例2】如图,已知底角45°的等腰梯形ABCD,底边BC长为7 cm,腰长为22 cm,当一条垂直于底边BC(垂足为F)的直线l从B点开始由左至右移动(与梯形ABCD有公共点)时,直线l把梯形分成两部分,令BF=x(0≤x≤7),左边部分的面积为y,求y与x之间的函数关系式,并画出程序框图,写出程序.分析 因为面积y随着x的增大是求不同图形的面积和,所以要用分段函数求y与x之间的函数关系式,然后在此基础上画出程序框图,写出程序.解 过点A、D分别作AG⊥BC,DH⊥BC,垂足分别是G、H.∵四边形ABCD是等腰梯形,底角是45,AB=22 cm,∴BG=AG=DH=HC=2 cm.又BC=7 cm,∴AD=GH=3 cm, 所以程序框图:程序一:INPUT “x=”;xIF x>=0 AND x<=2 THENy=0.5*x*x ELSE IF x<=5 THEN y=2*x-2 ELSE y=-0.5*(x-7)∧2+10 END IFEND IFPRINT yEND•程序二:•INPUT “x=”;x•IF x>=0 AND x<=2 THEN• y=0.5*x*x•END IF•IF x>2 AND x<=5 THEN• y=2*x-2•END IF•IF x>5 AND x<=7 THEN• y=-0.5*(x-7)∧2+10•END IF•PRINT y•END•学后反思 条件语句一般用在需要对条件进行判断的算法设计中.在求分段函数的函数值时,由于自变量x的值不同,其函数值的求法也不同,故先对x的值进行判断,然后根据其具体值选择不同的计算方法,故用条件语句进行算法设计. 举一反三举一反三2. 到银行办理个人异地汇款(不超过100万)时,银行要收取一定的手续费,汇款额不超过100元,收取1元手续费;超过100元但不超过5 000元,按汇款额的1%收取;超过5 000元,一律收取50元手续费.试用条件语句描述汇款额为x元时,银行收取手续费为y元的过程,画出程序框图并写出程序.解析:依题意,手续费y与汇款额x之间的关系式为(单位:元) 程序框图:程序:INPUT “汇款金额为”;xIF x>0 AND x<=100 THEN y=1ELSE IF x<=5 000 THEN y=0.01*x ELSE y=50 END IF END IFPRINT “手续费为”;yEND 题型三题型三 循环语句循环语句【例3】(2010·青岛模拟)2008年9月发生了“三鹿奶粉污染”事件,主要是在一些企业生产的奶制品中检测出含三聚氰胺,三聚氰胺是一种有毒的化工原料,俗称“假蛋白”.蛋白质主要由氨基酸组成,蛋白质平均含氮量为16%左右,而三聚氰胺的含氮量为66%左右,不法分子往往在奶制品中加三聚氰胺主要是因为它能冒充蛋白质.2008年9月16日国家质检总局公布了22家企业生产的婴幼儿配方奶粉中含有三聚氰胺,其中最高含量为2 563 mg/kg,最低含量为0.09 mg/kg.设计一个求含量高于20 mg/kg的婴幼儿配方奶粉的平均含量的程序框图,并写出程序.分析(1)由于涉及到22家企业,因此使用循环结构来控制企业数;(2)用条件结构来判断含量是否高于20,同时统计高于20 mg/kg的总和与企业数. 学后反思 在解决实际问题时,要正确理解其中的算法思想,根据题目写出其关系式,再写出相应的算法.在循环语句中,也可以嵌套条件语句,甚至是循环语句,此时需要注意嵌套这些语句需要保证语句的完整性,否则就会造成程序无法执行.•解 程序框图: 程序:S=0M=0i=1DO INPUT x IF x>20 THEN S=S+x M=M+1 END IF i=i+1LOOP UNTIL i>22P=S/MPRINT PEND 举一反三举一反三3.高一(1)班共60人,市青少年保护中心来抽样检测同学们的身体素质,要求学号能被3整除的同学参加体检,已知学生的学号从1到60号.请画出输出参加同学学号的程序框图,并编写程序 解析:程序框图如图所示: 程序如下: S=0 WHILE S<60 S=S+3 PRINT S WEND END 题型四题型四 算法语句的实际应用算法语句的实际应用【例4】(12分)青年歌手电视大奖赛共有10名选手参加,并请了12名评委,在计算每位选手的平均分数时,为了避免个别评委所给的极端分数的影响,必须去掉一个最高分和一个最低分后再求平均分数.试设计一个算法解决该问题,要求画出程序框图,写出程序(假定分数采用10分制,即每位选手的分数最低为0分,最高为10分).分析 此题难度较大,利用循环结构,而循环结构中还有条件结构,要分清层次.最好先写算法分析再画程序框图,最后写出程序 解 算法分析:由于共有12名评委,所以每位选手会有12个分数,我们可以用循环结构来完成这12个分数的输入,同时设计累加变量求出这12个分数之和.本题的关键在于从这12个输入的分数中找出最大数与最小数,以便从总分中减去这两个数.由于每位选手的分数都介于0分和10分之间,故我们可以先假设其中的最大数为0,最小数为10,然后每输入一个评委的分数,就进行一次比较.若输入的数大于0,就将其代替最大数;若输入的数小于10,就用它代替最小的数;依次比较下去,就能找出这12个数中的最大数与最小数,循环结束后,从总和中减去最大数与最小数,再除以10,就得到该选手最后的平均分数.学后反思学后反思 在解决实际问题时,要正确地理解其中的算法思想,根据题目写出其关系式,再写出相应的算法步骤,画出程序框图,最后准确地编写出程序,要注意总结算法、程序框图、程序三者之间的关系.程序框图:•程序如下:•S=0•k=1•max=0•min=10•DO• INPUT x• S=S+x• IF max<=x THEN• max=x• END IF• IF min>=x THEN• min=x• END IF• k=k+1•LOOP UNTIL k>12•S1=S-max-min•a=S1/10•PRINT a•END ………………………12′……………6′ 举一反三举一反三4.用分期付款的方式购买价格为1 150元的冰箱,如果购买时先付150元,以后每月付50元,再加上欠款的利息.若一个月后付第一个月的分期付款,月利率为1%,那么购买冰箱的钱全部付清后,实际共付出款额多少元?画出程序框图,写出程序.解析:购买时付款150元,余款1 000元分20次付清,每次的付款数组成一个数列{ }, =50+(1 150-150)×1%=60, =50+(1 150-150-50)×1%=59.5,…… =50+[1 150-150-(n-1)×50]×1%=60- (n-1)(n=1,2,3,…,20),∴ =60- ×19=50.5.总和S=150+60+59.5+…+50.5. 程序框图:•程序如下:•a=150•m=60•S=0•S=S+a•i=1•WHILE i<=20• S=S+m• m=m-0.5• i=i+1•WEND•PRINT S•END【【例例】】已知分段函数 编写程序,输入自变量的值,输出其对应的函数值y.错解 程序如下: INPUT x IF x<0 THEN y=-x+1ELSE IF x=0 THEN y=0ELSE y=x+1 END IFEND错解分析(1)每个IF都必须有一个END IF 与之匹配;(2)错解无输出语句.易错警示易错警示程序如下:程序如下: INPUT x IF x<0 THEN y=-x+1 ELSE IF x=0 THEN y=0 ELSE y=x+1 END IF END IF PRINT yEND正 解10.(2009·东营模拟)下面程序运行后输出的结果为 .x=5y=-20IF x<0 THEN x=y-3ELSE y=y+3END IFPRINT x-y,y-xEND解析:x=5,不满足条件x<0,则执行y=y+3,即y=-17, 故x-y=5-(-17)=22,y-x=-17-5=-22.答案:22,-22考点演练考点演练11. 元旦期间,某商场搞挂历促销活动:原价每本20元,购买5到9本按9折收费,购买10本或10本以上按8折收费,画出收费的程序框图,并写出相应的程序.解析:程序框图:•程序:•INPUT“x=”;x•IF x<5 THEN• y=20*x•ELSE• IF x>=10 THEN• y=20*0.8*x• ELSE• y=20*0.9*x• END IF•END IF•PRINT y•END12. 2008年某地森林面积为1 000 ,且每年增长5%,到哪一年该地森林面积超过2 000 .请设计一个程序,并画出程序框图.解析:需要一个累加变量和一个计数变量,将累加变量的初值设为1 000,计数变量从0开始取值.程序框图:程序:P=1 000N=0DO P=P*(1+0.05) N=N+1LOOP UNTIL P>2 000N=2008+NPRINT NEND。