资源描述
算法基础及算法基础及VBVB的基本语句的基本语句算法及程序设计基础赋值语句及InputBox、MsgBox函数 分支结构与分支结构语句循环结构与循环结构语句程序示例Points to Remember7/15/2024Visual Basic Programming算法及程序设计基础算法及程序设计基础 设计程序前,根据实际问题的特点和需求,同时考虑到计算机的工作特性,确定解决该问题所需要的方法和步骤称为“算法设计”。算法的概念算法示例算法的特征算法的描述基本算法结构4.14.17/15/2024Visual Basic Programming算法的概念算法的概念广义而言,算法就是解决某个问题或处理某件事的方法和步骤。狭义而言,算法是专指用计算机解决某一问题的方法和步骤。计算机算法可以分为两大类:一类是数值计算算法;另一类是非数值计算算法。研究解决各种特定类型问题的算法已成为一个称为“计算方法”的专门学科。对于同一问题的求解,往往可以设计出多种不同的算法。一般而言,评价一个算法的好坏优劣,主要看算法是否正确、运行的效率及占用系统资源的多少等。7/15/2024Visual Basic Programming算法示例算法示例算法1算法27/15/2024Visual Basic Programming算法算法1 1求两个自然数的最大公约数的算法求两个自然数的最大公约数的算法 S1.输入两个自然数M、N;S2.求M除以N的余数R;S3.使M=N,即用N代换M;S4.使N=R,即用R代换N;S5.若R0,则重复执行S2、S3、S4(循环),否则转S6;S6.输出M,M即为M和N的最大公约数。本算法是由古希腊数学家欧几里德提出的,所以又称为“欧几里德算法”。算法中的S1、S2、S3叫作算法步骤,每个算法步骤明确规定所要进行的操作及处理对象的特性(M、N为自然数)。欧几里德算法是求两个自然数最大公约数的经典算法。7/15/2024Visual Basic Programming算法算法算法算法2 2 2 2 在在在在N N N 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”信息,算法结束。本算法也称为“顺序查找算法”,也是在处理非数值信息时最常用的一种算法。7/15/2024Visual Basic Programming算法的特征算法的特征从上述算法的示例可以看出,作为算法,应具备以下特征:1)确定性-算法的每个步骤都应确切无误,没有歧义性。2)可行性-算法的每个步骤都必须是计算机能够有效执行、可以实现的,并可得到确定的结果。3)有穷性-一个算法包含的步骤必须是有限的,并在一个合理的时间限度内可以执行完毕。4)输入性-执行算法时可以有多个输入,但也可以没有输入(0个输入)。5)输出性-一个算法必须有1个或多个输出。7/15/2024Visual Basic Programming算法的描述算法的描述算法可以采用多种方式来表示。比如使用人们的自然语言像英语、汉语等来描述;使用某种代码符号来描述或者使用特定的图形来描述等等。由于图形的描述方法既形象,又直观,所以得到广泛的应用。用于描述算法的图形使用较多的是所谓的流程框图,简称流程图。它是使用规定的图形符号来描述算法的。流程图使用的图形符号见表4-1。图4-1和图4-2分别是上一节两个算法示例的流程图。图框内的文字用于说明具体的操作内容。显而易见,使用流程图比使用自然语言描述算法优越地多。7/15/2024Visual Basic Programming图形符号名称代表的操作输入/输出数据的输入与输出处理各种形式的数据处理判断判断选择,根据条件满足与否选择不同路径起止流程的起点与终点特定过程一个定义过的过程流程线连接各个图框,表示执行顺序连接点表示与流程图其他部分相连接7/15/2024Visual Basic Programming7/15/2024Visual Basic Programming基本算法结构基本算法结构“结构化程序设计方法”的核心是规定了算法的三种基本结构:顺序结构、分支结构和循环结构。三种基本结构的共同特点是:1)只有单一的入口和单一的出口;2)结构中的每个部分都有执行到的可能;3)结构内不存在永不终止的死循环。7/15/2024Visual Basic Programming顺序结构顺序结构7/15/2024Visual Basic Programming分支结构分支结构7/15/2024Visual Basic Programming循环结构循环结构7/15/2024Visual Basic Programming赋值语句及赋值语句及InputBoxInputBox、MsgBoxMsgBox函数函数 赋值语句InputBox函数MsgBox函数4.24.27/15/2024Visual Basic Programming赋值语句赋值语句赋值语句的形式不同数据类型数据的赋值图4-4 一个说明不同数据类型数据赋值方式的简单程序示例 4.2.14.2.17/15/2024Visual Basic Programming赋值语句的形式赋值语句的形式赋值语句的一般形式是:其中var表示某个变量名或属性名。当系统执行一个赋值语句时,将先求出赋值操作符”=”右边表达式的值,然后再把该值保存到”=”左边的变量中。这就是所谓的“赋值”。使用赋值语句可使变量或某个对象的某属性获得一个新值。示例 使用赋值语句还可以获取一个对象返回的当前属性值。例如:var=object.propety var=7/15/2024Visual Basic Programming赋值语句示例赋值语句示例x=This is a flowernumber%=72 Lable1.Text=Filename is:Text.Font.Size=12 改变字号Y=(a+b)/27/15/2024Visual Basic Programming不同数据类型数据的赋值不同数据类型数据的赋值变量类型 表达式类型 系统处理 数值 数值 系统先求出表达式的值,在将其转换为变量类型后再赋值 字符 数值 系统将把表达式的值转换为字符型赋给变量 逻辑 数值 所有的非0值,系统都转换为True赋给变量,0则转换为False赋给变量 整型 逻辑值Ture 变量的值将为-1;把逻辑值False赋给整型变量,变量的值为0 字符 逻辑值Ture 变量的值将为True;把逻辑值False赋给字符变量,变量的值为False 数值 字符 系统将给出数据类型不匹配的错误提示,并停止执行 7/15/2024Visual Basic Programming图图4-44-4 一个简单程序示例一个简单程序示例 7/15/2024Visual Basic ProgrammingInputBoxInputBox函数函数InputBox函数用来接受用户通过键盘输入的数据。InputBox函数使用的形式是:式中,v可以是变体变量或字符串型变量,也可以是数值型变量。在调用InputBox函数时,屏幕上将产生一个带有提示信息的对话框,用户输入数据后按回车键,即可把输入的数据赋给变量;按Esc键或单击“Cancel”按钮,则返回0值或空串。InputBox函数应用示例 4.2.24.2.2v=InputBox(Prompt,title,defsult,x,y,helpfile,context)7/15/2024Visual Basic ProgrammingInputBoxInputBox函数的各个参数的意义函数的各个参数的意义 Prompt:提示用的文字信息;title:对话框标题(字符型),缺省时,为空白;default:显示在用户编辑框中的缺省值,缺省时,返回空值;x,y:对话框在屏幕上显示时的位置,单位是特维,(x,y)是对话框左上角点的坐标;helpfile,context:帮助文件名及帮助主题号。有本选项时,在对话框中自动增加一个帮助按钮。7/15/2024Visual Basic ProgrammingInputBoxInputBox函数应用示例函数应用示例Private Sub Cmd1_Click()Dim N_student As String N_student=InputBox(请输入你的学号:,程序示例,230001)If Left(N_student,2)=23 Then Print 你是工程系的学生!Else Print 你不是工程系的学生!End IfEnd Sub7/15/2024Visual Basic Programming7/15/2024Visual Basic ProgrammingMsgBoxMsgBox函数函数MsgBox函数用于向用户发布提示信息,并要求用户作出必要的响应。MsgBox函数的形式是:MsgBox函数根据用户选择单击的按钮而返回不同的值:如表4-3 MsgBox函数有以下几种使用方法 4.2.34.2.3MsgBox(Prompt,button,title,helpfile,context)7/15/2024Visual Basic Programming式中各个参数的意义式中各个参数的意义 Prompt:提示用的文字信息;button:这是一个由4个数值常量组成的式子,形式为c1+c2+c3+c4,用于决定信息框中按钮的个数和类型以及出现在信息框中的图标类型,各个参量的可选值及其功能如表4-2(a)、表4-2(b)、表4-2(c)、表4-2(d)(0值为缺省值)title:信息框标题(字符型),缺省时,为空白;helpfile,context:帮助文件名及帮助主题号。有本选项时,在信息框中自动增加一个帮助按钮。7/15/2024Visual Basic Programming表表4-2(a)4-2(a)c1的取值内置常量名意义0VbOkOnly只显示“确定”按钮1VbOkCancel显示“确定”和“取消”按钮2VbAbortRetryIgnore显示“终止”,“重试”和“忽略”按钮3VbYesNoCancel显示“是”,“否”和“取消”按钮4VbYesNo显示“是”和“否”按钮5VbRetryCancel显示“重试”和“取消”按钮7/15/2024Visual Basic Programming表表4-2(b)4-2(b)c2的取值内置常量名意义16VbCritical显示关键信息图标 32VbQuestion显示警示疑问图标 48VbExclamation显示警告信息图标 64VbInformation显示通知信息图标 7/15/2024Visual Basic Programming表表4-2(c)4-2(c)c3的取值内置常量名意义0vbDefaultButton1第一个按钮为缺省按钮256vbDefaultButton2第二个按钮为缺省按钮512vbDefaultButton3第三个按钮为缺省按钮7/15/2024Visual Basic Programming表表4-2(d)4-2(d)c4的取值内置常量名意义0vbApplicationModel应用程序模式,用户在当前应用程序继续执行之前,必须对信息框做出响应;信息框位于最前面4096VbSystemModel系统模式,所有应用程序均挂起,直到用户响应该信息框为止7/15/2024Visual Basic Programming表表4-34-3按钮名内置常量取值OK(确定)vbOK1Cancel(取消)vbCancel2Abort(终止)vbAbort3Retry(重试)vbRetry4Ignore(忽略)vbIgnore5Yes(是)vbYes6No(否)vbNo77/15/2024Visual Basic ProgrammingMsgBoxMsgBox函数的几种使用方法函数的几种使用方法MsgBox函数有以下几种使用方法:使用赋值语句。如:ans=MsgBox(“非法数据!”,48,”提示信息”)使用Print方法。例如:Print MsgBox(“非法数据!”,48,”提示信息”)也可以把它等同为一个方法使用。如:MsgBox“非法数据!”,48,”提示信息”三种方法在执行时都可以获得如图所示画面。但第二、三种用法将得不到用户点击不同按钮的返回值(或没有返回值)。7/15/2024Visual Basic Programming分支结构与分支结构语句分支结构与分支结构语句 分支结构是程序的基本算法结构之一。VB提供了实现分支结构的相关语句。If-Then-Else-End If 结构语句Select-Case-End Select 结构语句4.34.37/15/2024Visual Basic ProgrammingIf-Then-Else-End If If-Then-Else-End If 结构语句结构语句该结构语句的一般形式该结构的变形1该结构的变形2例4-1 已知三角形三个边的长度,设计求此三角形面积的程序 例4-2一个有多个分支的示例程序 4.3.14.3.17/15/2024Visual Basic ProgrammingIfIf结构语句的一般形式结构语句的一般形式IfeThenA组语句组语句ElseB组语句组语句EndIf7/15/2024Visual Basic ProgrammingIfIf结构的变形结构的变形1 1IfeThenA组语句组语句EndifIfeThen7/15/2024Visual Basic ProgrammingIfIf结构的变形结构的变形2 2Ife1ThenA1组语句组语句ElseIfe2ThenA2组语句组语句.Endif7/15/2024Visual Basic Programming当当 a+bc 且且 a+cb 且且 b+ca时时,三三角角形形存存在在,其面积其面积式中:式中:p=(a+b+c)/2 例例4-1 4-1 已知三角形三个边的长度,已知三角形三个边的长度,设计求此三角形面积的程序设计求此三角形面积的程序算法流程图程序代码7/15/2024Visual Basic Programming 例例4-1 4-1 算法流程图算法流程图7/15/2024Visual Basic Programming 例例4-24-2一个有多个分支的示例程序一个有多个分支的示例程序程序代码7/15/2024Visual Basic Programming 例例4-2 4-2 程序代码程序代码Private Sub Command1_Click()Dim x As Integer x=Val(Text1.Text)If x 1 Then Text2.Text=“这是小于1的数”ElseIf x 20;Is=P等。7/15/2024Visual Basic Programming例例4-24-2的程序代码使用本结构语句实现的程序代码使用本结构语句实现Private Sub Command1_Click()Dim x As Integer x=Val(text1.Text)Select Case x Case Is 0时,判ve2否;当e30时,判ve2否,如果未超过,则执行循 环体;如果超过了,则退出循环。执行Next语句,v增加一个步长,即执行v=v+e3;转而执行判别操作。7/15/2024Visual Basic Programming注意注意循环参数e1、e2和e3中包含的变量如果在循环体内被改变,不会影响循环的执行次数;但循环控制变量若在循环体内被重新赋值,则循环次数有可能发生变化。十进制整数可准确转换为二进制数形式,而带小数点的十进制数在转换为单(双)精度数时则多半存在数制转换误差。若使用非整型数做循环控制变量和循环参数,那么循环次数就有可能发生意想不到的变化。7/15/2024Visual Basic Programming例例4-4求求1到到10这十个数的和与连乘积这十个数的和与连乘积 求若干个数之和或连乘积,可采用“累加”或“累乘”法。累加法是设置一个存放和数的变量,称为“累加器”,初始值为0,累加过程通过循环实现;累乘的算法设置的是“累乘器”,初始值为1,在循环体内,乘数应与累乘器相乘。在求乘积时,应注意乘积的大小,设置适当的数据类型。程序代码 7/15/2024Visual Basic Programming例例4-5大写字母逆序输出的程序大写字母逆序输出的程序 从一个字符串中找出符合要求的字符是采取对字符串的每一个字符逐个筛选的方法实现的,本例利用Mid函数可以从字符串中提取出单个字符,利用循环控制处理过程,循环的终值使用Len函数;对于符合要求的字符采用连接运算组成新字符串;逆序输出则是通过从后往前逐个提取字符再连接。程序代码7/15/2024Visual Basic Programming循环嵌套循环嵌套无论是Do-Loop循环,还是For-Next循环,都可以在大循环中套小循环。必须注意:小循环一定要完整地被包含在大循环之内,而不得相互交叉。Private Sub Form_Click()For i=1 To 9 For j=1 To 9 Print i;*;j;=;i*j;Next j Print Next iEnd Sub 执行本程序,窗体上将显示九九乘法表 例例4-64-6一个模拟摇奖的程序 4.4.34.4.37/15/2024Visual Basic Programming例4-6一个模拟摇奖的程序一个模拟摇奖的程序设有100个人中签,要从中找出中奖人。由机器自动随机产生1000个1100间的数据,第1000个随机数据即为中奖人的号码。问题的关键是如何产生1100之间的随机整数。VB提供了一个可以产生01之间均匀分布的随机数的随机函数Rnd(x)。为了生成某个范围内的随机整数,可用以下公式:Int(ub-lb+1)*Rnd+lb)这里,ub、lb分别是随机整数范围的上下限。程序代码 7/15/2024Visual Basic Programming随机函数随机函数Rnd(x)Rnd(x)其中,可选的 x 参数是 Single 或任何有效的数值表达式 如果使用参数且参数 x 0,则得到随机序列的下一个随机数;参数 x=0,则返回上一次生成的随机数。不使用x的结果与 x0相同。对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。调用 Rnd 之前,可先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有从系统计时器获得到的种子。7/15/2024Visual Basic Programming程序示例程序示例 例例4-74-7一个简易函数计算器程序 例例4-84-8 个人收入调节税应用程序 例例4-94-9 利用牛顿迭代法求方程根 例例4-104-10 原码转换成反码的程序 4.54.57/15/2024Visual Basic Programming例例4-7一个简易函数计算器程序一个简易函数计算器程序为了保证“计算器”在各种操作状况下都正常工作,程序需要考虑在用户没有在文本框中输入数据或输入的数据超出函数的定义域时的出错处理。程序中使用的IsNumeric(s)函数用于检测自变量s是否是一个可转换成数值的数字串,如果是,则返回逻辑值True,否则返回False。程序代码 7/15/2024Visual Basic Programming例例4-8个人收入调节税应用程序个人收入调节税应用程序 按月收入额计个人收入调节税的计税公式式中,pay为纳税人的月收入。程序代码 7/15/2024Visual Basic Programming例例4-9利用牛顿迭代法求方程根利用牛顿迭代法求方程根利用牛顿迭代法求方程xex-1=0 在x0=0.5附近的一个根,要求精确到10-7 牛顿迭代法算法说明 程序代码 7/15/2024Visual Basic Programming牛顿迭代法算法说明牛顿迭代法算法说明牛顿迭代法是求解一元超越方程的常用算法。设要求解的方程为f(x)=0,并已知一个不够精确的初始根x0,则有:上式称为牛顿迭代公式。式中,f(x)是f(x)的导函数。利用迭代公式,可以依次求出x1、x2、x3、,当|xn+1 xn|时的xn+1即为要求的根。xn+1=xn-f(xn)/f(xn)n=0,1,2,37/15/2024Visual Basic Programming例4-10 原码转换成反码的程序原码转换成反码的程序Mid函数的功能除可提取字符串的指定位置的字符之外。也可以如同一个变量一样用在赋值语句中,其功能是用指定的字符替换字符串中指定位置的内容。本示例使用了Mid函数的这一功能。程序代码 7/15/2024Visual Basic ProgrammingPoints to Remember7/15/2024Visual Basic Programming
展开阅读全文