您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 3--几种基本语句解析
§3几种基本语句——条件语句算法中的条件结构是由条件语句来表达的,条件语句是处理条件分支逻辑结构的算法语句.条件语句的一般格式满足条件?语句是否只含一个“分支”的条件结构写成条件语句为If条件Then语句体EndIf当计算机执行这种形式的条件语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体,否则执行ENDIF之后的语句.满足条件?语句1语句2是否含两个“分支”的条件结构写成条件语句为IF条件THEN语句体1ELSE语句体2ENDIF当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体1,否则执行ELSE后的语句体2.例1设计算法,根据输入的x值,计算y的值,写出计算程序,y与x关系如下:x+1,x≥1;x2-x,x1.y={【分析】这是一个分段函数的求值问题,计算之前,要先对变量进行判断,因此,应选择If—Then语句来编写计算程序.【解析】程序如下:(1)输入x;(2)如果x≥1,则y=x+1(3)如果x1,则y=x2-x(4)输出y.算法:输入xIfx≥1Theny=x+1Elsey=x2-xEndIf输出y例2、某居民区的物业管理部门每月按以下方法收取卫生费:3人和3人以下的住户,每户收取5元;超过3人的住户,每户超出1人加收1.2元.试设计算法,根据输入的人数应收取的卫生费.分析:若用c(单位:元)表示应收取的费用,n表示住户的人数,则3.),3(215305nn.,n,c算法步骤:1.输入n;2.若n≤3,则c=5,3.输出c.算法框图:开始n≤3Yc=5输出cNc=5+1.2(n-3)否则c=5+1.2(n-3);c=5Elsec=5+1.2(n-3)EndIf输入n算法语句:Ifn≤3Then输入n输出c.例3.在音乐唱片超市里,每张唱片售价25元.顾客如果购买5张以上(含5张)唱片,则按照九折收费;如果顾客购买10张以上(含10张)唱片,则按照八五折收费.请用语句描述完成计费工作的算法,画出算法框图.解假如用变量a表示顾客购买的唱片数量,用变量C表示顾客要缴纳的金额.则这个算法可以表示为:1.输入a;2.对a进行判断:(1)若a5,则C=25a;(2)若5≤a10,则C=22.5a;(3)若a≥10,则C=21.25a;3.输出C.算法框图如右:开始输入aa5是C=25a否a10否C=21.25a是C=22.5a输出C结束解假如用变量a表示顾客购买的唱片数量,用变量C表示顾客要缴纳的金额.则这个算法可以表示为:1.输入a;2.对a进行判断:(1)若a5,则C=25a;(2)若5≤a10,则C=22.5a;(3)若a≥10,则C=21.25a.3.输出C.算法框图如右:开始输入aa5是C=25a否a10否C=21.25a是C=22.5a输出C结束下面用复合If语句描述这个算法算法:输入a;Ifa5ThenC=25aElseIfa10ThenC=22.5aElseC=21.25aEndIfEndIf输出C.抽象概括对于形如有图中所示的框图的算法,都可以用复合If语句来表示:If条件1Then语句1ElseIf条件2Then语句2Else语句3EndIfEndIf条件1语句2真假语句1条件2真假语句3【规律总结】若问题中出现几次条件判断,则在框图中会有几个判断框,同样的在程序语句中,也会有几重语句的嵌套;出口“EndIf”不能缺省,否则将会出现无法执行的错误.练习3.试用复合If语句表示闰年问题的算法.开始输入y否4整除y输出“y不是闰年”是100整除y否输出“y是闰年”是400整除y是否结束解:输入yIfyMod4=0ThenIfyMod1000Then输出“y是闰年”ElseIfyMod400=0Then输出“y是闰年”Else输出“y不是闰年”EndIfElse输出“y不是闰年”EndIfEndEndIf符合以下条件之一的年份即为闰年1.能被4整除而不能被100整除;2.能被400整除.符合以下条件之一的年份即为闰年1.能被4整除而不能被100整除;2.能被400整除.【想想】请试着用复合If语句描述“闰年问题”的算法。【解法二】算法语句描述:开始输入年份y400整除y100整除y4整除y输出y非闰年输出y是闰年否否否是是是结束输入年分数yIfyMod4=0ThenIfyMod1000Then输出“y是闰年”ElseIfyMod400=0Then输出“y是闰年”Else输出“y不是闰年”EndIfElse输出“y不是闰年”EndIfEndEndIf符合以下条件之一的年份即为闰年1.能被4整除而不能被100整除;2.能被400整除.【想想】请试着用复合If语句描述“闰年问题”的算法。【解法三】算法语句描述:开始输入年份y400整除y100整除y4整除y输出y非闰年输出y是闰年否否否是是是结束输入年分数ya=yMod4b=yMod100c=yMod400Ifc=0Then输出“y是闰年”ElseIfa=0Andb0Then输出“y是闰年”Else输出“y不是闰年”EndIfEndIf符合以下条件之一的年份即为闰年1.能被4整除而不能被100整除;2.能被400整除.【想想】请试着用复合If语句描述“闰年问题”的算法。【解法三】算法语句描述:开始输入年份y400整除y100整除y4整除y输出y非闰年输出y是闰年否否否是是是结束输入年分数ya=yMod4b=yMod100c=yMod400Ifc=0Then输出“y是闰年”ElseIfa=0Andb0Then输出“y是闰年”Else输出“y不是闰年”EndIfEndIf符合以下条件之一的年份即为闰年1.能被4整除而不能被100整除;2.能被400整除.【想想】请试着用复合If语句描述“闰年问题”的算法。【解法四】算法语句描述:开始输入年份y400整除y100整除y4整除y输出y非闰年输出y是闰年否否否是是是结束输入年分数ya=yMod4b=yMod100c=yMod400输出“y是闰年”ElseIf(a=0Andb0)orc=0Then输出“y不是闰年”EndIf四、课堂小结1.条件语句用来实现算法做的选择结构,在一些需要按给定条件进行比较、判断的问题中,如判断一个数的正负,比较两个数的大小,求分段函数的函数值,二分法求方程的根等,常用条件语句设计程序,有时要用到复合If语句来表示;2.条件语句的一般形式:If-Then-Else-EndIf如下图所示:If条件Then语句1Else语句2EndIf条件语句1真假语句23.复合If语句对于形如有图中所示的框图的算法,都可以用复合If语句来表示:If条件2ThenIf条件1Then语句1Else语句2Else语句3EndIfEndIf条件1语句2真假语句1条件2真假语句3【规律总结】若问题中出现几次条件判断,则在框图中会有几个判断框,同样的在程序语句中,也会有几重语句的嵌套;出口“EndIf”不能缺省,否则将会出现无法执行的错误.3循环语句1§For语句(1)适用范围:For语句适用于_________________的循环结构.(2)一般形式:自学导引For循环变量=___________________________预先知道循环次数初始值To终值循环体Next1.题型一For语句的应用编写一个计算12+32+52+…+9992的算法,画出算法框图,并用For语句描述这个算法.解For语句描述算法为:【例1】[思路探索]由题意(已知)―→先设计算法步骤―→画算法框图―→用For语句描述算法S=0Fori=1to999Step2S=S+i*iNext输出S算法框图如下:规律方法(1)For语句是表达循环结构最常见的语句之一,它适用于预先知道循环次数的循环结构,有些循环中如果不能直接看出循环次数,则可通过题目中的规律先求出循环次数再写循环语句.(2)使用For语句设计程序的一般思路:①确定循环次数;②把反复要做的工作,作为循环体放在For与Next之间.请阅读下列用For语句给出的算法,画出算法框图并说明该算法的处理功能.【训练1】S=0Fori=1To20Step2S=S+iNext输出S解算法的框图如图所示,因此,这个算法实际上处理的是求和S=1+3+5+7+9+11+13+15+17+19.1.For语句的一般格式是:For循环变量=初始值To终值Stepk循环体Next2.For语句表述的循环结构适用于___________________________.复习回顾预先知道循环次数的循环结构循环体i终值是否在一些循环结构中,预先不知道循环的次数的循环结构,要根据其它形式的终止条件停止循环,在这种情况下一般用DoLoop语句如何寻找满足2+4+6+8+…+n10000条件的最小整数?问题§3几种基本语句--------循环语句(2)1.DoLoop循环语句(1)DoLoop循环语句的一般格式是:Do循环体LoopWhile条件为真(2)DoLoop语句表述的循环结构适用于预先不知道循环次数,要根据其他形式的终止条件停止循环.计算机执行DoLoop语句时,先执行Do和LoopWhile之间的循环体,然后判断条件是否成立,若成立,执行循环体,直到条件不成立为止,跳出循环体,执行LoopWhile后面的语句.(3)DoLoop语句对应的基本框图:循环体满足条件?是否开始执行当条件为真时,执行循环体问题:设计一个求满足:2+4+6+8+…+n10000的最小正整数n(n是偶数)的算法框图,并写出相应的算法语句.框图如下:2.DoLoop应用举例n=0P=0Don=n+2P=P+nLoopWhileS≤10000输出n开始S=0n=1S=S+n^2n=n+1S=1000输出n-2结束否是解:s=0n=1Dos=s+n^2n=n+1LoopWhiles=1000输出n-2例2.如何寻找满足条件的最大整数n?1000...3212222n以下给出的是用循环语句编写的一个算法,根据该算法写出此题的算法功能,并画出相应的算法框图.I=1Doa=IMod2Ifa=0Then输出IEndIfI=I+1LoopWhileI=100【例3】题型二DoLoop语句的应用[思路探索]该算法表示的功能是:找出并输出1至100的正整数中的所有偶数.解算法框图如图所示:规律方法由I除以2的余数为零时,输出I,可判断输出的I是偶数,否则不输出;I100时结束,且I的初始值为1,故可判断1≤I≤100.根据下面的算法语句,绘制算法框图,指出输出的最后结果是什么?并将它改为另一种循环,画出相应的算法框图.算法:(如左下图)S=0Fori=3To99S=S+i^3i=i+2Next输出S【训练2】S=0i=3DoS=S+i^3i=i+2LoopWhilei=99图1解算法语句对应的算法框图如图2所示,它用的是“For”语句,最终输出的结果是33+53+…+993,利用“DoLoop语句”可以改为:(如图1)相应算法框图如图3所示:图2图3例4.给出以下10个数:4,10,70,33,95,74,29,17,60,30.要求将大于40的数找出来,画出求解该问题的算法的程序框图,并写出程序.可以从第1个数开始与40比较大小,若该数大于40就输出,小于或等于40的数就再与下一个数比较,这样需比较10次,可以用一个计数变量的循环结构设计算法.【分析】解程序框图如右:开始i=1输入xx40是输出x否i=i+1i≤10否结束是程序如下:i=1Do输入xIfx40Then输出xEndIfi=i+1LoopWhilei≤10End练习3.设区间[0,1]是方程f(x)=0的有解区间,请编写用二分法求方程f(x)=0在区间[0,1]上的一个近似解的程序(精确到ε).解输入εa=0;b=1;DoIff((a+b)/2)=0ThenElseIff(a)*f((a+b)/2)0Thenb=(a+b)/2E
本文标题:3--几种基本语句解析
链接地址:https://www.777doc.com/doc-1565450 .html