《VB程序设计基础》第3章 结构化程序设计与数组

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章结构化程序设计与数组3.13种基本的控制结构3.2选择结构3.3循环结构3.4多重循环3.5数组及其应用3.6小结3.13种基本的控制结构程序设计的起码要求,是使程序能够在计算机上运行并得到正确的结果。但仅此还很不够,一个高质量的程序,还应具有占用内存少、运算速度快等特点,尤其是要具有较好的易读性。设计程序的过程需多次地阅读、修改程序,如果易读性差、书写紊乱、过多使用goto语句(早期的BASIC语言程序中充斥着大量这种语句),则难以阅读和验证程序,即使运行结果正确,但维护(如以后对程序作修改)会相当复杂和困难。结构化程序设计的基本思想是:任何程序都可以用3种基本结构表示,即顺序结构、选择结构和循环结构,由这3种基本结构或3种基本结构的复合嵌套构成的程序称为结构化程序。3.13种基本的控制结构图3-13种基本结构流程图语句1语句2(a)顺序结构假真表达式语句1语句2(b)选择结构语句表达式真假(c)循环结构3.2.1IF结构1.行IF语句格式:IF条件THEN语句1[ELSE语句2]功能:条件成立执行语句1,否则执行语句2(流程图如图3-1(b)所示);可以缺省关键字ELSE和语句2。行IF语句必须在同一行内写完。VisualBasic的1条语句如果太长,需要写在多行上,则应在行结束处插入“_”(空格加下划线)后再按回车键,如例3-1所示。3.2.1IF结构例3-1编程,输入x,求下列分段函数f(x)值。用InputBox输入x,计算结果f(x)输出到Text控件。在窗体上建立文本框控件Text1和命令按钮控件Command1。编制事件过程Command1_Click如下:PrivateSubCommand1_Click()DimxasSinglex=InputBox(输入x,计算分段函数的值)Ifx=5ThenText1.Text=Str(1-x*x)Else_Text1.Text=Str((x-5)^0.25)'以上两行之间加入了2个字符“_”,因此VisualBasic将它们视为写在1行上的‘行IF语句。EndSub5x5)-(x5xx-1f(x)1/423.2.1IF结构例3-2编程,输入x、y,仅当x<y时,交换x、y值,然后输出x、y的值(在Text控件输入,输出到Label控件)。建立文本框控件Text1、Text2,标签控件Label1;编制事件过程Form_Click如下(单击窗体响应):PrivateSubForm_Click()DimxasSingle,yasSingle,TempasSingle'文本框Text1、Text2中应已输入相应数值,再赋值到变量x、y。x=Text1.Text:y=Text2.Text'当xy时,交换两个变量的值:执行关键字Then后的3个赋值语句。IfxyThenTemp=y:y=x:x=TempLabel1.Caption=x=+str(x)+y=+str(y)EndSub3.2.1IF结构程序中表达式x=+str(x)+y=+str(y)不可以写作x=+x+y=+y,因为字符类型与数值类型数据不可以用“+”连接。2.块IF语句格式:If条件Then语句1[Else语句2]EndIf其中:语句1、语句2可以是多条VisualBasic可执行语句,可包含选择结构、循环结构。3.2.2情况选择结构情况选择结构用于多路选择,根据测试表达式的不同取值决定执行该结构的哪一个分支。测试表达式可以为数值、字符等类型,常用的一般为整型或字符串类型。情况选择结构格式如下:SelectCase测试表达式[Case表达式列表1[语句块1]][Case表达式列表2[语句块2]]...[CaseElse[语句块n+1]]EndSelect3.2.2情况选择结构(1)测试表达式:为数值表达式或字符串表达式。(2)表达式列表:多个表达式用逗号间隔即为表达式列表。表达式可以是单个表达式(单值)或“表达式To表达式”(多个整数值)。如:11,3,5,7To15,20都是合法的表达式列表。如果比较测试表达式与其他表达式的关系,则用符号“Is”表示测试表达式的值。(3)执行流程:①自上而下顺序地判断测试表达式的值与表达式列表中的哪一个匹配,如有匹配则执行相应语句块,然后转到EndSelect的下一语句。②若所有的值都不匹配,执行CaseElse所对应的语句块,如省略CaseElse,则直接转移到EndSelect的下一语句。3.2.3OnErrorGoTo语句程序在编辑时,VisualBasic会自动显示其中的编译错误,要求及时修改。如输入某行语句为“x=”后,系统将自动显示编译错误对话框,提示信息为“要求表达式”。编译错误一般为语法错误,应根据所学VisualBasic的规则予以纠正。有些明显的错误,因为按照VisualBasic的规则能够解释(如一个语句只有一个字符“a”,被解释为调用无参过程a),则会在运行时出错或产生错误的结果。另一类错误是所谓“适时错误”,即运行时产生的错误。常见的有“下标超界”、“除数为0”等。适时错误一般为逻辑错误,应仔细检查程序设计的全过程,改正其中的错误。若产生运行错误,将终止执行程序。对可预见的运行错误,可以用OnErrorGoTO语句捕获,并将控制转去执行一段预先写好的处理错误的语句。格式:OnErrorGoToL1功能:在执行该语句后,若发生运行错误,控制将转去执行标号为L1的语句。3.3.1For/Next语句格式:FOR控制变量X=初值e1TO终值e2[STEP步长e3]循环体NEXT控制变量X该语句的结构流程如图3-3所示。例如,计算1~100之间奇数和的程序段可编写为:Forn=1to99step2s=s+nNextn也可以写作:Forn=99to1step-2:s=s+n:Nextn3.3.1For/Next语句图3-3For/Next结构流程图x=e1x=e2循环体x=x+e3不成立成立x=e1x=e2循环体x=x+e3不成立成立当e3>0当e3<03.3.1For/Next语句在For/Next结构中:(1)步长缺省值为1。(2)循环变量取值不合理,则不执行循环体。如下列循环一次也不执行。Forn=99to1step2s=s+nNextn(3)循环体中可以出现语句“ExitFor”,用于将控制转移到Next后一语句。(4)循环正常结束(未执行ExitFor等控制语句)后,控制变量为最后1次取值加步长。3.3.2While/Wend语句格式:While条件循环体Wend功能:当条件为真(True)时执行循环体。While/Wend结构的特点是:先判断条件、后执行循环体,常用于编制某些循环次数预先未知的程序。3.3.3Do/Loop语句格式1:Do[{While|Until}条件]'先判断条件、后执行循环体循环体Loop格式2:Do'先执行循环体、后判断条件循环体Loop[{While|Until}条件](1)选项“While”当条件为真时执行循环体,选项“Until”当条件为假时执行循环体。(2)循环体中可以出现语句“ExitDo”,将控制转移到DO/LOOP结构后一语句。3.4多重循环多重循环即循环结构的完全嵌套,内层循环的控制变量一般与外层循环的控制变量不同名。有关多重循环的规则,不在此赘述。3.5.1数组声明与数组元素的引用1.数组声明数组也是变量(成组的变量),因此也必须遵循“先声明、后引用”的规则。如果把先前所介绍的变量称为简单变量,那么关于简单变量的声明方式、初始值同样适用于数组(第4章关于变量作用域、生存期的详细介绍,也同样适用于数组)。例如,下列语句声明:y是Single类型数组,数组y的元素有y(0)、y(1)、y(2)、y(3)、y(4)、y(5);Integer类型数组m的元素有m(0)、m(1)、m(2)、m(3)、m(4)、m(5)、m(6);Single类型数组x的元素有x(1)、x(2)、x(3)、x(4)、x(5);等等。Dimy(5)AsSingle,aAsbyteDimm(6)AsInteger,x(1To5)AsSingle语句中的y(5)、m(6)、x(1To5),是所谓“数组说明符”。3.5.1数组声明与数组元素的引用2.数组说明符一维数组说明符格式:数组名(下标界)二维数组说明符格式:数组名(下标界,下标界)下标界格式:[m1To]m2,其中:m1≤m2,m1、m2必须是数值常量。多维数组说明符格式依此类推,如三维数组说明符格式为“数组名(下标界,下标界,下标界)”等。(1)数组名的命名规则与(简单)变量相同。(2)下标界说明数组元素的最小下标、最大下标、决定数组中元素个数。如果在下标界中缺省“[m1To]”,则最小下标由OptionBase语句决定:(3)下标界中的常量如果为浮点数,则自动取整,可以为负数。3.5.1数组声明与数组元素的引用二维以上数组各元素的存储顺序,在此不再赘述。因为,对数组的访问(引用)只能是对各元素的访问,对一般读者来说,更重要的是如何正确地引用数组元素。3.数组元素的引用引用一维数组元素:数组名(下标表达式)引用二维数组元素:数组名(下标表达式1,下标表达式2)请注意下列例题中数组的声明,数组元素的引用(如输入、输出)方法。3.5.2动态数组数组说明符中的下标界不能出现变量,因此试图用下列语句在运行时动态的声明数组的大小(数组元素个数)是错误的。n=InputBox(请输入数组元素个数)Dima(n)AsInteger使用VisualBasic的动态数组可以满足这一类的需求,以提高程序的通用性。动态数组声明格式:ReDim数组名(下标界[,...])As类型标识符[,...]3.6小结按照结构化程序设计的基本思想,任何程序都可以用顺序结构、选择结构和循环结构这3种基本结构表示。在一个简单的顺序结构的程序中,各个语句是顺序执行的,这种程序主要由赋值语句、输入输出语句组成。选择结构中,If结构提供两路选择,Select结构可以根据表达式的不同取值而执行不同的分支,实现多路选择功能。For/Next、While/Wend和Do/Loop都能有效地构成循环结构。在程序中如需要处理大量类型相同的数据,VisualBasic提供了数组,支持此类运算。数组由多个同类型的元素组成,用同一个名、不同下标标识数组中不同元素。数组必须先声明、后引用。程序设计的过程是科学思维方式的训练和实践的过程,程序设计又是一门实践性很强的课程,多做编程练习并坚持每个程序都在计算机上调试、运行,是学习这门课程最好的方法。

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功