- 83.50 KB
- 2022-07-29 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
一:基础知识对象的有关概念I1.对彖Object:VB中常用的对彖有:窗体、控件等。2.对象的三要素(1)属性F^operty:用来描述和反映对象外部特征的参数。(2)方法Method:允许其他对象与之交互的方式,表明一个对象所具有的能力。(3)事件Event:响应对象的动作称为事件,它发生在用户与应用程序交互时。如单击控件、鼠标移动、键盘按下等。事件驱动EventDriven:VB为窗体和大多数控件都规定了一组事件,当应用程序被启动后,VB随时准备捕获各种事件。一旦发生了某个事件,VB就会执行与该事件相联系的事件过程;执行完后,VB等待下一个事件的发生。VB程序的执行步骤如下:I(1)启动应用程序,装载和显示窗体;(2)窗体(或窗体上的控件)等待事件的发生;(3)事件发生时,执行对应的事件过程;(4)觅复执行步骤(2)和(3);(5)直到遇到END结束语句结束程序的运行;或按“结束”强行停止程序的运行。VB集成开发环境I1.主窗口应用程序窗口,曲标题栏、菜单栏和工具栏组成。2•窗体(form)窗口设计VB程序的界面。3.代码(code)窗口编辑窗体、标准模块中的代码。4.属性(properties)窗口所有窗体或控件的属性设置。5.工程资源管理器(projectexpror)窗口保存一个应用程序所有的文件。6.工具箱(toolbox)窗口显示各种控件的制作工具,供用户在窗体上设计建立VB程序的步骤I1.建立用户界面的对象,并设置对象属性;2.对象事件过程及编程;3.程序运行和调试;4.保存文件:窗体frm格式和vb工程vbp格式\nVB编码基础I1.VB代码不区分字母的大小写系统保留字自动转换每个单词的首字母大写;用户白定义行以第一次为准。2.语句书写自由一行可书写几句语句,z间用冒号分隔;一句语句可分若干行书写,用续行符_(空格+卜•画线)连接一行<=255个字符。3.注释有利于程序的维护和调试Rem开始或单撇号’4.保留行号与标号数据类型I常量在程序运行过程屮,其值不能被改变的量称为常量。1、整型常量(1)整型(Integer):表示-32768至32767Z间的整数例如:1011020(2)长整型(Long):表示-2,147,483,648至乙147,483,647Z间的整数例如:长整型常数的书写:23&通常我们说的整型常量指的是十进制整数,但VB中可以使用八进制和十六进制形式的整型常数,因此整型常数有如下三种形式:1)十进制整数。如125,0,-89o202)八进制整数。以&或&0(字母0)开头的整数是八进制整数,如&025表示八进制整数25,即(25)8,等于十进制数21。3)十六进制。以&H开头的整数是十六进制整数,如&H25表示十六进制整数25,即(25)16,等于十进制数37。VB屮的颜色数据常常用十六进制整数表示。2、实数1)单精度实型(Sngle):有效数为7位表示-3.37E+38至3.37E+38Z间的实数2)双精度实型(Double):有效数为15位常量的表示:1)十进制小数形式。它是由正负号(+,・)、数字(0~9)和小数点(.)或类型符号(!、#)组成,BP±n.n,±n!或士n#,其中n是0~9的数字。例如0.123、.123、123.0、123!>123#等都是十进制小数形式。2)指数形式。\n±nE±m或士n.nEim,±nD±m或±n.nD±m例:1.25E+3和1.25D+3相当于1250.0或者1.25x103。3、字符串常量在VB中字符串常量是用双引号"”扌舌起的一串字符,例如“ABC",七bcdefg“,”123”,©,"VB程序设计”等。说明:(1)字符串屮的字符可以是所有西文字符和汉字、标点符号等;(2)””表示空字符串,而八表示有一个空格的字符串;算术运算符〉字符运算符〉关系运算符〉逻辑运算说明:1.当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连接运算符,然后处理比较运算符,最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行。2.可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。3.表达式的书写中需注意的问题(1)运算符不能相邻。例a+・b是错误的。(2)乘号不能省略。例x乘以y应写成:x*y(3)括号必须成对出现,均使用圆拾号。(4)表达式从左到右在同一基准并排书写,不能出现上下标(5)要注意各种运算符的优先级别,为保持运算顺序,在写VB表达式时需要适当添加括号(),若用到库函数必须按库函要求书写。4.不同数据类型的转换运算结果的数据类型向精度高的数据类型靠。lnteger0与int(N)相同,当NvO时,int(N)与fix(N)相等。例如:Fix(9・59)=9,lnt(9.59)=9Fix(-9.59)=-9,lnt(-9.59)=-10思考:如何实现四舍五入取整?(2)Asc(nAbcdH)值为:65(只取首字母的Ascii值)(3)Val(Habc123n)值为:0,Val(M1.2sa10M)值为1.2注意:Val()函数只将最前面的数字字符转换为数值常用方法方法是面向对象的,故使用的形式为:[对象•]方法Print方法形式:[对象.]Print[{Spc(n)|Tab(n)}][表达式列表][;|,]作用:在对象上输出信息对象:窗体、图形框或打印Printer),省略对象在窗体上输岀。Spc(n)函数:插入n个空格,允许重复使用。Tab(n)函数:左端开始右移动n列,允许重复使用。;(分号):光标定位上一个显示的字符后。,(逗号):光标立位在下一个打印区的开始位置处。无;,时换行。开始打印的位置缺省为打印对象的左上角0,0。注意:Print方法在Form_Load事件过程中起作用,必须设置窗体的AutoRedraw为True。二:程序结构•顺序结构VB程序设计采用结构化程序设计的思想。在VB中有3种基本的程序流程结构:顺序结构、选择结构和循环结构。所有的程序都可以看成是这三种结构或三种结构的组合。★顺序结构所谓顺序结构,就是在程序运行过程屮,按照语句的顺序逐条执行。。顺序结构中主要的语句是赋值语句、输入输出语句及End语句等。赋值语句赋值语句是最基本的语句通过赋值语句,可以在程序屮改变变量的值,或改变对象属性值。其语法格式为:•变量名=表达式•对象•属性=表达式例如:A=Text1.TextB=0Textl.Text=Text1.Text+Commandl.CaptionA=2=3’结果为false(表达式2=3的值)sb=Round(Sqr(delt)/(2*a),7)\n•选择结构1.If...Then语句(单分支结构)Ifv表达式〉Then语句块EndIf或Ifv表达式>Thenv语句〉例:已知两个数x和y,比较它们的大小,将大的数存在x中Ifx0Thenx1=(・b+Sqr(b*b・4*a*c))/(2*a)x2=(-b・Sqr(b*b・4*a*c))/(2*a)Label4.Caption=”方程有两实根,分别为:”+Str(x1)+Str(x2)Elselfb*b・4*a*c=0Thenx2=(-b)/(2*a)Label4.Caption="方程有一根,为:”+Str(x2)ElseLabel4.Caption=”方程没有实根”EndIf\nEndSub•循环结构循环结构语句1.For循环FOR循环一般格式:For循环变量=初值to终值step步长语句组(也被叫做循环体)next循环变量例题:累加器s=1+3+5+7+9+…+19s=0fori=1to20step2s=s+inextiprints答案:100注意1:初值和终值即可是整数,也可是小数s=0fori=1.2to4.9step0.2s=s+1nextiprints答案:19注意2:步长=1时,可省略不写;步长值不能为0例题:累乘器:s=1fori=1to5s=s*inextiprints答案:120注意3:初值和终值大小s=1fori=5to1step2s=s*inextiprints答案:1(因为循环条件不满足,循环语句没执行)将步长改为一2,答案为\n练习:求1到100的和。PrivateSubCommand1_aick()DimiAsInteger,sumAsIntegersum=0Fori=1To100sum=sum+iNextiPrintsumEndSub累乘器:乘=1*2*3*...*100PrivateSubCommand2Click()DimiAsInteger,chengAsSnglecheng=1Fori=1To10cheng=cheng*iNextiPrintchengEndSub累加、累乘累加、累乘是较常见的数值问题。累加(累乘)是将多个数相加(乘),所以一般采用循环结构來实现。在循环体屮应有表示累加(如sum=sum+x)或累乘(如t=t*i)的赋值语句。需要注意的是,累加中用于存放和的变量一般赋初值为0,而累乘中用丁存放积的变量赋初值为1。例题:阶乘求1!+2!+...+n!,n由键盘输入。【分析】该题先求阶乘,再将阶乘值累加。循环次数出用户输入确定(即n的值)。PrivateSubForm_Click()Dimsasdouble,tasdouble,nasintegers=0t=1n=val(lnputBox(M请输入n的值”))Fori=1tont=t*i*求i!s=s+tNextiHint“1!+2!+...+”;n;”!=”;sEndSub4037913三:静态数组及声明数组不是一种数据类型,而是一组相同类型的变量的集合,数组必须先声明后使用。两类数组:静态(定长)数组、动态(可变长)数组\n1.静态数组及声明形式:Dim数组名(下标1[,下标2...])[As类型]声明了数组的名、维数、大小、类型维数:几个下标为几维数组,最多60维。下标:[下界To]上界省略下界为0,必须为常数。每一维大小:上界一下界+1数组人小:每一维人小的乘积例:Dimmark(1to100)AsInteger数组的基木操作1•用循环数组元素进行赋值Fori=1To10iA(i)=0Nexti2.用循环输岀数组元索Fori=1To10printiA(i)NextI四:穷举法穷举法的基本思想是:对要解决的问题的所有可能情况一一检查,从中找到符合要求的答案。例题:白元买白鸡问题。假定公鸡每只5元,母鸡每只3元,小鸡1元钱3只。现在有100元钱要求买100只鸡,而且每一种鸡都要有,请编程列出所有可能的购鸡方案。设公鸡、母鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:x+y+y=1003x+5y+z/3=100三个未知数,两个方程,此题有若干个解,采用“穷举法”,把每一种情况都考虑到。最简单三个未知数利用三重循环来实现。PrivateSubCommand1_Click()Dimx,y,zAsIntegerDimaAsIntegerForx=1To20Fory=1To33Forz=1To100\nIf5*x+3*y+z/3=100Andx+y+z=100ThenPrint"x=";x;Print"y=";y;PrintHz=n;zEndIfNextzNextyNextxPrintEndSub运行结果如下:例题:求100-999Z间的所有“水仙花数”「水仙花数”是一个三位数,具各位数字的立方和等于该数本身。例如:153=1八3+5八3+3八3,153是一个水仙花数。【分析】采用穷举法对指定范围内的每一个数进行判断它是否为水仙花数。判断一个数是否为水仙花数的关键是如何将此数的各位数字分离出來。如对于数据153,可采用下面的方法分离其各位数字(1)int(153/100),得到百位数字1。(2)int((153-1*100)/10),W到十位数字5。(3)153-1*100-5*10,得到个位数字3。程序代码如下:PrivateSubForm_Click()Dimi%,a%,b%,c%Fori=100to999a=i\100b=(i-a*100)\10c=i-a*100-b*10Ifi=a*a*a+b*b*b+c*c*cThenPrinti;NextiEndSub运行结果如下:153370371407\n选择结构1.if...Then语句语句格式:(1)If<表达式>Thenv语句〉(2)If<表达式〉Thenv语句块〉EndIf语句功能:当v表达式〉的值为True或非零时,执行Then后面的语句(或语句块),否则不做任何操作,实现单分支选择结构。。1.If...Then..Else语句语句格式:(1)If<表达式>The门<语句1>Elsev语句2>(2)Ifv表达式〉Thenv语句块1>Else<语句块2>EndIf语句功能:当v表达式>的值为True或非零时,执行Then后面的语句(语句块),否则执行日se后面的语句(或语句块),实现双分支选择结构例如:输入一个整数,判断其奇偶性。程序代码如下:PrivateSubFormClick()Dimxasintegerx=InputBox(ui#输入一个整数”)Ifxmod2=0ThenPrintx;”是偶数”ElsePrintx;”是奇数”EndifEndSub2.If...Then..Eself语句语句格式:IfV表达式1>Thenv语句块1>Hselfv表达式2>ThenV语句块2>\n[Elsev语句块n+1>]EndIf语句功能:根据不同的表达式值确定执行哪个语句块,实现多分支选择结构。使用说明:先计算v表达式的值,若为真,则执行v语句块1>,并跳过其他分支语句执行If语句的后续语句(即EndIf后面的语句):若为假,则计算v表达式2>的值,依此类推,直到找到一个为真的条件时,才执行相应的语句块,然后执行EndIf后面的语句。格式屮的日se是可选项,表示若无任何表达式值为真时,则执行v语句块n+1>;若无日se选项,R所有条件表达式值都不为真,则不执行If语句中的任何语句块。【注意】当If语句内有多个表达式的值为真时,只执行第一个为真的表达式后的语句块。例题:求一元二次方程的根。y=axA2+bx+c的形式的一元一次方程,输入a,b,c的值,的到方程的根DimaAsSngleDimbAsSngleDimcAsSngleDimx1AsSngleDimx2AsSnglePrivateSubCommand1_aick()a=Val(Textl.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifb*b・4*a*c>0Thenx1=(・b+Sqr(b*b・4*a*c))/(2*a)x2=(-b・Sqr(b*b・4*a*c))/(2*a)Label4.Caption=”方程有两实根,分别为:”+Str(x1)+Str(x2)Elselfb*b-4*a*c=0Thenx2=(-b)/(2*a)Label4.Caption=”方程有一根,为:”+Str(x2)BseLabel4.Caption=”方程没有实根”EndIf\nEndSub三:算法及程序穷举法的基木思想是:对要解决的问题的所有可能情况一一检杳,从中找到符合要求的答案。例题:百钱买百鸡问题:我国古代数学家张丘建在《算经》屮提出了“百鸡问题J“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各儿何?”每种鸡至少有一只分析】设母鸡、公鸡、小鸡各为x,y,z只,程序代码如下:PrivateSubCommand1_aick()Dimx,y,zAsIntegerDimaAsIntegerForx=1To20Fory=1To33Forz=1To100lf5*x+3*y+z/3=100Andx+y+z=100ThenPrintHx=";x;Printny=n;y;Print”z=”;zEndIfNextzNextyNextxPrintEndSub