版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
visualbasic程序设计第二版复习大纲第2章基本数据类型表达式
字符集和词汇集基本数据类型常量与变量表达式常用内部函数控制台的输入和输出2.1程序设计语言单位字符、词汇、表达式、语句、过程、函数等称为“语法单位”。字符是构成程序设计语言的最基本符号单词是具有语法意义的最小语法单位。命名规则以字母开头,由字母、数字和下划线组成。变量名的最后一个字符可以是类型说明符(%整型,&长整型)。不能和关键字同名。允许使用汉字作为用户自定义标识符。例.下面4组字符序列中,只有()中的所有字符序列可以作为VB的变量名A)Apple、Pupil_Mark、E30B)Ball、5C、sssf&C)Car-5、Track、Wm424D)M7k、Product、string答案A基本数据类型数值型字符型逻辑型日期型对象型整型实型字节型、短整型、整形、长整形(有符、无符)单精度、双精度、小数型变长字符串单字符类型关键字存储字节取值范围有符号整型Integer4-2147483648~2147483647有符号长整型Long8-9223372036854775808~9223372036854775807单精度浮点型Single4负数:-3.4028235E+38~-1.401298E-45正数:1.401298E-45~3.4028235E+38双精度浮点型Double8负数:-1.79769313486231570E+308~-4.94065645841246544E-324正数:4.94065645841246544E-324~1.79769313486231570E+308小数型Decimal16有效数字28位无小数点:+/-79228162514264337593543950335有小数点:+/-7.9228162514264337593543950335最小非零数:+/-0.0000000000000000000000000001单字符Char20~65535变长字符串String取决于平台0~约20亿个Unicode字符逻辑型Booleam取决于平台True或False日期型Date80001年1月1日0:00:00~9999年12月31日23:59:59对象型Object4保存引用对象的地址类型说明符:%整型&长整型!单精度浮点型#双精度浮点型2.3常量与变量
常量:在程序执行期间不发生变化。
ConstMax=1000变量:代表内存中指定的存储单元,根据需要赋予不同的数值,可以变化。Consta=2a=4Writeline(a)
Sub
main()
Dim
b
a=100
writeline(a)
End
Sub
其中变量a和b的数据类型分别是
A、整型,整型
B、可变型,可变型
C、整型,可变型
D、可变型,整型答案:C2.4运算符与表达式运算符:对基本数据类型的运算使用的描述符号运算量:被运算的对象——数据表达式:由运算符和运算量构成的式子主要运算符:算术运算符字符串连接关系运算逻辑运算一、VisualBasic的算术运算符运算符运算表达式例子^指数x^y(xy)*乘法x*y/浮点除法x/y\整数除法x\yMod取模xMody+加法x+y–取负,减法–x,x–y1.浮点数除法与整数除法
浮点除运算符:“/”。左右操作数可以为整数或者浮点数.运算结果的类型由其值决定。
例:3/2 结果等于1.5,浮点数2.整数除法整除运算符:“\”整除的操作数为整型数。操作数带有小数点,对其四舍五入为整型数,进行整除运算。运算结果简单地截取整数部分,小数部分不作舍入处理。例:20\2.6 结果等于63.取模运算
取模运算符:Mod(通常和“\”结合截取数据各位)用于求余数,结果是第一个操作数整除以第二个操作数所得的余数。如果左右操作数为实数,对其进行四舍五入取整,然后求模。运算结果的符号取决于左操作数的符号。例:25.63Mod-6.78 结果等于5“年份year不能被4整除”的表达式Yearmod4<>04.算术运算符的优先级
指数运算符 ^取负运算符 –乘、除运算符 */整除运算符 \取模运算符 Mod加、减运算符 +–5.求值顺序同级算符从左到右运算式子中含有括号,先计算括号内表达式的值;有多层括号,从内层括号往外层括号计算。7Mod5\2+Int(-4.5)*2答案:-9二、字符串连接
字符串表达式:两个字符串使用连接符“&”或“+”串接起来,生成一个新的字符串例:下列关系运算结果为“True”的是______。A.“2”&4=“24” B.“2”+“4”=“6”C.“2”+4=“24” D.“2”&“4”=“6”答案:A三、关系运算与逻辑运算
结果都是逻辑值(True和False)。通常用在程序的条件判断中。任何非0值都认为是逻辑真
TRUE–1FALSE0比较运算表运算符测试关系表达式例子=相等x=y<>或><不相等x<>y<小于x<y>大于x>y<=小于或等于x<=y>=大于或等于x>=y2.逻辑运算符
XYNotXXAndYXOrYXXorYXEqvYXImpY–1–10–1–10–1–1–1000–1–1000–1–10–1–10–100–1000–1–1逻辑运算符的优先级
Not→And→Or→Xor表达式的运算顺序
函数运算→算术运算→关系运算→逻辑运算例若x=2、y=4、z=6,则逻辑表达式
Not(x>y)Orx+y+z<50And100/z<y的值为
TRUE“canada”>”china”false有程序段 DimXAsInteger,YAsInteger X=5Y=6PRINTX+Y=11上述程序段运行时输出的结果是()A、X+Y=11B、11C、X+Y=11,D、Trued2.5常用内部函数转换函数数学函数字符串函数随机函数一、转换函数
转换函数:用于数据类型或形式的转换包括整型、浮点型、字符串型之间以及与ASCII码字符之间的转换。1.取整函数
Int(n)
返回不大于n的最大整数。Fix(n)
去掉n的小数部分,返回其整数部分例:将x四舍五入到百位(例如,若x=12374.52应舍入成12400)
Int(x/100+0.5)*100Asc(s):
返回字符串s的首字符的ASCII码值。Chr(n)把n转换为相应的字符。其中表达式n的值是一个的合法ASCII码值chr(13)+chr(10)Val(s)
函数返回字符串表达式s中所含的数值。若遇到字母(指数符号除外)则停止转换。Str(n)
返回数值n的字符串形式。当数字转成字符串时,字符串的第一个位一定是空格或是负号。数值型之间的转换函数CInt(x)
把x的小数部分四舍五入,转换成整数。当小数部分为0.5时,舍(或入)为最接近的偶数。?Cint(2344.5678)2345?Cint(2344.5)2344其他函数CCur(x)CDbl(x)CLng(x)CSng(x)CVar(x)
二、数学函数
数学函数用于各种数学运算,包括三角函数、求平方根、绝对值及对数、指数函数等常用数学函数。要与数学中的函数形式区别开来,写VB表达式是,由左至右一个一个数据转换。1.三角函数
Sin(x)
返回自变量x的正弦值。Cos(x)
返回自变量x的余弦值。Tan(x)
返回自变量x的正切值。Atn(x)
返回自变量x的反正切值。注意:在Sin,Cos,Tan函数的自变量是以弧度为单位的角度:1度=π/180=3.14159/180(弧度)绝对值函数Abs(x)
返回x的绝对值。?Abs(–50.3)50.33.符号函数
Sgn(x)
返回x的符号。当x的值<0时,函数返回–1;当x的值=0时,函数返回0;当x的值>0时,函数返回1;PrintSgn(12),Sgn(-2.4),Sgn(0)1–104.平方根函数
Sqr(x)
返回x的平方根。x的值须大于或等于0。例
Sqr(1+3.14159/2*Cos(48*3.14159/180))5.指数和对数函数Exp(x)
返回以e为底、以x为指数的值,即求ex值。例eatExp(a*t)
e^(a*t)
ⅹLog(x)
返回x的自然对数。例ln(1+|a+b|10)
Log(1+Abs((a+b)^10)log10(a2+2ab+b2)Log10(a*a+2*a*b+b*b)三字符串函数
对字符串进行处理1.删除空白字符函数LTrim(S)
去掉字符串s左边的空白字符。RTrim(S)
去掉字符串s右边的空白字符。Trim(S)
去掉字符串s左右两边的空白字符。2.字符串截取函数Left(s,n)
截取字符串s最左边的n个字符。Mid(s,p,n)
在字符串s中,从第p个字符开始,向后截取n个字符。Right(s,n)
截取字符串s最右边的n个字符。例:已知A$=”12345678”,则表达式Val(left$(a$,3)+Mid$(a$,3,3))的值为(
)。A、123345
B、12345
C、123456
D.468答案:A3.字符串长度测试函数Len(s)
返回字符串s的长度,即所含的字符个数。PrintLen("HelloWorld")
11PrintLen("华南理工大学")
66.字母大小写转换函数Ucase(s)
把字符串s中的小写字母转换成大写字母。Lcase(s)
把字符串s中的大写字母转换成小写字母。例:1.LowerS="HelloWorld1234"PrintUCase(LowerS)
HELLOWORLD12342.UpperS="HelloWorld1234"PrintLcase(UpperS)helloworld1234四.随机函数Rnd[(x)]
产生一个大于或等于0小于1的单精度随机数。例:PrintRnd.5795186生成某个范围内的随机整数Int((upper–lower+1)*Rnd+lower)例MyValue=Int((900*Rnd)+100)
‘生成100到999的随机数值‘用随机函数产生三位整数
Int((upper–lower+1)*Rnd+lower)
表达式Int(Rnd*41)+10产生的随机整数范围是(
)。
A.[10,40]
B.[10,41]
C.[10,51]
D.[10,50]答案:D2.6控制台数据的输入和输出Console类在System.Console命名空间定义,使用声明语句:
ImportsSystem.Console之后调用Console类的方法时不需要添加Console前缀。2.6.1键盘输入Read():从标准输入流读取一个字符。ReadLine():从标准输入流读取一行字符。
由于在键盘中输入的符号都是字符,为了把这些字符转换成所需要的数据类型,通常会使用Val函数。
2.6.2控制台输出若输出多个表达式项,则需要用格式字符串参数指定输出格式。一般形式:
Write(<字符串>,<输出项列表>)WriteLine(<字符串>,<输出项列表>)其中<字符串>可以包含直接输出的字符串和用一对花括号“{}”界定的格式串。2.格式串
格式串用于设置各输出项的输出格式。一个格式串可以包含多个用花括号界定的格式项。
格式项的语法形式为:
{<索引>[,<对齐>][:<格式说明>]}
2.格式串
通过指定相同的索引参数,一个输出项可以用多种格式输出。例如:Console.WriteLine("{0:X}{0:E}{0,10:N}",2478)分别将同一个数值设置为十六进制、科学记数法和带分隔符输出。结果:9AE2.478000E+0032,478.00第3章程序流程控制
顺序结构分支结构循环结构3.1分支结构单行结构条件语句(没有Endif)块结构条件语句(if…endif)
情况语句(不能用比较、逻辑表达式)一、单行结构条件语句格式:
If<condition>Then<statements>[Else<elsestatements>]注意:1.在一行上书写,没有Endif语句
2.else总是跟最靠近的那个then匹配下面程序段显示的结果是(
)。DimxIfxthenwriteline(x)elsewriteline(x+2)答案:2二、块结构条件语句格式:
If<condition_1>Then<statements_1>[ElseIf<condition_2>Then[<elseifstatements_2>]...[ElseIf<condition_n>Then[<elseifstatements_n>][Else[<elsestatements_n+1>]]
EndIf注意:1.else总是跟最靠近的那个then匹配
2.语句块<statements><elsestatements>不能与其前面的Then写在同一行上,否则VB认为是一个单行结构的条件语句。三、情况语句SelectCase<testexpression>[Case<expressionlist_1>[<statements_1>]][Case<expressionlist_2>[<statements_2>]]……[CaseElse[<statements_n>]]EndSelectSelectCase说明:
测试表达式<testexpression>可以是数值表达式或字符串表达式;表达式表列<expressionlist>中的表达式必须与测试表达式<testexpression>的类型相同。<expressionlist>称为域值,可以是下列形式之一:a.<expression_1>[,<expression_2>]……b.<expression_1>To<expression_2>c.Is<expression>下面的程序段,输入8后,输出结果Y是()。X=readline()SelectcasexCase1to8Y=1Case8to10Y=0Caseis=8Y=1Endselectwriteline(“{0},Y)答案:1例Submain()Dimx%,y%x=readline()SelectCasexCase1,3,5y=x-1Case6To10y=x+1Case2,4y=2*x结果:CaseIs>10x=3y=2y=x*x+1x=2y=4EndSelectWritel.ine({"x={0}“"y={1}“,x,y)EndSub(x的输入值为2.53,2.5)把一个实数赋给一个整变量,则只能获取它的整数部分了。3.2循环结构
While…Wend语句Do…Loop语句For…Next语句嵌套循环一、While…Wend语句While<condition>[<statements>]Wend二、Do…Loop语句先判断条件形式
Do[While|Until<condition>][<statements>]Loop后判断条件形式
Do[<statements>]Loop[While|Until<condition>]循环结构注意问题do、while循环体内都必须有修改循环条件的语句在do、while循环语句前应对变量赋初值一般情况,累加器赋0值,累乘器赋1值“条件”可以是关系表达式、逻辑表达式或常数例:s=0(s=1)k=0whilek<=5s=s+k(s=s*k)k=k+1wend与以下语句功能相同的语句是______
DoWhilea=True…LoopA.Do…LoopWhilea=TrueB.Do…LoopWhilea=FalseC.DoUntila=True…LoopD.DoUntila=False…Loop答案:d答案:c三、For…Next语句For<counter>=<start>To<end>[Step<step>][<statements>][ExitFor][<statements>]Next[<counter>]步长<step>≥0时,作递增循环,即应有<end>≥<start>;<step><0时,作递减循环,应有<end>≤<start>;<step>=1时,可省略Step子句。for循环结构注意问题For循环结束后,其循环控制变量的值一定超过终值。例:
Fori=1to5write(“*”)
Nextiwriteline(i)
(i=6)Submain()n=0Fori=1To4Forj=4To0Step-2n=n+jNextjNextiwrite(“{0}{1}{2}”,j,I,n)EndSub答案:-2524x=4fori=1to10step3x=x+inexti?xa)27b)26c)57d)38答案b有程序段(int(end-start)/step+1)DimIAsIntegerFORI=7TO90STEP5write(“{0}”,I)NEXTI上述程序共执行()次循环。A、17B、16C、15D、14答案a四、嵌套循环外层循环与内层循环必须层层相套,循环体之间不能交叉
Forj=k1Tok2DoWhileb……LoopNextj(正确)DoWhileb1Forj=k1Tok2……LoopNextj(错误)在窗体上输出以下形式的星星阵列
*
***
*****
*******
……Submain()Dimline%,i%,j%writeline("请输入行数:")line=readline()Fori=1Toline'外循环控制输出行数
PrintSpace(20-i);'每行前面的空格数
Forj=1Toi*2-1‘内循环控制输出个数i
write("*")Nextj
writeline '换行NextiEndSub*********************2.退出循环
(1)ExitDo语句
(2)ExitFor语句功能:强制退出循环,并转到Do┅Loop语句或next的下一个语句去执行。第4章复合数据类型
数组是由固定数目的同类元素按一定顺序排列而成;
结构则由不同类型元素组成的数据类型。数组一维数组二维数组5.1一维数组
数组说明格式为:
Dim<数组名>(<下标上界>)[As<数据类型>]注意:下标下界为0
数组元素个数:下标的上界
+1一维数组主要内容数组元素的输入、输出数组元素的平均值、最大、最小值数组元素的排序两数组合并数组元素的输入
方法一:(readline方法)
Fori=1To20writeline("请输入第"&Str(i)&"个元素")a(i)=readline()Next方法二:(随机函数)RandomizeFori=1To20A(i)=Int(900*Rnd)+100Nexti
数组元素的输出Fori=1To20write("a(,{0},)=",I,a(i))
IfiMod5=0ThenwritelineNext一维数组初始化语句的一般格式:
Dim<数组名>(
)As<数据类型>={<常量1>,<常量2>,…,<常量n>}例如:
Dimb()AsInteger={1,2,3}注意:VB.NET不允许对指定了上界的数组进行初始化。一维数组的初始化ModuleModule1SubMain()DimS()AsSingle={90,76,80,75,82,93,57,75,85,68} DimSumAsSingle,iAsIntegerSum=0Fori=0To9Sum=Sum+S(i) '对数组S的每个元素S(i)求累和NextiConsole.WriteLine("平均成绩
={0:f}",Sum/10)EndSubEndModule例:某班有10名学生参加计算机等级考试,求这些学生的平均成绩。ImportsSystem.ConsoleModuleModule1SubMain()Dima(9)AsInteger,iAsInteger,maxAsInteger
Fori=0To9Write("a({0})=",i)a(i)=Val(ReadLine()) '输入数组a的元素NextI
max=a(0)Fori=1To9'使用循环过程求最大值Ifa(i)>maxThenmax=a(i)NextI
WriteLine("max={0}",max)EndSubEndModule求10个数中的最大值5.2二维数组
数组说明格式为:
Dim<数组名>(<下标上界1>,<下标上界2>)[As<数据类型>]第一维和第二维下标下界都规定为0,数组元素的个数:
(下标上界1+1)*(下标上界2+1)二维数组元素的输入
使用readine函数为:Fori=0To2Forj=0To2Console.Write("d({0},{1})=",i,j)d(i,j)=Val(Console.ReadLine())NextjNexti二维数组元素的输出
Fori=0To2Forj=0To2Console.Write("{0}",d(i,j))Nextj
Console.WriteLine()Nexti二维数组初始化语句的一般格式:
Dim<数组名>(,)As<数据类型>={{<第0行各常量>},{<第1行各常量>},
…,{<第m-1行各常量>}}例如:Dimd(,)AsInteger={{2,1,8},{3,5,4},{6,9,0}}注意:与一维数组类似,VB.NET也不允许对指定了上界的二维数组进行初始化。
5.二维数组的初始化例:以下能对二维数据正确初始化的语句是()
A)dima(,)asinteger={{1,2,,3},{4,5,6,}}b)dima()asinteger={{1,2,,3},{4,5,6,}}c)dima(0to1,0to2,)asinteger={{1,2,,3},{4,5,6,}}d)dima(1,2)asinteger={{1,2,,3},{4,5,6,}}答案:aUBound函数用于求数组各维的下标上界。一般形式为:
UBound(<数组名>[,<第n维>])功能:求指定数组第n维的下标上界,省略[,<第n维>]时,默认为求一维数组的下标上界。例如:UBound(s,1)=29UBound(s,2)=2UBound(h)=29
6.UBound函数
已知某个班三个学生进行三门课考试,成绩如下:
计算机基础
英语
高等数学学生1859080学生2657075学生3758580计算出每个学生三门课的平均成绩。
例4-4
ImportsSystem.ConsoleModuleModule1SubMain()Dims%(,)={{85,90,80},{65,70,75},{75,85,80}}Dimi%,j%,sum%,save%(2)WriteLine("每个学生的平均成绩:")sum=0Fori=0To2 '计算和输出每个学生的平均成绩
sum=0Forj=0To2sum=sum+s(i,j)Nextjsave(i)=sum/3WriteLine("save({0})={1}",i,save(i))NextIEndSubEndModule在VB.NET中,提供了ForEach…Next语句专门用于遍历数组或集合中的元素。
一般格式:
ForEach<变量名>In<数组或集合名><循环体>Next<变量名>其中,<变量名>存放数组或集合中当前访问的元素值。
功能:遍历数组或集合中的每个元素,执行循环体内的语句。执行循环体的次数一般由数组元素的个数确定。ForEach…Next语句5.编一程序,把一个m行n列矩阵中的元素存放到一个二维数组中,并求出该数组最小值。ImportsSystem.ConsoleModuleModule1SubMain()Dimi%,j%,m%,n%,min!,x!write("请输入矩阵的行数:")m=readline()writeline("请输入矩阵的列数:")n=readline()
Dima!(m,n)WriteLine("输入的矩阵为:")Fori=1TomForj=1Tona(i,j)=readline()Write("{0}",a(i,j))NextjWriteLine()Nextimin=a(1,1)foreachxinaIfx<minThenmin=x'求最小值NextiWriteLine("最小值为:{0}",min)EndSubEndModule重新定义一维数组长度的ReDim语句的一般格式:
ReDim[Preserve]<数组名>(<下标上界>)例如:
DimA1(5)AsIntegerReDimA1(10)AsInteger说明:不能改变该数组的类型。
不能改变该数组的维数。
数组的重定义5.4结构类型
记录类型定义的一般形式如下:Structure<typename><elementname>[([<subscripts>])]As<type>[<elementname>[([<subscripts>])]As<type>]……EndStructure结构类型可以在标准模块或窗体模块中定义,但不能在事件过程中定义。日期数据类型dat,可以用如下定义:
StructuredatyearAsintegermonthAsstring*3dayAsintegerEndStructure学生记录可以说明为:StructurestunoAsIntegernameAsString*8sexAsString*2birthdayAsdatscoreAsSingleEndStructure
Dims1asstu记录变量的访问一般形式为:<varname>.<elementname>对嵌套记录变量s1的元素birthday的赋值:s1.no=15=“张勇”
s1.birthday.year=1980
编写一个过程,输入和显示一个学生的学习情况。
PrivateStructurerecnoAsIntegernameAsString*8mathsAsIntegerphysicsAsIntegerprogrammingAsIntegertotalAsIntegerEndStructureSubmain()DimstudentAsrecstudent.no=InputBox("学号:")=InputBox("姓名:")student.maths=InputBox("数学成绩:")student.physics=InputBox("物理成绩:")gramming=InputBox("程序设计成绩:")student.total=student.maths+student.physics+_grammingPrint"学号:";student.noPrint"姓名:";Print"数学:";student.mathsPrint"物理:";student.physicsPrint"程序设计:";grammingPrint"总成绩:";student.totalEndSub2.With语句
With语句格式为:
With<object>[<statements>]EndWith
Submaink()DimstudentAsrec
Withstudent.no=InputBox("学号:").name=InputBox("姓名:").maths=InputBox("数学成绩:").physics=InputBox("物理成绩:").programming=InputBox("程序设计成绩:").total=.maths+.physics+.programmingPrint"学号:";.noPrint"姓名:";.namePrint"数学:";.mathsPrint"物理:";.physicsPrint"程序设计:";.programmingPrint"总成绩:";.total
EndWithEndSub第5章过程
过程的定义与调用参数传递过程与变量的作用域子过程的定义[Private|Public][Static]Sub<name>[(<arglist>)][<statements>]
EndSub
函数过程的定义[Public|Private][Static]Function
<name>[(<arglist>)][As<type>][<statements>]…..
[<name>=<expression>]/return<expression>EndFunction过程调用1.子过程调用(独立语句)<name>[(<argumentlist>)]或 Call<name>[(<argumentlist>)]例:Callfac(m,c1):Callfac(n,c2)cmn=c1/c2
fac(m,c1)/
fac(n,c2)错2.函数过程调用(是一个数值)<name>[(<argumentlist>)]例:cmn=fac(m)/fac(n)定义过程中参数的确定需要传入的数据传值参数(ByVal)需要传出的数据传址参数(ByRef,或缺省)函数传出的数据可由函数名返回
变量的作用域过程(局部)级变量:在过程内部用Dim或Static声明的变量,作用域为本过程。文件级(模块级)变量:在文件中各过程之外,用Dim或Private语句声明的变量,其作用域为本文件或本模块。工程级(项目级、全局)变量:在文件中各过程之外,用Public语句定义的变量,其作用域为整个工程或整个项目或全局。注意在同一模块不同过程中定义的变量可以同名;如:form1中有sub1、sub2,均可定义A变量同一模块不同级的变量可以同名;如:form1中可定义模块级A,亦可定义过程级A不同模块中定义的全局变量可以同名,但引用另一模块的全局变量时必须在变量名之前加上模块名。如:form1中可定义全局级A(form1.A),
module1中可定义全局级A(module1.A)过程中引用的变量,总是同名变量中作用范围最小的那一个变量。
变量的生存期
动态变量静态变量动态变量
使用Dim说明当程序执行到动态变量所在的过程时才给动态变量分配存储单元。过程执行结束后,动态变量所占用的存储单元被系统回收。过程再次被调用时,重新分配存储单元和初始化。静态变量
使用Static说明在整个应用程序运行期间,分配有固定存储单元。过程执行结束时,变量的值仍保存该过程再次被调用时,变量的值为上次过程调用结束时的值。输出:0在以下关于变量作用域的描述中,不正确的是()A)当某过程变量与全局变量同名,全局变量在这个过程中就会被屏蔽B)静态变量不是模块级或工程级变量,其作用域只限于在它所定义的过程内部C)在某一个过程中定义的变量的作用域只能是这一过程D)在某一个模块中定义的变量的作用域只能是这一模块答案DDimxAsIntegerPublicSubsub1(xasInteger)x=x+1EndSubPublicFunctionfun1(ByValxasInteger)asintegerFun1=2*xEndfunctionSubmain()staticyAsIntegercallsub1(y)Writeline(“x={0}y={1}”,x,y)x=fun1(y)Writeline(“x={0}y={1}”,x,y)EndSub运行结果:X=0y=1X=2y=1编写过程程序设计的步骤输入数据处理数据(调用过程)输出数据定义过程中参数的确定需要传入的数据通常是输入的数据需要传出的数据通常是处理的结果
给定求组合数公式为:,编一程序,输入m和n的值,求的值。PrivateSubfac(ByValk&,f&)PrivateFunctionfac(ByValk&)aslongDimt&,i&t=1Fori=1Tokt=t*iNexti
f=tfac=t/returntEndSubSubmain()Dimm&,n&,cmn&,c1&,c2&,c3&n=readline()m=readline()
Callfac(m,c1):Callfac(n,c2):Callfac(m-n,c3)cmn=c1/(c2*c3)
cmn=fac(m)/(fac(n)*fac(m-n))writeline(“cmn={0}”,cmn)EndSub第6章面向对象程序设计基础
6.2.1类的定义1.类定义语句一般格式:[<访问修饰符>]Class<类名>[<访问修饰符>]<数据成员说明>[<访问修饰符>]<属性定义>[<访问修饰符>]<方法定义>[<访问修饰符>]<事件定义>EndClass<访问修饰符>为关键字Private、Protected或Public等(1)在标准模块中定义类或与标准模块并列定义类。(2)在窗体类中定义类或在窗体的代码窗口中与窗体类并列定义类。2.类定义的位置
属性定义语句的一般格式:
[<访问修饰符>][ReadOnly|WriteOnly]Property<属性名>([<形式参数表>])As数据类型
Get
<语句块>[Return<数据成员名>]EndGet
Set(ByValValueAs数据类型
)<语句块>
<数据成员名>=<值>EndSetEndProperty6.2.3属性的定义及其使用6.2.4事件的定义及其触发1.事件的定义[<访问修饰符>]Event<事件名>([<形式参数表>])2.事件处理函数(事件过程)Private|Public]Sub<事件处理函数名>([<形式参数表>])_Handles<对象名>.<事件名><函数体>EndSub3.事件的触发RaiseEvent<事件名>([<实际参数表>])4.能够触发事件对象的定义[Dim|Private|Public]WithEvents<对象名>As[New]<类名>6.2.5方法的定义及其调用
(1)类中Sub子过程定义格式[<访问修饰符>]Sub<方法名>([<形式参数表>])<子过程体>EndSub(2)类中Function函数过程定义格式[<访问修饰符>]Function方法名([形式参数表])[As数据类型]
<函数过程体>EndFunction1.对象定义语句
定义对象语句的一般格式:[Dim|Private|Public]<对象名>As[New]<类名>关键字New用来创建类的实例(即分配存储空间)。例如:DimD1AsNewD2.对象成员的访问在程序中访问对象成员的一般形式:<对象名>.<成员名>例如,对象Date1的数据成员year表示为:Date1.year它的方法成员SetDate、IsLeapYear和PrintDate表示为:Date1.SetDateDate1.IsLeapYearDate1.PrintDate
6.3.1构造函数
对象变量的初始化由一个特殊的成员函数来完成,这个成员函数称为构造函数。定义构造函数的语法格式:PublicSubNew([<形式参数表>])<函数体>EndSub调用构造函数的语法格式:[Dim|Private|Public]<对象名>AsNew<类名>([<实际参数表>])
6.3.1构造函数
例:PublicSubNew(ByValidAsString,ByValNameAsString)id_s=id:Name_s=NameEndSubDimemp1AsNewEmp("0001","何欣欣")6.4.2派生类的定义
在VB.NET中,定义派生类时要使用Inherits语句来指定派生类的基类。即定义派生类的语法格式:
Class<派生类名>
Inherits<基类名>[<访问修饰符>]<数据成员说明>[<访问修饰符>]<属性定义>[<访问修饰符>]<事件定义>[<访问修饰符>]<方法定义>EndClass6.4.3派生类的构造函数
基类的构造函数是不能被派生类继承的。所以,如果要对派生类对象初始化,则需要定义派生类的构造函定义派生类的构造函数的语法形式:PublicSubNew(<形式参数表>)‘基类和派生类
MyBase.New(<实际参数表>)‘基类<函数体>EndSub
调用构造函数的语法格式:[Dim|Private|Public]<对象名>AsNew<类名>([<实际参数表>])
‘基类和派生类注意:调用派生类构造函数NEW时,先调用基类构造函数,再调用派生类构造函数。作业讲评2.定义一个Rectangle类,它包含两个数据成员length和width;以及包含用于求长方形面积的成员函数。再定义Rectangle的派生类Rectangular,它包含一个新数据成员height和用来求长方体体积的成员函数。在main函数中,使用两个类,求某个长方形的面积和某个长方体的体积。ImportsSystem.ConsoleModuleModule1PublicClass
rectangleProtectedlengthAsSingleProtectedwidthAsSinglePublicSub
New(ByVallAsSingle,ByValwAsSingle)length=l:width=w
EndSub
PublicProperty
x()AsSingleGetReturnlengthEndGetSet(ByValVAsSingle)length=VEndSet
EndPropertyPublicProperty
y()AsSingleGetReturnwidthEndGetSet(ByValVAsSingle)width=VEndSet
EndProperty
PublicFunction
area()Returnlength*width
EndFunction
EndClass
PublicClassrectangular
InheritsrectanglePrivateheightAsSinglePublicSub
New(ByVallAsSingle,ByValwAsSingle,ByValhAsSingle)
MyBase.New(l,w)height=h
EndSub
PublicProperty
z()AsSingleGetReturnheightEndGetSet(ByValVAsSingle)height=VEndSet
EndProperty
PublicFunction
volume()Returnlength*width*height
EndFunction
EndClass
SubMain()write(“输入长:”)l=val(readline())write(“输入宽:”)w=val(readline())Dimobj1AsNewrectangle(l,w)WriteLine("length={0}",obj1.x())WriteLine("width={0}",obj1.y())WriteLine("area={0}",obj1.area())
SubMain()write(“输入长:”)l=val(readline())write(“输入宽:”)w=val(readline())write(“输入高:”)h=val(readline())Dimobj2AsNewrectangular(l,w,h)WriteLine("length={0}",obj2.x())WriteLine("width={0}",obj2.y())WriteLine("height={0}",obj2.z())WriteLine("volume={0}",obj2.volume())EndSubEndModule
控件概述窗体标签与文本框图片框命令按钮、复选框和单选按钮框架列表框和组合框滚动条计时器第7章常用控件Control类是所有控件的基类,它提供了所有控件都具有一些公共属性、方法和事件。分
类名
称说
明布局Location控件的左上角相对于其容器左上角的坐标MaximumSize控件大小的上限MinmumSize控件大小的下限Size控件的宽度Width和高度Height设计Name控件的名称数据Tag包含有关控件的数据的对象外观BackColor控件的背景色BackgroundImage在控件中显示的背景图像Font控件显示的文字的字体ForeColor控件的前景色Text与此控件关联的文本行为Enabled一个逻辑值,指示控件是否可以对用户交互作出响应TabIndex在控件的容器的控件的Tab键顺序TabStop一个逻辑值,指示用户能否使用Tab键将焦点放到该控件上Visible一个逻辑值,指示是否显示该控件及其所有子控件属性分类名称说
明布局Move在移动控件时发生Resize在调整控件大小时发生操作Click在单击控件时发生DoubleClick在双击控件时发生MouseClick在鼠标单击该控件时发生MouseDoubleClick当用鼠标双击控件时发生键盘KeyDown在控件有焦点的情况下按下键时发生KeyPress在控件有焦点的情况下按下并释放键后发生KeyUp在控件有焦点的情况下释放键时发生焦点GotFocus在控件接收焦点时发生LostFocus当控件失去焦点时发生鼠标MouseDown当鼠标指针位于控件上并按下鼠标键时发生MouseUp在鼠标指针在控件上并释放鼠标键时发生MouseWheel在移动鼠标滚轮并且控件有焦点时发生事件7.3.1窗体
窗体是一个重要的图形对象。窗体(Form)是程序员的“工作台”,当用户新建一个项目时,系统自动创建一个名为Form1主窗体,它用来设计图形用户界面。
窗体除了具有自己的属性、事件和方法外,还像一个容器一样,可以在它上面放置除了窗体之外的其他控件。
窗体显示出来时,它上面的控件是可见的;窗体移动时,它们也随之移动;窗体隐藏时,上面的控件也不可见了。窗体的常用方法名
称说
明Show加载并显示窗体Close卸载窗体Hide隐藏窗体窗体的常用事件名
称说
明Load显示窗体前发生Activated当使用代码激活或用户操作激活窗体时发生Show显示窗体时发生Deactivate当窗体失去焦点不再是活动窗体时发生Resize窗体、控件的Size属性值改变时发生SizeChanged窗体、控件的Size属性值改变时发生FormClosing关闭窗体前发生FormClosed关闭窗体后发生
语法形式:InputBox(PromptAsString,TitleAsString,
DefaultResponseAsString,XPosAsInteger,
YPosAsInteger)AsString1.InputBox函数必选项,指定在对话框中的显示的提示信息。可选项,指定在对话框标题栏中的显示的提示信息。如果省略
Title,则标题栏中显示应用程序名称。
可选项,指定在对话框文本框中给定的默认值。如果省略,则弹出对话框时显示的文本框为空。可选项,用于指定屏幕左边缘与对话框左边缘之间的距离。
如果省略
,则对话框水平居中。
可选项,用于指定屏幕顶部与对话框上边缘之间的距离。如果省略,则对话框垂直定位在屏幕向下大约三分之一处。标签
Label控件一般用于显示静态的不可编辑的文本信息。例如:Label控件由Text属性提供描述性文字。可以使用Font属性设置字体风格、大小、对齐方式等,还可以使用Image属性在Label控件上显示图像。Label控件参与窗体的Tab顺序,但不接受焦点,所以不能用于接收用户的输入。Label控件能响应很多事件,但在实际中一般都不使用。
文本框
文本框用于建立文本输入区或编辑区,以便实现数据的输入、编辑和修改等功能。
主要属性:text,显示文本框中的当前文本。
TextAlign,文本框中文本的对齐方式:
Left左对齐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5-Phenyl-1-1-3-1-terphenyl-4-4-dicarboxylic-acid-生命科学试剂-MCE
- 大庆中学数学试题及答案
- 2026年高端车内饰定制市场分析报告
- 2026年纺织服装行业品牌竞争与市场发展趋势报告
- 2026年智慧城市建设创新报告:未来展望与应用策略
- 2026年零售行业改制重组与股权架构升级报告
- 2026年麻醉药智能化发展报告
- 2026年健康食品行业报告:懒人经济下健康食品市场的发展趋势
- 2026年大数据产业发展趋势报告:全球洞察与中国实践
- 2026年食品行业烘焙设备技术发展报告
- 2026年新教材人教版九年级上册英语期中复习:Unit 1-4+期中5套测试卷汇编(含答案)
- 河北省邯郸市2025-2026学年高一上学期期中联考语文试题及答案
- ESC 2026新版心力衰竭管理指南精读
- 2024+ESO指南:卵圆孔未闭患者卒中后诊断与治疗
- 2026智联招聘笔试题库及答案
- 2026版《药物临床试验质量管理规范》GCP考试题库(含标准答案+解析)
- EDA技术及应用项目教程 教学大纲
- 中医护理评估
- 2025年度中国展览数据统计报告
- 2026年中考作文押题指导
- 全新版大学英语视听说教程1答案
评论
0/150
提交评论