1、算法与程序设计小结第一章 计算机解决问题的过程 计算机解决问题的一般过程:分析问题 设计算法 编写程序 调试运行程序 算法 算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地说,算法是用计算机求解某一问题的方法,是可以被计算机机械地执行的一组动作,这些动作必须是有穷的,在有限步内可以完成。算法的特征:有穷性:一个算法的步骤定义是有限的,并且必须保证执行有限步之后结束。确定性:算法的每一步骤必须有确切的定义,无二义性。输入:一个算法有零个或多个输入。输出:一个算法有一个或多个输出。可行性:算法中有待执行的运算和操作是相当基本的,能够精确地运行的 描述方式:自然语言、流程图、伪代码
2、程序和程序语言 程序实际上是一组操作指令或语句序列,是计算机执行算法的操作步骤。其核心是算法设计。程序设计语言的发展:机器语言、汇编语言、高级语言 程序结构:顺序结构、选择结构(或称为分支结构、判断结构)、循环结构第二章 程序设计基础 可视化开发环境:工具箱、工程资源管理器、属性窗口的使用 VB三种工作模式:设计模式、运行模式、中断模式 对象:面向对象的程序设计中,把现实世界中具有各种特性的实体称为对象。窗体中使用最频繁的控件对象是标签(label)、文本框(TextBox)和命令按钮(CommandButton)。常用的属性:Name、BackColor、Font、Caption、Text、
3、Height、Enable、Visible等 方法:对象具有的功能和操作称为方法。事件和事件驱动机制:事件是用户与对象之间的交互动作。在VB中,系统预先定义好了一系列事件,如单击(Click)、双击(Dblclick)、装入(Load)等等。VB语言概述在计算机程序设计中,数据是一个非常广义的概念,任何符号(如数字、英文字母、汉字或某些特殊符号)只要赋予它一定含义,就是数据。为了更好的处理各种数据,VB系统预先定义了多种基本数据类型,大致可分为三类:数值型、字符串型,以及不属于以上两类的其它类型,参见教材53页数据类型表。不同类型数据的运算特性是不同的。例如,数值型数据通常可以进行加减乘除四则
4、运算,而字符串型数据通常进行串连接、子串查找等操作,不能进行四则运算。程序运行时,所有数据都需要存储在计算机的内存中。常量(Constant)是一个内存单元,在程序运行过程中其值不会改变。变量(Variable)是一个命名的内存单元,在程序运行过程中其值可以改变。命名规则参见教材54页学习指引。格式:Const 常量名As 数据类型=表达式格式:Dim 变量名 As 数据类型在为一个变量选择数据类型时,必须考虑它的可能大小。不同的数据类型可以表示的数据范围是不同的。参见教材55页所列表格。VB语言概述在计算机程序设计中,数据是一个非常广义的概念,任何符号(如数字、英文字母、汉字或某些特殊符号)
5、只要赋予它一定含义,就是数据。为了更好的处理各种数据,VB系统预先定义了多种基本数据类型,大致可分为三类:数值型、字符串型,以及不属于以上两类的其它类型,参见教材53页数据类型表。不同类型数据的运算特性是不同的。例如,数值型数据通常可以进行加减乘除四则运算,而字符串型数据通常进行串连接、子串查找等操作,不能进行四则运算。程序运行时,所有数据都需要存储在计算机的内存中。常量(Constant)是一个内存单元,在程序运行过程中其值不会改变。变量(Variable)是一个命名的内存单元,在程序运行过程中其值可以改变。命名规则:必须以字母或下划线开头,由字母、数字或下划线组成,长度不超过255个字符,
6、不能使用VB的关键字,不区分大小写。详见教材54页学习指引。格式:Const 常量名As 数据类型=表达式格式:Dim 变量名 As 数据类型在为一个变量选择数据类型时,必须考虑它的可能大小。不同的数据类型可以表示的数据范围是不同的。参见教材53页所列表格。运算符是对数据进行加工处理的过程,描述各种不同运算的符号称为运算符(Operator)。算术运算符:常见的8种算术运算符参考教材56页学习指引中的运算符表。字符串运算符:字符串运算可以对字符串型数据进行串连操作,即将两个或多个字符串连接成一个字符串,主要有“&”和“+”两种。系统函数又称为内部函数,是系统预先定义、由程序系统内部提供的一些程
7、序段,存放在函数库中,共程序员直接通过函数名调用。调用格式为:函数名(参数值列表)VB提供的常用系统函数参见教材57页学习指引。考试中涉及到的函数还有:Fix(x)只取数值的整数部分、Int(x)取小于等于数值x的最大整数、Mid(s,n,m)从字符串s第n个位置开始取长度为m的字符串。表达式(Expression)是指由运算符及括号连接各种运算元素组成的有意义的式子。运算元素可以是常量、变量及函数。表达式有数值表达式、字符表达式等。赋值语句是程序设计语言中最基本的语句,它的作用是把某一值赋给某一变量。格式为:变量名=表达式 例如:j=5i=ji=i+5t=jj=ii=t 注意:如果数值变量没
8、有赋值,其值为0;如果字符串变量没有赋值,其值为空串。赋值运算符两边的数据类型要一致,否则可能会发生“类型不匹配”的错误。InputBox()是提供从键盘输入数据的系统函数。语法格式为:InputBox(提示信息,标题,默认值,位置)Print方法。格式:print 输出项1;输出项2;输出项n 如果用分号隔开,则后面输出项紧跟前一输出项,如果用逗号隔开,按照分区格式输出。MsgBox函数。MsgBox函数的作用是弹出一个对话框,以显示字符串。例如:MsgBox 可兑换人民币&rmb&元选择结构条件语句1语句2YNIF语句If 条件 then语句块End if 说明:简单IF语句只包含一个分支
9、,如果条件成立,则执行then下面的语句块;如果条件不成立,就什么也不执行。If 条件 then语句块1Else语句块2End if 说明:该语句只包含两个分支,如果条件成立,则执行then下面的语句块1;如果条件不成立,执行else分支后的语句块2简单简单IF语句语句IF/then/else语句语句If 条件 thenIf 条件 then语句块1Else语句块2End ifElseIf 条件 the语句块3Else语句块4End if End ifIF语句嵌套语句嵌套控制条件VB支持的判断条件都是由关系运算符构成的关系表达式或由逻辑运算符构成的逻辑表达式.关系运算符 关系运算符也称为比较运算
10、,它用于对两个数据的值进行比较,比较的结果是一个逻辑值。用关系运算符连接的表达式称为关系表达式。如果表达式成立,其逻辑值为真(True),如果不成立,其逻辑值为假(False)。常用关系运算符见课本68页学习指引部分。逻辑运算符 在实际问题中,对一些复杂的条件,需要用几个关系式组合起来表示,这种组合操作就是逻辑运算,又称为布尔运算。常用的逻辑运算符包括与(And)、或(Or)、非(Not)。对于And,只有两端连接的条件都成立,逻辑运算结果才为True;对于Or,只要两端连接的条件有一个成立,逻辑运算结果就为True;对于Not,则是取反操作,若原条件为True,则逻辑运算结果False,若原
11、条件为False,则逻辑运算结果为True。控制条件表示 逻辑运算符和关系运算符常在控制语句中用于表示条件。在一个表达式中可以出现多种类型的运算符,它们的优先顺序由高到低如下:算数运算字符串运算关系运算逻辑运算Select case 语句Select case 表达式 case 表达式范围1语句块1case 表达式范围2语句块2case 表达式范围n语句块n case else语句块n+1End select 表达式范围 一个常量值,如1。用逗号分隔的值序列 值的一段范围 Is表达表,如is45循环结构循环控制变量赋初值终止判断语句块改变循环控制变量的值是否 Fornext语句格式For 循环
12、控制变量=初值 to 终值 step 步长循环体语句块Next 循环控制变量 两个方面:一是重复要做的是什么事,二是如何控制循环。循环控制三要素 循环控制变量的初值 循环控制变量的终值 在循环体中具有使循环控制变量由初值向终值变化的语句DOLOOP语句Do While 条件 语句块Loop形式形式1:Do While/Until Loopi=1s=1Do while i50 s=s*i i=i+1Loopp2语句块2否是DOLOOP语句Do 语句块Loop While 条件形式形式2:Do Loop While/Untili=1s=1Do s=s*i i=i+1Loop while i50p2
13、语句块2否是DOLOOP语句 通过对DoLoop语句以上几种形式的比较,我们总结如下:在以上两种形式的比较中,我们发现while和until的区别仅仅是循环条件相反,通过修改循环条件,它们之间可以互相转化,所以在实际应用中,我们习惯上经常使用Do whileLoop 和DoLoop Until两种形式,即“当结构”和“直到结构”。使用“当结构”,即当满足循环条件才执行循环体;使用“直到结构”,即直到满足条件才退出循环,循环体至少执行一次,而“当结构”中,若不满足条件,可能循环体一次也不执行;使用DoLoop语句需要注意循环体中一定要有修改循环控制条件的语句,否则一旦进入循环体就无法结束循环,陷
14、入死循环。循环的嵌套和选择语句一样,循环结构也可以进行嵌套。例:编写程序打印下列图形。*编写代码:For i=1 to 6 循环输出6行 For j=1 to i print*;每行输出i个“*”Next j print 换行Next i 数组(详见教材92页)数组是一组类型相同的数据的有序集合。它使用同一个名称来标识整个数组,每个分两元素称为数组元素,数组元素在数组中顺序排列。每一个数组元素都由一个唯一的顺序号(下标)来标识。数组的定义 一维数组:Dim 数组名(下标)As 数据类型 多维数组:Dim 数组名(下标1,下标2)As 数据类型 数组的引用 数组元素的引用是通过下标标识的。数组名
15、加下标能唯一标识一个数组元素。自定义过程自定义过程 定义一个子过程,首先要确定子过程的名称和参数,然后在过程体中书写实现具体功能的程序语句。参数是调用一个过程时需要知道的数据。子过程定义好后,可以在任何一个函数或子程序中进行调用。调用子过程的一般格式:Call 子过程名(参数值列表)子过程是没有返回值的,通过Call命令调用。例如,上一节学习指引中有道打印图形的例题,我们采用循环嵌套来实现,现在也可以使用子过程来实现。Sub Dayin(i As Integer)Dim j As Integer For j=1 To i Print*;Next j PrintEnd SubPrivate Su
16、b Form_Click()Dim i As Integer For i=1 To 6 Call Dayin(i)Next iEnd Sub定义过程的一般格式:Sub 子过程名(参数 as 类型,参数 as 类型)实现功能的具体语句 End Sub自定义函数自定义函数 构造一个函数的思路与分析数学应用题有些类似,要知道已知什么、求什么。将已知条件放在参数中,在调用时通过参数传递得到,所求的值可以通过函数返回值返回。调用函数的一般格式:函数名(参数值列表)因为函数是有返回值的,所以调用时常和赋值语句一起使用,将返回值存放在变量中,其格式为:变量名=函数名(参数值列表)例如,计算7!+11!-10
17、!Function fact(n As Integer)As Long Dim i As Integer Dim s As Long s=1 For i=1 To n s=s*i Next fact=sEnd FunctionPrivate Sub Form_Click()Dim s As Long s=fact(7)+fact(11)-fact(10)Print sEnd Sub定义函数的一般格式:Function 函数名(参数 as 类型,参数 as 类型)As 类型 实现功能的具体语句 函数名=返回值 End Function 参数传递:主调过程通过参数传递数据给被调过程,过程间传递的主要是执行一个过程需要的已知数据。通常称函数或过程定义处的参数为形式参数,调用时所对应的参数值是实在参数。实在参数可以是常量也可以是变量,还可以是表达式。调用一个过程或函数时,实在参数的个数、类型、位置要与形式参数一一对应。