1、基本算法语句编稿:丁会敏 审稿: 【学习目标】1、正确理解输入语句、输出语句、赋值语句的结构.2、会写一些简单的程序.3、掌握赋值语句中的“=”号的作用.4、正确理解条件语句和循环语句的概念,并掌握其结构的区别与联系.5、会应用条件语句和循环语句编写程序.【要点梳理】要点一:输入语句在程序中的INPUT语句就是输入语句.这个语句的一般格式是:INPUT “提示内容”;变量其中,“提示内容”一般是提示用户输入什么样的信息.INPUT语句不但可以给单个变量赋值,还可以给多个变量赋值,其格式为:INPUT “提示内容1,提示内容2,提示内容3,”;变量1,变量2,变量3,功能:可对程序中的变量赋值要
2、点诠释:“提示内容”提示用户输入什么样的信息,必须加双引号,提示内容“原原本本”的在计算机屏幕上显示,提示内容与变量之间要用分号隔开;变量是指程序在运行时其值是可以变化的量;一个语句可以给多个变量赋值,中间用“,”分隔,但最后的变量的后面不需要;要求输入的数据必须是常量,而不能是函数、变量或表达式;无计算功能.例如,输入一个学生数学,语文,英语三门课的成绩,可以写成:INPUT “数学,语文,英语”;a,b,c要点二:输出语句在程序中的PRINT语句是输出语句.它的一般格式是:PRINT “提示内容”;表达式同输入语句一样,表达式前也可以有“提示内容”.功能:可输出表达式的值,计算. 要点诠释
3、:“提示内容”提示用户输出什么样的信息,提示内容必须加双引号,提示内容要用分号和表达式分开;表达式是指程序要输出的数据,可以是变量、计算公式或系统信息;一个语句可以输出多个表达式,不同的表达式之间可用“,”分隔;有计算功能,可以输出常量、变量或表达式的值以及字符.要点三:赋值语句用来表明赋给某一个变量一个具体的确定值的语句.它的一般格式是:变量=表达式赋值语句中的“=”叫做赋值号.功能:先计算出赋值号右边表达式的值,然后把这个值赋给赋值号左边的变量,使该变量的值等于表达式的值.要点诠释:赋值号的左右两边不能对换,如“A=B”“B=A”的含义运行结果是不同的;格式中右边“表达式”可以是一个数据、
4、常量和算式,如果“表达式”是一个算式时,赋值语句的作用是先计算出“=”右边表达式的值,然后将该值赋给“=”左边的变量;赋值号左边只能是变量名字,而不能是表达式,如:2=X是错误的;不能利用赋值语句进行代数式的演算(如化简、因式分解等);对于一个变量可以多次赋值;有计算功能;赋值号与数学中的等号的意义是不同的.赋值号左边的变量如果原来没有值,则执行赋值语句后,获得一个值,如果已有值,则执行该语句后,以赋值号右边表达式的值代替该变量的原值,即将“原值”冲掉.要点四:条件语句算法中的条件结构是由条件语句来表达的,是处理条件分支逻辑结构的算法语句.它的一般格式是:(IF-THEN-ELSE格式)满足条
5、件?语句1语句2是否IF 条件 THEN语句1ELSE语句2END IF当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句1,否则执行ELSE后的语句2.其对应的程序框图为:(如上右图)在某些情况下,也可以只使用IF-THEN语句:(即IF-THEN格式)满足条件?语句是否IF 条件 THEN语句END IF计算机执行这种形式的条件语句时,也是首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句,如果条件不符合,则直接结束该条件语句,转而执行其他语句.其对应的程序框图为:(如上右图)要点诠释:条件语句的作用:在程序执行过程中,根据判断是否满足约
6、定的条件而决定是否需要转换到何处去.需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理.要点五:循环语句算法中的循环结构是由循环语句来实现的.对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构.即WHILE语句和UNTIL语句.1.WHILE语句的一般格式是:满足条件?循环体是否WHILE 条件循环体WEND其中循环体是由计算机反复执行的一组语句构成的.WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的.当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循
7、环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止.这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句.因此,当型循环有时也称为“前测试型”循环.其对应的程序结构框图为:(如上右图)2.UNTIL语句的一般格式是:满足条件?循环体是否DO循环体LOOP UNTIL 条件其对应的程序结构框图为:(如上右图)直到型循环又称为“后测试型”循环,从UNTIL型循环结构分析,计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时
8、,不再执行循环体,跳到LOOP UNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句.要点诠释当型循环与直到型循环的区别当型循环是先判断后执行,直到型循环是先执行后判断;当型循环用WHILE语句,直到型循环用UNTIL语句;对同一算法来说,当型循环和直到型循环的条件互为反条件【典型例题】类型一:输入语句、输出语句和赋值语句例1阅读下列程序,并回答问题(1)程序 (2)程序INPUT A,B,CA=A+BB=BAC=CA*BPRINT “C=”;CENDINPUT a,bc=abb=a+cbPRINT a,b,cEND (1)中若输入1,2,则输出的结果为_;(2)中若输入3,2
9、,5,则输出的结果为_【答案】(1)1,2,1(2)C=3【解析】 分别将输入的值代入程序中逐步计算即可,要注意赋值前后变量值的变化(1)阅读程序,由a=1,b=2,c=ab可得c=1;又根据语句b=a+cb,可得b=2;所以程序运行后的结果为:1,2,1(2)阅读程序,由A=3,B=2,C=5,A=A+B,可得A=5,又根据语句B=BA,可得B=3,又C=CA*B,所以输出结果为C=3 【点评】赋值语句在给变量赋值时,先计算赋值号右边的式子然后赋值给赋值号左边的变量;另外可以给一个变量先后多次赋不同的值,但变量的取值只与最后一次赋值有关解决此类问题时要时刻把握某个变量在该程序中充当的角色,时
10、刻关注其值的改变情况举一反三:【变式1】当x的值为5时,语句PRINT “x=”;x在屏幕上的输出结果为( )A5=5 B5 C5=x Dx=5 【答案】 D【变式2】 写出下列语句描述的算法的输出结果a=5b=3c=(a+b)/2d=c*cPRINT “d=”;dEND (1)a=1b=2c=a+bb=a+cbPRINT “a=,b=,c=”;a,b,cEND (2)a=10b=20c=30a=bb=cc=aPRINT “a=,b=,c=”;a,b,cEND (3)【答案】(1)16 (2)a=1 b=2 c=3(3)a=20 b=30 c=20【解析】 (1)a=5,b=3,d=c2=16
11、(2)a=1,b=2,c=a+b,c=3又将a+cb赋值给b,b=1+32=2(3)由b=20及a=b知a=20,由c=30及b=c知b=30,由a=30及c=a知c=20【点评】 此题主要考查对三种语句的理解,要对三种语句理解透彻注意写出每一步的运算结果,以减少错误例2已知一个正三棱柱的底面边长为a,高为h,试设计一个程序来求解这个正三棱柱的表面积和体积,并画出程序框图【解析】 由题意,已知底面边长,可求出底面积,正三棱柱的高已知,体积易得;由底面边长和高,可求侧面积,则表面积易解程序框图如图所示,程序如下:INPUT “a=”;aINPUT “h=”;hS=SQR(3)*a24V=S*hC
12、=3*aT=C*hP=T+2*SPRINT “体积:”;VPRINT “表面积:”;PEND【点评】这是一道立体几何与算法相结合的综合类题目首先要理清解题的步骤,要求正三棱柱的体积,可以利用公式V=Sh,所以要先求出正三棱柱的底面积,然后代入公式即可;正三棱柱的表面积等于各面的面积之和,所以还需求正三棱柱的侧面面积举一反三:【变式1】已知钱数x(不足10元),要把它用1元、5角、1角、1分的硬币表示,若要用尽量少的硬币个数表示x,设计一个算法,求各硬币的个数 【解析】其程序为:INPUT xx=x*100a=x100b=(xa*100)50c=(xa*100b*50)10d=(xa*100b*
13、50c*10)1PRINT a,b,c,dEND例3读下面的程序,根据程序画出程序框图INPUT “x=”;xINPUT “y=”;ym=x4n=2*yPRINT mPRINT nx=x+2y=y1PRINT xPRINT yEND【解析】 由程序可以看出,此程序共用INPUT输入语句、赋值语句和PRINT输出语句,因此根据程序画出程序框图,只要按顺序从上到下把输入、赋值、输出语句表达内容填入相应图框内即可故程序框图如图所示【点评】 算法语句和程序框图以不同的形式展示给我们,解决问题时要注意掌握算法语句和程序框图的相互转换举一反三:【变式1】以下是一个用基本算法语句编写的程序,根据程序画出其相
14、应的程序框图INPUT “x,y=”;x,yx=x2y=3*yPRINT x,yx=xyy=y1PRINT x,yEND【解析】程序框图如图所示 该程序主要利用了输入语句、赋值语句和输出语句进行算法描述,只要按顺序从上到下将输入语句、赋值语句、输出语句表达的内容填入相应的图框即可例4 经过市场调查分析,2008年第一季度内,某地区对某件商品的需求量为12000件,为保证商品不脱销,商家决定在月初时将商品按相同的量投放市场,已知年初商品的库存量为50000件,用S表示商品的库存量,请设计一个算法,求出第一季度结束时商品的库存量,编写其程序【解析】 依题意,每月应投放市场120003=4000(件
15、)这样库存量随月份的变化情况如下表:月份库存一月二月三月S460004200038000 算法的程序框图如图所示 其程序如下:S=50000S=S4000S=S4000S=S400PRINT “S=”;SEND【点评】 利用赋值语句可对变量多次赋值,实现代数中的四则运算但代数中的运算很多都是方程、不等式的形式,这是赋值语句所不能实现的,要写成类似于函数y=f (x)的形式才能构造成赋值语句的形式,从而用算法程序处理这是解决这类问题的关键举一反三:高清:算法与程序框图 397425 知识讲解1中的例2【变式1】“鸡兔同笼”问题是我国古代著名的趣题之一大约在1500年前,孙子算经中就记载了这个有趣
16、的问题书中这样描述:今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔几何?试设计一个算法,输入鸡兔的头和鸡兔的脚的总数,分别输出鸡、兔的数量 【解析】先假设M只都是兔子,那么就4M只脚,这比N只脚多了(4MN)只脚,每只鸡比兔少2只脚,所以鸡的数量为,从而得到兔的数量为B=MA算法步骤如下:第一步,输入鸡和兔的总数量M第二步,输入鸡和兔的脚的总数量N第三步,鸡的数量为第四步,兔的数量为B=MA第五步,输出A,B,得出结果程序框图如图所示程序如下:INPUT “鸡和兔的总数量为:”;MINPUT “鸡和兔的脚的总数量为:”;NA=(4*MN)2B=MAPRINT “鸡的数量为:”;APRINT
17、“兔的数量为:”;BEND【变式2】“植树造林,防风抗沙”某沙漠地区在2010年年底有绿化带树林20000亩,该地区每年春天会种树400亩加以绿公,但同时每年冬天又会有总绿化面积的1%被沙漠化,问2013年年底该地区总绿化面积有多少亩?画出解决此问题的算法的程序框图,并写出程序【解析】该地区总绿化面积每年都在变化,可以设置一个变量来表示每年年底的绿化面积程序框图如图程序:S=20000S=(S+400)*(10.01)S=(S+400)*(10.01)S=(S+400)*(10.01)PRINT “2013年年底总绿化面积为”;SEND 【点评】利用赋值语句可以对同一变量进行多次赋值,程序输出
18、变量的最后值类型二:条件语句例5给出三个正整a,b,c,判断以这3个数为三条边边长的三角形是否存在,若存在,则求出其面积,请设计程序实现该功能,并画出相应的程序框图【解析】 由于不是任意三条线段都能构成三角形的三边,因此必须先判断三边是否满足任意两边之和大于第三边,即a+bc,a+cb,b+ca,这些是保证能组成三角形的必要条件经判断,如果满足上述条件,则按下面的公式计算三角形的面积,程序框图如图所示程序如下:INPUT a,b,cIF a+bc AND a+cb AND b+ca THENp=(a+b+c)/2S=SQR(p*(pa)*(pb)*(pc)PRINT “三角形的面积为”;SEL
19、SE PRINT “不能构成三角形”END IFEND【点评】 编程的一般步骤为:(1)算法分析:根据提供的问题利用数学及相关学科的知识,设计出解决问题的算法;(2)画出程序框图:依据算法分析,画出对应的程序框图;(3)写出程序:根据程序框图中的算法步骤,逐步把算法用相应的程序语句表达出来举一反三:【变式1】根据如图所示的伪代码,当输入分别为2,3时,最后输出的m的值是_【答案】3 【解析】由已知可知,为中的最大值,故最后输出的值为3.例6已知符号函数,试编写程序输入x的值,输出y的值,并画出程序框图【解析】 解法一(嵌套结构),如下图:INPUT xIF x0 THENy=1ELSEIF x
20、=0 THEN y=0ELSE y=1END IFEND IFPRINT yEND解法二(叠加结构),如下图:INPUT xIF x0 THENy=1END IFIF x=0 THEN y=0END IFIF x0 THENy=1END IFPRINT yEND【点评】:(1)条件结构的差异,造成程序执行的不同当输入x的值时,解法一中先判断外层的条件,依次执行不同的分支;而解法二中按程序中条件语句的先后依次判断所有的条件,满足哪个条件就执行哪个条件下的语句(2)条件语句的嵌套可以多于两层,表达算法步骤中的多重限制条件举一反三:【变式1】读下面的程序,并回答问题INPUT xIF x=2 THE
21、N y=x2ELSE IF x=5 THEN y=2*x3 ELSE y=1/x END IFEND IFPRINT yEND该程序的作用是输入x的值,输出y的值(1)画出该程序对应的程序框图;(2)若要使输入的x值与输出的y值相等,问这样的x值有几个? 【解析】由程序可知这是一个求的函数值的程序(1)程序对应的程序框图如图所示(2)x=x2,则x=0或x=1此时均满足x2若2x3=x,则x=3,满足2x5若,则x=1,不满足x5综上可知满足题设条件的x值有3个,即x=0或x=1或x=3 【变式2】 输入一个自然数N,求其被3除得到的余数,设计一个程序,并输出相应的信息 【解析】程序如下:IN
22、PUT “请输入一个自然数N;”;NM=N MOD3IF M=0 THEN PRINT “能被3整除”END IFIF M=1 THEN PRINT “余数为1”END IFIF M=2 THEN PRINT “余数为2”END IFEND例7 某商场对顾客实行优惠措施,若购物金额x在800元以上,则打八折;若购物金额x在500元以上,则打九折;否则不打折画出程序框图,要求输入购物金额x,输出实际付款额,并写出相应的程序【解析】 依照题意,实际付款额y与购物金额x的函数关系为: ,程序框图如图所示程序:INPUT “x=”;xIF x800 THEN y=0.8*xELSE IF x500 T
23、HEN y=0.9*x ELSE y=x END IFEND IFPRINT yEND 【点评】对于实际问题应先建立函数模型,然后设计算法,对自变量x的取值进行判断,这是应用条件语句的根据举一反三:【变式1】某市电信部门规定:拨打市内电话时,如果通话时间不超过3分钟,则收取通话费0.2元;如果通话时间超过3分钟,则超过部分以0.1形分钟收取通话费(t以分钟计,不足1分钟按1分钟计),问:如何设计一个计算通话费用的算法,画出程序框图并写出相应的程序? 【解析】我们令c(单位:元)表示通话费用,t(单位:分钟)表示通话时间,则有依上面分析可知解决这一问题的算法步骤如下:第一步:输入通话时间;第二步
24、:如果0t3,那么c=0.2,否则c=0.2+0.1(t3);第三步:输出费用c程序框图如图所示程序为:INPUT “通话时间为”;tIF t=3 AND t0 THENc=0.2ELSEc=0.2+0.1*(t3)END IFPRINT “通话费用为”;cEND类型三:循环语句高清:基本算法语句 例5例8试用两种语句写出计算1+2+3+2010的程序,并画出相应的程序框图【解析】 先设计出计数变量和累加变量S,依两种语句的特点分别写出,应注意各自的条件WHILE语句如下,程序框图如图所示:S=0i=1WHILE i=2010 S=S+i i=i+1WENDPRINT SEND UNTIL语句
25、如下,程序框图如图所示:S=0i=1DOS=S+ii=i+1LOOP UNTIL i2010PRINT SEND举一反三:【变式1】编写一个程序,计算135799的值(分别用两种循环语句) 【解析】方法一:利用当型循环得到如图l所示的程序框图 方法二:利用直到型循环得到如图2所示的程序图 利用当型(WHILE)循环语句编写程序如下:S=1i=3WHILE i=99S=S*ii=i+2WENDPRINT SEND 利用直到型(UNTIL)循环语句编写程序如下:S=1i=3DOS=S*ii=i+2LOOP UNTIL i99PRINT SEND例9某商场第一年销售计算机5000台,如果平均每年销售
26、量比上一年增加10%,那么从第一年起,大约几年可使总销售量达到30000台?【解析】 根据题意,每年销售量比上一年增加的百分率相同,设总销售量为S,n年达到30000台第一年销售了5000台;第二年销售了5000+500010%=5000(1+10%)(台);第三年销售了5000(1+10%)+5000(1+10%)10%=5000(1+10%)2(台);第n年销售了5000(1+10%)n1(台)前n年的总销售量S=5000+5000(1+10%)+5000(1+10%)2+5000(1+10%)n1(台)程序框图如图所示程序:m=5000S=0i=0WHILE S30000 S=S+m m
27、=m*(1+0.1) i=i+1WENDPRINT iEND【点评】(1)循环条件是总销售量小于30000台(2)本题中第n年销售量为5000(1+10%)n1台(3)S表示总销售量,即前n年销售量之和 举一反三:【变式1】 一个小球从100 m的高度落下,每次落地后又反跳回原高度的一半,再落下,在第10次落地时,小球共经过多少路程? 【解析】第1次下落的高度h1=100 m; 第2次下落的高度; 第3次下落的高度; 第10次下落的高度所以递推关系是h1=100,n=1,2,3,9到第10次落地时,共经过的路程为s=h1+2h2+2h3+2h10=2(h1+h2+h10)h1,故可将s作为累加变量,i作为计数变量程序框图如图所示根据以上程序框图,可设计程序如下:s=0h=100i=1WHILE i=10 s=s+2h h=h/2 i=i+1WENDs=s100PRINT sEND