1、第十五单元 算法初步,知识体系,第一节 算法与程序框图,基础梳理,1.算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤或序列能够解决一类问题.2.程序框图定义:用一些通用图形符号构成一张图来表示算法.,3. 三种基本逻辑结构,典例分析,题型一 算法的设计,【例1】已知点 和直线l:Ax+By+C=0(A0),求点 到直线l的距离d,写出其算法并画出程序框图.,分析 由公式 可知,欲求点到直线的距离,要先求 及 ,代入 ,用顺序结构解决.,解 算法如下:S1,输入点P的坐标x0,y0及直线方程的系数A、B、C.S2,计算
2、 S3,计算 S4,计算 S5,输出d.,程序框图:,学后反思 给出一个问题,设计算法时应注意:(1)认真分析问题,联系解决此问题的一般数学方法;(2)综合考虑此类问题中可能涉及的各种情况;(3)将解决问题的过程划分为若干个步骤;(4)借助变量或参数用数学表达式表述算法;(5)用简练的语言将各个步骤表示出来.,举一反三,1. 写出求解方程a +x+c=0的一个算法.,解析 S1,判断a是否等于零.若a=0,则解x=-c;若a0,则执行S2.S2,判断判别式=1-4ac是否小于零.若50).其中f(单位:元)为托运费,为托运物品的重量(单位:kg).试设计计算费用f的算法,并画出程序框图.,分析
3、 这是一个实际问题,求费用f的计算公式随物品的重量的变化而不同,因此要对物品重量进行判断,比较与50的大小,然后由相应关系式求出费用f并输出.,解 算法如下:S1,输入.S2,如果50,那么f=0.53;否则,f=500.53+(-50)0.85.S3,输出f.程序框图:,学后反思 利用条件结构解决算法问题时,要引入判断框,要根据题目的要求引入一个或多个判断框,而判断框内的条件不同,对应的下一图框中的内容和操作要相应地进行变化,故要逐个分析判断框内的条件.,3. 儿童乘坐火车时,若身高不超过1.1 m,则无需购票;若身高超过1.1 m,但不超过1.5 m,可买半票;若超过1.5 m,应买全票.
4、请以此设计一个算法并画出相应的程序框图.,解析 算法如下:S1,测量儿童身高h.S2,如果h1.1,那么免费乘车;否则,如果h1.5,那么买半票乘车;否则买全票.程序框图如图所示.,举一反三,题型四 算法的循环结构,【例4】(12分)某企业2008年的生产总值为200万元,技术创新后预计以后每年的生产总值将比上一年增加5%,问:最早哪一年的生产总值将超过300万元?试写出解决该问题的一个算法,并画出相应的程序框图.,分析 设第n年后该企业生产总值为a,则 ,此时为(2 008+n)年.,解 算法设计如下:S1,n=0,a=200,r=0.05.S2,T=ar(计算年增量).S3,a=a+T(计
5、算年产量).3S4,如果a300,那么n=n+1,重复执行第二步;如果a300,则执行第五步.S5,N=2 008+n.S6,输出N6,程序框图:方法一: 方法二: 12 12,学后反思 注意直到型循环结构和当型循环结构的本质区别,直到型循环结构先执行a=a+T,再判断a300,若不满足,则执行循环体,直到满足才输出N;而当型循环结构先判断a300,若成立,则执行循环体,直到a300不成立才结束循环,输出N.,举一反三4.(2009江苏)如图是一个算法的流程图,最后输出的W= .,答案: 22,解析: 第一次:T=1,S=1 -0=1;第二次:T=3,S=3 -1=8;第三次:T=5,S=5
6、-8=17,此时满足S10,所以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放在菱形框外,应放在菱形框里,同时菱形判断框只能有一个进口和两个出口.,正解 程序框图如图.,考点演练,答案: A0?V=S+T,10. (2009辽宁改编)某店一个月的收入和支出总共记录了N个数据
7、 ,其中收入记为正数,支出记为负数.该店用如图所示的程序框图计算月总收入S和月净盈利V,那么在图中空白的判断框和处理框中,应分别填入,.,解析: 分析题意并结合框图可知:S代表收入,T代表支出,当A= 0时,累加到S,反之,累加到T,故判断条件为A0?;则知T0,【例2】已知函数y= 2x+1, x=0, -2 +4x, x0 THENy=2*x2-1ELSEIF x=0 THENy=2*x+1ELSEy=-2*x2+4*xEND IFEND IFPRINT yEND,学后反思 条件语句一般用在需要对条件进行判断的算法设计中.在求分段函数的函数值时,由于自变量x的值不同,其函数值的求法也不同,
8、故先对x的值进行判断,然后根据其具体值选择不同的计算方法,故用条件语句进行算法设计.,举一反三,2. 到银行办理个人异地汇款(不超过100万)时,银行要收取一定的手续费,汇款额不超过100元,收取1元手续费;超过100元但不超过5 000元,按汇款额的1%收取;超过5 000元,一律收取50元手续费.试用条件语句描述汇款额为x元时,银行收取手续费为y元的过程,画出程序框图并写出程序.,解析 依题意,手续费y与汇款额x之间的关系式为(单位:元) 1, 05 000.程序框图:,程序:INPUT “汇款金额为”;xIF x0 AND x=100 THEN y=1ELSE IF x=5000 THE
9、N y=0.01*x ELSE y=50END IFEND IFPRINT “手续费为”;yEND,题型三 循环语句,【例3】高一(2)班共有54名同学参加数学竞赛,现已有这54名同学的竞赛分数,请设计一个将竞赛成绩优秀同学的平均分输出的算法(规定90分以上为优秀),画出程序框图,并设计程序.,分析 由于涉及到54名同学的分数,因此可以使用循环结构控制输入分数,用条件结构来判断分数是否高于90分,同时统计高于90分的成绩的总和及人数,从而求平均分.但要准确设计判断框内的内容以免出错.,解 程序框图: 6,程序:S=0M=0i=1WHILE i90 THEN S=S+x M=M+1 END IF
10、 i=i+1WENDP=S/MPRINT PEND.12,学后反思 在解决实际问题时,要正确理解其中的算法思想,根据题目写出其关系式,再写出相应的算法.在循环语句中,可以嵌套条件语句,甚至是循环语句,此时需要注意嵌套这些语句需要保证语句的完整性,否则就会造成程序无法执行.,举一反三,3. 高一(1)班共60人,市青少年保护中心来抽样检测同学们的身体素质,要求学号能被3整除的同学参加体检,已知学生的学号从1到60号,请编写输出参加同学学号的一个程序.,解析 程序框图:,程序:S=0WHILE S60 S=S+3ENDS,题型四 算法语句的实际应用,【例4】(12分)青年歌手电视大奖赛共有10名选
11、手参加,并请了12名评委,在计算每位选手的平均分数时,为了避免个别评委所给的极端分数的影响,必须去掉一个最高分和一个最低分后再求平均分数.试设计一个算法解决该问题,要求画出程序框图,写出程序(假定分数采用10分制,即每位选手的分数最低为0分,最高为10分).,分析 此题难度较大,利用循环结构,而循环结构中还有条件分支结构,要分清层次.最好先写算法分析,再画程序框图,最后写出程序.,程序如下:S=0;k=1;max=0;min=10;if k=12x=input (x=);S=S+x;if max=xmax=x;endif min=xmin=x;endk=k+1;elseS1=S-max-min
12、;a=S1/10;enda12,.12,学后反思 在解决实际问题时,要正确地理解其中的算法思想,根据题目写出其关系式,再写出相应的算法步骤,画出程序框图,最后准确地编写出程序,同时要注意结合题意加深对算法的理解.,举一反三,4. 用分期付款的方式购买价格为1 150元的冰箱,如果购买时先付150元,以后每月付50元,加入欠款的利息,若一个月后付第一个月的分期付款,月利率为1%,那么购买冰箱的钱全部付清后,实际共付出款额多少元?画出程序框图,写出程序.,解析:购买时付款150元,余款1 000元分20次付清,每次的付款数组成一个数列an,a1=50+(1 150-150)1%=60,a2=50+
13、(1 150-150-50)1%=59.5,an=50+1 150-150-(n-1)501%=60- (n-1)(n=1,2,3,20),a20=60-1219=50.5.总和S=60+59.5+50.5.,程序如下:m=60;a=150;S=0;S=S+a;i=1;while i=20S=S+m;m=m-0.5;i=i+1;endS,程序框图如图:,考点演练,解析:该程序是求S=1+1+3+5+7+9=26.,答案:26,11. 某商场购物实行优惠措施,若购物金额x在800元以上,打8折;若购物金额x在500元以上,则打9折;否则不打折.设计流程图,要求输入购物金额x,输出实际交款额,写出
14、程序框图及程序.,解析 根据金额的多少用选择结构作出选择.程序框图:,程序如下:INPUT xIF x800 THEN y=0.8*xELSE IF x500 THEN y=0.9*x ELSE y=x END IFEND IFPRINT yEND,12. 2008年某地森林面积为1 000 ,且每年增长5%,到哪一年该地森林面积超过2 000 .请设计一个程序,并画出程序框图.,解析 需要一个累加变量和一个计数变量,将累加变量的初值设为1 000,计数变量从0开始取值.,程序框图:程序如下:P=1 000N=0DO P=P*(1+0.05) N=N+1LOOP UNTIL P2 000N=2 008+NPRINT NEND,