第4章 算法基础及VB基本语句_第1页
第4章 算法基础及VB基本语句_第2页
第4章 算法基础及VB基本语句_第3页
第4章 算法基础及VB基本语句_第4页
第4章 算法基础及VB基本语句_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第4章章 基本的控制结构基本的控制结构2一、算法的概念一、算法的概念广义:算法就是解决某个问题或处理某件事的方法和步骤。狭义:算法是专指用计算机解决某一问题的方法和步骤。二、算法的特征二、算法的特征1.确定性:指算法的每个步骤都应确切无误,没有歧义性。2.可行性:指算法的每个步骤都 必须是计算机能够执行、可以实现的,并可得到确定的结果。3.有穷性:指一个算法包含的 步骤必须是有限的,并在一个合理的时间限度内执行完毕。4.输入性:一个算法可以有多个或0个输入。5.输出性:一个算法必须有1个或多个输出。3三、算法的描述三、算法的描述图形符号名 称代表的操作输入/输出数据的输入与输出处理各种形式

2、的数据处理判断判断选择,根据条件满足与否选择不同路径起止流程的起点与终点特定过程一个定义过的过程流程线连接各个图框,表示执行顺序连接点表示与流程图其他部分相连接表4-14四、算法的结构四、算法的结构ABeAB2.分支结构分支结构1.顺序结构顺序结构3.当型循环当型循环4.直到型循环直到型循环eAeA51.赋值语句的一般形式 var=例如:x=“This is a book” Text.Font.Size=12 Lable1.Text=“Visual Basic 6.0”2.获取对象的属性值 var=Object.Property例如:y=Text1.Text print y一、赋值语句一、赋值

3、语句63.不同数据类型数据的赋值1)如果变量与表达式都是数值类型,系统先求出表达式的值,在将其转换为变量类型后再赋值。2)如果变量为字符型,而表达式为数值类型(算术表达式),则系统将把表达式的值转换为字符型赋给变量。3)如果变量为逻辑型,而表达式为数值类型,则所有的非0数值,系统都转换为“True”赋给变量,对0则转换为“False”。4)把一个逻辑值“True”赋给一个整型变量,变量的值将为-1,把逻辑值“False”赋给整型变量,变量的值为0。5)把一个逻辑值“True”赋给一个字符型变量,变量的值将为“True”,把逻辑值“False”赋给字符型变量,变量的值为“False”。6)把一个

4、字符型的数据赋给数值变量,系统将给出数据类型不匹配的错误提示,并停止执行。7二、二、InputBox函数函数 作用:在一对话框中显示提示,等待用户输入正文或按下按钮,并返回包含文本框中内容,函数值的类型为 String类型。 语法格式: v=InputBox(Prompt,Title,Default,x,y,Helpfile,Context) 变量=InputBox(, , , , , , )例InputBox的用法8三、三、MsgBox函数和函数和MsgBox过程过程 作用:在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。 语法格式: MsgBox(Prompt

5、,Button,Title,Helpfile,Context)MsgBox(, , , , )例MsgBox用法92.MsgBox函数和MsgBox过程MsgBox函数在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮。其语法格式为:变量变量=MsgBox(, , , , )MsgBox语句的用法为:MsgBox , , , , 其中:、和的意义同InputBox函数。可选项。整型表达式,指定显示按钮的数目及形式,使用的图标类型,缺省按钮的种类以及消息框的强制回应等。如果省略,则 的缺省值为 0。10表4-2 设置值及其意义分 组系统常数值意 义按钮数目vbOKOnl

6、y0只显示 OK 按钮。VbOKCancel1显示 OK 及 Cancel 按钮。VbAbortRetryIgnore2显示 Abort、Retry 及 Ignore 按钮。VbYesNoCancel3显示 Yes、No 及 Cancel 按钮。VbYesNo4显示 Yes 及 No 按钮。VbRetryCancel5显示 Retry 及 Cancel 按钮。图标类型VbCritical16显示 Critical Message 图标。VbQuestion32显示 Warning Query 图标。VbExclamation48显示 Warning Message 图标。VbInformati

7、on64显示 Information Message 图标。默认按钮vbDefaultButton10第一个按钮是缺省值。vbDefaultButton2256第二个按钮是缺省值。vbDefaultButton3512第三个按钮是缺省值。模式vbApplicationModal0应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。vbSystemModal4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。11表4-3 MsgBox函数的返回值系统常数返回值描述VbOK1确定vbCancel2取消vbAbort3终止vbRetry4重试vbIg

8、nore5忽略VbYes6是VbNo7否121314用 If.Then 结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用:(1)If Then (2)If Then End If下面两个例子等价:(1)If todayDate Now Then todayDate = Now(2)If todayDate Now Then todayDate = Now End If注意:If.Then 的单行格式不用 End If 语句。如果 为 True 时要执行多行代码,则必须使用多行块 If.Then.End If 语法。例如:If todayDate Now Then todayDat

9、e = Now Timer1.Enabled = False 定时器控制失效。End If15可以用 If.Then.Else 块定义几个语句块,执行其中一个语句。其语法格式也有两种形式:(1)If Then Else End If(2)If ThenElse 当的值为真时,执行Then后面的语句块1,否则执行Else后面的语句块2(或语句2)。其流程见下图。y= True False 双分支结构流程2. 双分支结构(双分支结构(If.Then.Else语句)语句)160, 5430, 314sin2222xxxxxxx0y=2*sqr(2*sin(x)*sin(x)+4*x+1)-3 例如:

10、计算分段函数y = 本题在选择条件时,可以选择x0作为条件,也可以选择x0作为条件。这里选择x0作为条件。画出如下图所示流程图。 双分支结构流程实例y=3*x*x+4*x-5FalseTrue171)用单分支结构实现y=3*x*x+4*x-5If x0 Then y=31)x*4sin(x)*sin(x)*r(2s*2q或If x0 Then y=3*x*x+4*x-5If x0 Then y=31)x*4sin(x)*sin(x)*r(2s*2q但是,不能这样表示:If x0 Then y=31)x*4sin(x)*sin(x)*r(2s*2q2)用双分支结构实现If x0 Then y=3

11、1)x*4sin(x)*sin(x)*r(2s*2qElse y=3*x*x+4*x-5End Ify=3*x*x+4*x-5例4118可以处理两个或两个以上分支。其语句形式为:If Then ElseIf Then Else End IfVisual Basic 首先测试。如果它为 False,Visual Basic就测试,依次类推,直到找到一个为 True 的条件。当它找到一个为 True 的条件时,Visual Basic就会执行相应的语句块,然后执行 End If 后面的代码。作为一个选择,可以包含 Else 语句块,如果条件都不是 True,则 Visual Basic 执行 El

12、se 语句块。3. 多分支结构(多分支结构(IfThenElseIf语句)语句)例42192)2(21)2)(1 (11xxxxxxx例:利用If.Then.Else 语句编写求函数y = 的值的程序,要求只要在文本框Text1中输入自变量x的值,就在标签栏label1上显示函数值。根据题意,在窗体上添加一个文本控件Text1和标签控件label1,代码应包含在Text1_change事件中。代码为:Private Sub Text1_Change() Dim x As Double, y As Double Label1.Caption = 清空Label1的内容 x = CDbl(Text

13、1.Text) 将字符串类型转化为双精度类型 If (x = 1# And x =700(2)m0=680 and m0=145 or m2=145 or m3=145 or m4=280设计步骤如下:(1)建立应用程序用户界面按如下图建立四个文本框(Text1Text4)接受成绩输入,三个标签控件(Label1Label3),一个命令按钮Command1,设置各控件的属性,其中Command1的Caption属性值为“查询”。21应用程序运行情况22(2)编写程序代码根据流程图,编写出Command_click事件的代码为:Private Sub Command1_Click() Dim m

14、0 As Integer, m1 As Integer Dim m2 As Integer, m3 As Integer, m4 As Integer m1 = CInt(Text1.Text) m2 = CInt(Text2.Text) m3 = CInt(Text3.Text) m4 = CInt(Text4.Text) m0 = m1 + m2 + m3 + m4 Label3.Caption = m0 If m0 = 700 Then MsgBox 您获得了特等奖, vbOKOnly + vbInformation, 获奖通知 ElseIf m0 = 680 Then MsgBox 您

15、获得了优秀奖, vbOKOnly + vbInformation, 获奖通知 ElseIf m1=145 or m2=145 or m3=145 or m4=280 Then MsgBox 您获得了特别奖, vbOKOnly + vbInformation, 获奖通知 Else MsgBox 很遗憾,您没获奖, vbOKOnly + vbInformation, 获奖通知 End IfEnd Sub23 上面学习了If语句的基本形式,可以通过这些基本形式加以复合,获得更为复杂的If结构,称为If语句的嵌套。一般形式如图4-4a所示。图4-4b为在Else块中嵌套If结构的形式。可根据实际情况选

16、择采用何种结构。图4-4a If语句复合结构的一般形式 图4-4b 在Else块中嵌套If结构的形式 4. If语句的嵌套语句的嵌套24Select Case Case Case Case Case ElseEnd Select4.3.2 Select CaseSelect Case的结构形式为:的结构形式为:25Select Case选择结构执行的过程为:(1)计算的值(2)将的值与Case语句中的中的每一个值逐一进行比较。如果与其中的一个值相匹配,则执行该语句中的。如果不止一个 Case与相匹配,则只对第一个匹配的 Case 执行与之相关联的。如果在表达式列表中没有一个值与测试表达式相匹配

17、,则 Visual Basic 执行 Case Else 子句(此项是可选的)中的语句。最后执行End Select语句。例:select case用法26 1IIf 函数函数 IIf 函数的功能是根据表达式的值,来返回两部分中的其中一个。其语法格式为:IIf(, , )0,340, 32xxxx例如,求分段函数:y= 函数值的语句可以简单地表示为:y=IIf(x0,2*x+3,4-3*x)27 下面的示例使用 Choose 函数来显示某天的执勤人员情况, strDay 参数传递到过程之中的索引。 Function GetChoice(strDay As string) strName= Ch

18、oose(strDay, “王大虎”, “谢伟烽”, “马家栋”, “何 右嘉, 吴仁杰,) End Function 当strDay的值为1时,返回字符串“王大虎”,当strDay的值为2时,返回字符串“谢伟烽”,以此类推。当strDay的值不在15之间时,返回NULL。 Choose函数的功能是:从参数列表中选择并返回一个值。其语法格式为:Choose(, , , . ,)2Choose函数函数28294.4.1 Do.Loop语句语句1前测型前测型Do.Loop循环循环在前测型Do.Loop循环中,只要 为 True 就执行 。其语法格式为:Do While | Until Loop30

19、(1)设计应用程序界面应用程序所需的控件及其属性值见表4-4。控件Caption属性值Label1自然数Label2空白(设计时)Text11空白(设计时)Command1输入自然数后单击此按钮表4-4 判断素数应用程序控件属性值例4:编写程序,判断一个数是否为素数。31(2)编写代码根据流程图,编写Command1_click事件代码如下:Private Sub Command1_Click() Dim m as integer ,k as integer Dim n As Long If Val(Text1.Text) 2147483647 Then MsgBox 数据溢出,请重新输入,

20、vbOKOnly + vbOKCancel + vbInformation, 数据错误 Text1.Text = Else判断素数程序运行实例 n = CLng(Text1.Text) m = 0: k = 2 Do While k = Sqr(n) And m = 0 If n Mod k = 0 Then m = 1 Else k=k + 1 End If Loop If m = 0 Then Label2.Caption = 是一个素数 Else Label2.Caption = 不是一个素数 End IfEnd IfText1.SetFocus End Sub32 Do.Loop 语句

21、的另一种演变形式是先执行,然后在每次执行后测试 。称为后测型Do.Loop循环。这种形式保证至少执行1次,其语法格式为:Do Loop While | Until 2.后测型后测型Do.Loop循环循环33例4:求两个正整数m和n的最大公约数。求最大公约数最常用的方法是辗转相除法。其设计思路是:(1)假设m大于n;(2)用n作除数除m,得余数r。(3)若r0,则令mn,nr,继续相除得到新的r值,直到r=0为止。(4)最后的m即为最大公约数。解题步骤如下:(1)设计流程图根据题意,设计出如下图所示流程图。求最大公约数的流程图输入m,nm存放大数,n存放小数输出n求m/n的余数MnN=r直到r=

22、034(2)设计应用程序界面所需添加的控件的属性值参见表4-5。控件Caption(或Text)属性值Label1请输入两个正整数Label2m nLabel3m 和 n 的最大公约数是Label4空白(设计时)Text11空白(设计时)Text12空白(设计时)Command1求 解表4-5 判断素数应用程序控件属性值35(3)编写代码Private Sub Command1_Click() Dim m As Long, n As Long, temp As Long If (Val(Text1.Text) = 0 Or Val(Text2.Text) = 0) Or Val(Text1.T

23、ext) 2147483647 Or Val(Text2.Text) 2147483647 Then MsgBox 输入的数0或溢出,请重新输入! MsgBox 输入的数0或溢出,请重新输入!, vbInformation + vbOKOnly, 数据错误 Text1.Text = Text2.Text = 求最大公约数程序运行实例 Text1.SetFocusElsem = Val(Text1.Text)n = Val(Text2.Text)If m n Then temp = m: m = n: n = tempEnd If Do r = m Mod n m = n n = r Loop

24、While r 0 Label3.Caption = mEnd IfEnd Sub36 Do 循环使用于在不知道执行多少次时。有时,循环的次数是已知的,这时最好使用 For.Next 循环。与 Do 循环不同, For 循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。For 循环的语法如下: For = To Step Next 4.4.2 For.Next语句语句例4437例:求11000之间所有能够被13整除的数。按每行各行10个数排满足条件的数。(1)设计流程图根据题意,设计如图所示流程图。求被13整除的数的流程图 38(2)设计应用程序界面应用程序所需

25、控件属性值参见表4-6。控件Caption属性值Command1单击此按钮求11000值见能被13整除的数Picture1无此属性值表4-6 求被13整除的数应用程序控件属性值39(3)编写代码 程序运行情况Private Sub Command1_Click() Dim i As Integer, j As Integerj = 0For i = 1 To 1000 If i Mod 13 = 0 Then j = j + 1 Picture1.Print i; If j Mod 10 = 0 Then Picture1.Print End IfNext iPicture1.PrintPic

26、ture1.Print 一共有 & j & 个数可以被13整除End Sub其中,语句If j Mod 10 = 0 Then Picture1.Print控制每行打印满足条件的数的个数(10个),注意语句 Picture1.Print i;后的分号不能省略。程序运行情况参见上图。40在一个循环体内又出现另外的循环语句称为循环嵌套。 例:指出下面程序的运行结果:程序运行结果4.4.3 循环嵌套循环嵌套Private Sub Form_Click()Dim a As Integer, i As Integer, j As Integer a = 0 For i = 1 To 5 For j =

27、-2 To 2 a = a + i + j Next j Print a; Next i Print Print i, j, aEnd Sub例46例4541例:编程求上图所示乘法九九表。分析下图可知:如果将每一个等式作为一个方阵的节点,则每一个等式出现的位置上行列的数字是相同的。因此,可以用如下嵌套的循环作为对一个节点的描述:For i=1 to 9 For j=1 to i Next jNext i这里,为乘法等式:expss = i & & j & = & i * j。现在,主要的问题是控制每个表达是出现的位置,可以用Tab函数来实现,假设给每个等式的宽度为10,第一个等式出现在第4行,

28、则Tab函数可以这样表示:Tab(j - 1) * 10 + 3); 乘法九九表(1)42在窗体上添加一个命令按钮和一个Pictrue控件,编写command1_click事件的代码如下:Private Sub Command1_Click() Dim i As Integer, j As Integer Dim expss As String For i = 1 To 9 For j = 1 To i expss = i & & j & = & i * j Picture1.Print Tab(j - 1) * 10 + 1); expss; Next j Picture1.Print Next iEnd Sub 乘法九九表(2)43For Each.Next 循环与 For.Next 循环类似,但它对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数。For Each.Next 循环非常适合于不知道一个集合有多少元素的情况。For Each.Next 循环的语法格式如下:For Each In Next elementt441Exit For 语句和 Exit Do语句2Go To语句3E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论