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

下载本文档

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

文档简介

1、第四章 算法基础及VB基本语句,4.1 算法及程序设计基础 4.2 赋值语句及InputBox、MsgBox函数 4.3 分支结构与分支结构语句 4.4 循环结构与循环结构语句 4.5 程序示例,4.1算法及程序设计基础,如何设计一个应用程序? 如何设计一个“正确”而又“可行”的程序? 程序员是通过程序代码告诉计算机要做什么(操作对象)和怎么做(操作步骤)的,因此在设计程序前,必须根据实际问题的特点和需求,再考虑计算机的工作特性确定解决某个问题所需要的方法和步骤 。,4.1算法及程序设计基础,1.算法的概念 广义而言,算法就是解决某个问题或处理某件事的方法和步骤。 狭义而言,算法是专指用计算机

2、解决某一问题的方法和步骤。著名计算机科学家D.E.Knuth在其计算机程序设计技巧一书中为算法所下的定义是:“一个算法,就是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型问题的运算系列”。,4.1算法及程序设计基础,计算机算法可以分为两大类:一类是数值计算算法,主要是解决一般数学解析方法难以处理的一些数学问题,如求解超越方程的根、求定积分、解微分方程等;另一类是非数值计算算法,如对非数值信息的排序、查找等。,4.1算法及程序设计基础,2. 算法示例: 求两个自然数的最大公约数的欧几里德算法; 顺序查找算法,示例1 求两个自然数的最大公约数的算法,S1.输入两个自然数M、N; S2.求

3、M除以N的余数R; S3.使M=N,即用N代换M; S4.使N=R,即用R代换N; S5.若R0,则重复执行S2、S3、S4(循环),否则转S6; S6.输出M,M即为M和N的最大公约数。,示例2 在N个字符数据集合中,查找有无特定的字符串存在。,S1.输入字符数据的个数N和要查找的数据S; S2.使I=1,I用于计数; S3.从字符数据集合中读取一个数据X; S4.若X=S,输出“找到S”的信息,算法结束,否则转S5; S5.使I=I+1,计数器计数; S6.若IN;则重复执行S3、S4、S5(循环);否则转S7; S7.输出“找不到S”信息,算法结束。,4.1算法及程序设计基础,3. 算法

4、的特征 确定性 可行性 有穷性 输入性 0或多个输入 输出性 1或多个输出,4.1算法及程序设计基础,4. 算法的描述 文字描述 流程框图 由于图形的描述方法既形象,又直观,所以得到广泛的应用。,图形符号,示例算法的图形表示,4.1算法及程序设计基础,5. 基本算法结构 顺序结构 分支结构 循环结构(当型、直到型),三种基本算法结构的图形表示,三种基本结构的共同特点,1)只有单一的入口和单一的出口; 2)结构中的每个部分都有执行到的可能; 3)结构内不存在永不终止的死循环。,4.1算法及程序设计基础,理论上已证明,无论多么复杂的问题,其算法都可表示为这三种基本结构的组合。依照结构化的算法编写的

5、程序或程序单元(如过程),其结构清晰、易于理解、易于验证其正确性,也易于查错和排错。 这就是所谓的“结构化程序设计方法”。,4.1算法及程序设计基础,需要特别指出的是,算法仅仅提供了解决某类问题可采用的方法和步骤,还必须使用某种计算机程序设计语言把算法描述出来。也就是说,要使用某一种程序设计语言所提供的语言成分,根据语言的特点,并利用语言提供的各种工具和手段,遵照规定的语法规则,去实现算法,这就是所谓的程序编码。,4.2赋值语句及InputBox、MsgBox函数,4.2.1 赋值语句 4.2.2 InputBox函数 4.2.3 MsgBox函数,4.2.1 赋值语句,1. 赋值语句的一般形

6、式: var = Var代表某个变量名或属性名。当系统执行一个赋值语句时,将先求出赋值操作符”=”右边表达式的值,然后再把该值保存到”=”左边的变量中。这就是所谓的“赋值”。 使用赋值语句还可以获取一个对象返回的当前属性值。 例: x = This is a flower number% = 72 Lable1.Text = Filename is: Text1.Font.Size = 12 改变字号 Y = (a + b )/2,4.2.1 赋值语句,2. 不同数据类型数据的赋值 如果变量与表达式都是数值类型,系统先求出表达式的值,再将其转换为变量类型后赋值; 如果变量为字符型,而表达式为数

7、值类型(算术表达式),则系统将把表达式的值转换为字符型赋给变量; 如果变量为逻辑型,而表达式为数值类型,则所有的非0值,系统都转换为True赋给变量,0则转换为False赋给变量;,把一个逻辑值Ture赋给一个整型变量,变量的值将为-1;把逻辑值False赋给整型变量,变量的值为0; 把一个逻辑值Ture赋给一个字符变量,变量的值将为True;把逻辑值False赋给字符变量,变量的值为False; 把一个字符型的数据赋给数值变量,系统将给出数据类型不匹配的错误提示,并停止执行。,4.2.2 InputBox函数,InputBox函数用来接受用户通过键盘输入的数据。InputBox函数使用的形式

8、是: v = InputBox(Prompt,title,defsult,x,y,helpfile,context) Prompt:提示用的文字信息; title:对话框标题(字符型),缺省时,为工程名; default:显示在用户编辑框中的缺省值,缺省时,返回空值; x,y:对话框在屏幕上显示时的位置,单位是特维,(x,y)是对话框左上角点的坐标; helpfile,context:帮助文件名及帮助主题号。有本选项时,在对话框中自动增加一个帮助按钮。,4.2.2 InputBox函数,特别注意: InputBox函数返回的是一个字符类型数据,v可以是变体变量或字符串型变量,也可以是数值型变量

9、,但如果输入内容不可转换成数值型数据时,将会产生运行错误。,程序示例,Private Sub Cmd1_Click() Dim N_student As String N_student = InputBox(请输入你的学号:, 程序示例, 230001) If Left(N_student, 2) = 23 Then Print 你是工程系的学生! Else Print 你不是工程系的学生! End If End Sub,4.2.3 MsgBox函数,MsgBox函数用于向用户发布提示信息,并要求用户作出必要的响应。MsgBox函数的形式是: MsgBox(Prompt,button,tit

10、le,helpfile,context),MsgBox函数中各个参数的意义,Prompt:提示用的文字信息; button:这是一个由4个数值常量组成的式子,形式为c1+c2+c3+c4,用于决定信息框中按钮的个数和类型以及出现在信息框中的图标类型,各个参量的可选值及其功能见表4-2(凡有0值的参量,0值为缺省值):,MsgBox函数各个参数的意义,title:信息框标题(字符型),缺省时,为空白; helpfile,context:帮助文件名及帮助主题号。有本选项时,在信息框中自动增加一个帮助按钮。,MsgBox函数的返回值,按钮名 内置常量 取值 OK(确定) vbOK 1 Cancel(

11、取消) vbCancel 2 Abort(终止) vbAbort 3 Retry(重试) vbRetry 4 Ignore(忽略) vbIgnore 5 Yes(是) vbYes 6 No(否) vbNo 7,MsgBox函数的使用方法,使用赋值语句。如: ans = MsgBox(“非法数据!”,48,”提示信息”) 使用Print方法。例如: Print MsgBox(“非法数据!”,48,”提示信息”) 也可以把它等同为一个方法使用。如: MsgBox “非法数据!”,48,”提示信息”,MsgBox函数示例,4.3 选择结构,4.3.1 If-Then-Else-End If结构语句

12、4.3.2 Select Case 语句(情况语句),4.3.1 If-Then-Else-End If结构语句,IfThen语句(单分支结构) If Then Else语句(双分支结构) If Then ElseIf语句(多分支结构) If 语句的嵌套,语句形式如下: (1)If Then Else EndIf (2)If Then Else,举例,语句形式如下: (1)If Then 语句块 EndIf (2)If Then ,举例,语句形式如下: If Then ElseIf Then Else 语句块n+1 EndIf,例4-1已知三角形三个边的长度,设计求此三角形面积的程序。,问题分

13、析:设三角形的三个边分别为a、b、c,从数学上已知,当 a+bc 且 a+cb 且 b+ca 时,三角形存在,其面积 s = sqr(p*(p-a)*(p-b)*(p-c) 式中: p = (a+b+c)/2,程序代码:,Private Sub Command1_Click() Dim a As Single, b As Single, c As Single, p As Single, s As Single a = Val(Text1.Text) 取数据a b = Val(Text2.Text) 取数据b c = Val(Text3.Text) 取数据c If a + b c And a

14、+ c b And b + c a Then p = (a + b + c) / 2 s = Sqr(p * (p - a) * (p - b) * (p - c) 求三角形面积 Text4.Text = CStr(s) 面积数据写入计算结果文本框 Else Text4.Text = “数据错误” 数据错误信息 End If End Sub,Private Sub Command2_Click() End 结束程序 End Sub Private Sub Command3_Click() Text1.Text = 清除原有数据 Text2.Text = Text3.Text = Text4.T

15、ext = Text1.Setfocus 将Text1置为焦点 End Sub,例4-2一个有多个分支的示例程序,Private Sub Command1_Click() Dim x As Integer x = Val(Text1.Text) If x 1 Then Text2.Text = “这是小于1的数” ElseIf x = 10 Then Text2.Text = “这是1到10之间的数” Else Text2.Text =”这是大于10的数” End If End Sub,4.3.2 Select Case 语句(情况语句),一般形式: Select Case e Case c1

16、 A组语句 Case c2 B组语句 . Case Else n组语句 End Select,Select-Case结构语句使用说明:,e称为测试表达式,可以是算术表达式或字符表达式;c1,c2,.是测试项,它们可取三种形式: (1)具体取值:如:3、5、7.2等(当测试表达式是算术表达式时); (2)连续的数据范围:如:8 To 20;B To H等; (3)满足某个判决条件:如:Is20;Is 30 本结构的执行方式是:先求测试表达式的值,接着逐个检查每个Case语句的测试项,如果,测试表达式的值满足某个测试项中的任意一个测试内容,系统就执行该Case语句下的那组语句;若没有一个测试项满足

17、要求,就执行Case Else下的语句,本组语句执行完后,跟着执行End Select语句的下一条语句。,Private Sub Command1_Click() Dim x As Integer x = Val(text1.Text) Select Case x Case Is 1 Text2.text = 这是小于1的数 Case 1 To 10 Text2.Text = 这是1到10之间的数 Case Else Text2.Text = 这是大于10的数 End Select End Sub,4.4 循环结构,4.4.1 DoLoop循环结构语句 4.4.2 ForNext循环结构语句

18、4.4.3 循环的嵌套,4.4.1 DoLoop循环结构语句,DoLoop循环结构语句是VB提供的用以实现当型循环结构与直到型循环结构的语句。,1. 当型循环结构的实现,2. 直到型循环的实现,3. Exit Do语句,循环体内如果有Exit Do语句,执行本语句,就会立即退出DoLoop循环,接着执行Loop语句的下一条语句。 Exit Do语句通常采用下面的形式使用: If e2 Then Exit Do 即可在循环体内对另一条件进行判断,若该条件为True,则退出循环(不再执行循环),例4-3设计采用欧几里德算法求解两个自然数的最大公约数的程序,算法分析本问题的算法前面已经给出,界面则可

19、参照例4-1设计。由于输入的数据M和N要求是自然数,所以在程序中应加入对数据的合法性进行检验的部分;考虑到程序的应用范围,数据类型可选用长整型。,Private Sub Command1_Click() Dim m As Long, n As Long, r As Long m = Val(Text1.Text) 取数据M n = Val(Text2.Text) 取数据N If m 1 Or n 1 Then 检验数据合法性 Text3.Text = 数据错误! Else Do 求最大公约数 r = m Mod n m = n n = r Loop Until r = 0 Text3.Text

20、 = CStr(m) 输出最大公约数 End IfEnd SubPrivate Sub Command2_Click() Text1.Text = 清除文本框1 Text2.Text = 清除文本框2 Text3.Text = 清除文本框3 Text1.SetFocusEnd SubPrivate Sub Command3_Click() End 结束程序End Sub,4.4.2 ForNext循环结构语句,当型与直到型循环结构是通过某种条件满足与否控制循环的执行的,对于循环次数在设计时就已确定的问题,可以通过计数的方法控制循环的执行。VB也提供了利用计数控制循环执行的语句,这就是ForNe

21、xt循环结构语句,1. ForNext结构语句的格式及执行方式,ForNext结构语句的执行,For-Next循环的正常循环次数可用下式计算: 循环次数 = Int(e2-e1)/e3)+1 注意:三个循环参数e1、e2和e3中包含的变量如果在循环体内被改变,不会影响循环的执行次数; 但循环控制变量若在循环体内被重新赋值,则循环次数有可能发生变化。,例4-4编写一个程序求1到10这十个数的和与连乘积,算法分析求若干个数之和或若干个数的连乘积,可采用“累加”与“累乘”法进行。累加法是设置一个存放和数的变量,称为“累加器”,它的初始值设为0,累加过程通过循环实现,在循环体中,和数与累加器相加后再赋

22、值给累加器;累乘的算法与累加类似,不过设置的是“累乘器”,它的初始值应设为1,例4-5一个从由字母数字组成的字符串中找出所有大写字母并逆序输出的程序。,算法分析从一个字符串中找出符合要求的字符是采取对字符串的每一个字符逐个筛选的方法实现的,本例利用Mid函数可以从字符串中提取出单个字符,利用循环控制处理过程,循环的终值使用Len函数;对于符合要求的字符采用连接运算组成新字符串;逆序输出则是通过从后往前逐个提取字符再连接。,4.4.3 循环的嵌套,无论是Do-Loop循环,还是For-Next循环,都可以在大循环中套小循环。必须注意:小循环一定要完整地被包含在大循环之内,而不得相互交叉。 (1)

23、内循环变量与外循环变量不能同名; (2)外循环必须完全包含内循环,不能交叉,For i=1 To 10 For i=1 To 20 Next i Next i,例3.7,打印九九乘法表的程序代码:,Private Sub Form_Click() For i = 1 To 9 For j = 1 To 9 Print i; *; j; =; i * j; Next j Print Next i End Sub,例4-6一个模拟摇奖的程序。,设有100个人中签,要从中找出中奖人。可由机器自动随机产生1000个1100间的数据,第1000个随机数据即为中奖人的号码。 问题分析:问题的关键是如何产生

24、1100之间的随机整数。利用VB提供的产生01之间均匀分布的随机数的随机函数Rnd(x),可以得到任意区间范围内的随机整数: Int(upperbound - lowerbound + 1) * Rnd + lowerbound),例3.6 求最小公倍数、最大公约数,Private Sub Form_Click() n = Val(Text1) m = Val(Text2) If n n Do While (n 0) 用do while.loop结构实现求最大公约数 r = m Mod n m = n n = r Loop Print 最大公约数=, m, Chr(13) + Chr(10) Print 最小公倍数=, mn / m End Sub,例:比较x与y的大小, 使得 x大于y (假设 x=2,y=3) If xy Then t=x x=y y=t End If 或 If xy Then t=x:x=y:y=t,例:计算分段函数 If x0 Then y=sin(x)+sqrt(x*x+1) Else y=cos(x)-x

温馨提示

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

最新文档

评论

0/150

提交评论