版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1算法的三种基本结构3.2语句3.3选择结构3.4循环结构3.5非正常流程控制3.6Timer组件第3章程序的基本控制结构.3.1算法的三种基本结构顺序结构:各操作块按照书写的先后顺序逐个执行,先执行A在执行B。.选择结构:根据某个给定条件是否成立来决定执行哪个操作。通过E判断后分支,满足条件执行A,不满足条件的执行B。(单分支).循环结构:在一个地方反复执行一连串的操作。当型循环结构直到型循环结构.三种基本结构都具有共同的性质:1、有且仅有一个入口2、有且仅有一个出口3、无死块(永远执行不到的操作块)。4、无死循环块。.3.2语句语句为完成某种功能的完整的指令,可以包含关键字、运算符、变量、常数以及表达式等,以回车键结束。按功能分为:声明语句与可执行语句。通常在书写时一行中只有一条语句,若要一行中包含多条,各语句间用冒号(:)分隔,一条语句占多行时要使用续行符(_)。注释以(‘)或REM开始。.3.3选择结构1.If...Then结构If...Then结构表示“如果...就”,是条件转移语句,根据条件测试后的结果,决定程序的下一步。语法:If条件Then语句或者:If条件Then 语句块EndIf.例:编写一个简单的程序,验证IF语句是如何起作用的。用户界面如下:两个标签、两个文本、两个命令按钮。.PrivateSubbtnTest_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnTest.ClickDimNumberAsIntegerNumber=CInt(txtNumber.Text)txtResult.Text="偶数"IfNumberMod2=1ThentxtResult.Text="奇数"EndIfEndSub.2.If...Then...Else结构If...Then...Else结构表示“如果...就...否则”,比前面的If...Then结构的条件选择和范围更广。语法:If条件1Then 语句块1[ElseIf条件2Then 语句块2]......[Else 语句块n]EndIf.例:设计一个查询是否中奖的程序。通过该程序查询是否中奖以及所中奖的等级。界面设计:界面由四个控件组成,分别是标签(labResult)、文本框(txtInput)、命令按钮“查询”(btnCheck)和标签(Label1)。功能说明:在文本框中输入奖券号码,单击查询按钮后察看是否中奖以及等级。中奖号码为2362,号码相同的为一等奖,前三位相同的为二等奖,前两位相同的为三等奖。..PrivateSubbtnCheck_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnCheck.ClickDimstrInputAsStringstrInput=txtInput.TextIfstrInput="2362"ThenlblResult.Text="恭喜你,中了一等奖!"ElseIfstrInputLike"236?"ThenlblResult.Text="恭喜你,中了二等奖!"ElseIfstrInputLike"23??"ThenlblResult.Text="恭喜你,中了三等奖!"ElselblResult.Text="谢谢你的参与!"EndIfEndSub.3.SelectCase结构
SelectCase结构与If...Then...Else结构类似,但对多重选择的情况,用SelectCase语句,代码效率更高,更易读。语法:SelectCase变量|表达式Case值1语句块1[Case值2语句块2]...[CaseElse语句块n]EndSelect.SelectCase语句中几个重要部分的规定:(1)变量|表达式用作测试条件,为必要的参数(2)值1、值2…可以取以下几种形式:
1)具体常数。例如,1、2、“A”等。2)一组用逗号分隔的枚举值3)连续的数据范围,例如,1To100、AToZ等。4)Is关系表达式Selectcase语句计算“变量|表达式”的值,与各case子句的值进行比较,若与其中的某个值匹配,则执行相应的语句块。如果与多个case中的值匹配,按自上而下的原则,只执行第一个语句块。找不到匹配的值,则执行caseelse中的语句块。.(1)selectcase语句的变型SelectcasemyMonth‘用变量来设置一月中的天数Case2Days=28+leapYear()‘自写函数,闰年返回1,否则为0Case4,6,9,11Days=30CaseelseDays=31Endselect.(2)带值范围的selectcase语句SelectcaseNumberCase1,2Answer=4Case3to6Answer=6Case11,13to15Answer=8CaseelseAnswer=0Endselect(To关键字允许为case语句指定值范围,注意范围是包含性的).(3)带限制范围的selectcase语句SelectcaseNumberCase1txtResult.Text=“1”Case2to10txtResult.Text=“2”CaseIs<20txtResult.Text=“3”CaseIs>20txtResult.Text=“4”Endselect(注意:按自上而下的原则,只执行第一个匹配的语句块)什么时候用selectcase而不是if?.3.4循环结构1、While…EndWhile语句
While<条件表达式>语句块EndWhile.例:求解1!+2!+3!+…+n!.
PrivateSubbtnCal_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnCal.ClickDimnAsInteger,iAsInteger,sumAsIntegerDimkAsIntegern=Val(txtN.Text)i=1k=1Whilei<=nk=k*isum=sum+ki=i+1EndWhilelsbResult.Items.Add("1!加到"&CStr(n)&"!="&CStr(sum))EndSub.2、For…Next语句For循环变量=初值To终值[Step步长]
语句块Next[循环变量]如果步长为正,测试循环变量是否大于终止值。若步长为负,则测试循环变量是否小于终止值。.例:编程验证对于给定的正整数N,肯定存在N个正奇数,它们的总和等于N的平方。(N=3,N^2=9=1+3+5).PrivateSubbtnCalc_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnCalc.ClickDimNumber,Sum,i,myIntegerAsIntegerDimNewlineAsStringNewline=Chr(13)&Chr(10)Sum=0myInteger=1Number=CInt(txtNumber.Text)txtResult.Text=""Fori=1ToNumberSum+=myIntegermyInteger+=2NexttxtResult.Text+=CStr(i-1)&""&CStr(Sum)&NewlineEndSub比较结果.3、Do…Loop语句Dowhile<表达式>语句块Loop表达式为True时执行语句块,遇到Loop后返回到表达式判断Do语句块Loopwhile<表达式>循环至少执行一次.Dountil<表达式>语句块Loop表达式为False时执行语句块,遇到Loop后返回到表达式判断Do语句块Loopuntil<表达式>循环至少执行一次.例:模拟掷硬币。功能:算出在希望看到获得连续的特定数量的正面之前,总共掷了多少次。.PrivateSubbtnStart_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnStart.ClickDimTosses,Heads,ThisToss,TargetAsIntegerHeads=0Tosses=0IftxtNumber.Text<>""ThenTarget=CInt(txtNumber.Text)ElseMsgBox("Youneedtoenteranumber.")ExitSubEndIf.DoWhileHeads<>TargetThisToss=tossacoin()IfThisToss=1ThenHeads+=1ElseHeads=0EndIfTosses+=1LooptxtTossCounter.Text=CStr(Tosses)EndSub.PrivateFunctionTossACoin()AsIntegerTossACoin=Int(2*Rnd())EndFunctionPrivateSubForm1_Load(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.LoadRandomize()EndSub.调用Randomize()函数播种随机数发生器,这样就可以产生不重复的伪随机数序列。该函数在调用Rnd()前只需调用一次,放在From_load事件中。(Randomize使用系统定时器来达到此目的)Rnd()返回0和1之间Single数据类型的值。当希望某个值落在两个值之间时,可用下面公式:int((Upperlimit-Lowerlimit+1)*Rnd()+Lowerlimit)).4、循环的嵌套
在循环结构中可以嵌套任何循环结构,也可以嵌套分支结构。但要遵循以下规定:(1)内外循环的循环变量不能同名(2)外循环应完全包含内循环,即循环不能交叉。(3)不能从循环体外通过语句转向循环体内,也不能从外循环转向内循环。.例:百钱买百鸡问题。100元钱买100只鸡,公鸡每只5元,母鸡每只3元,小鸡3只1元。可各买多少只。.PrivateSubbtnResult_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnResult.ClickDimx,y,zAsIntegerForx=0To20Fory=0To33z=100-x-yIf5*x+3*y+z/3=100ThenListBox1.Items.Add(CStr(x)&""&CStr(y)&"_"&CStr(z))EndIfNextyNextxEndSub.3.5非正常流程控制(1)Goto标号(无条件转向语句)(2)用Exit语句可以直接退出While循环、For循环、Do循环。语法:ExitForExitDoExitWhile执行Exit语句只能退出该语句所在的循环体。.计算1到100的和,当和大于等于5000时跳出循环。DimiAsInteger,SumAsIntegerSum=0Fori=100To1Step-1Sum=Sum+iIfSum>=5000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗组工作制度
- 刷手间工作制度
- 交办单工作制度
- 呼气室工作制度
- 医士工作制度
- 加强员工安全培训
- 安全策划制度解析
- 儿童牙齿口腔保健口腔健康知识普及
- 花店开业庆典策划方案
- 养生会所概念方案设计
- DBJ50-255-2022 建筑节能(绿色建筑)工程施工质量验收标准
- 司炉工安全教育培训
- 软件项目开发工作说明书样本
- 外墙吊篮专项方案
- 《人员定位系统》课件
- 增列硕士专业学位授权点专家评议意见表
- 土建生态环保和绿色施工环境管理培训ppt
- 施工组织设计(老旧小区改造及配套设施)
- 建设工程第三方质量安全巡查标准
- JJF 2020-2022加油站油气回收系统检测技术规范
- GB/T 28292-2012钢铁工业含铁尘泥回收及利用技术规范
评论
0/150
提交评论