计算机二级VB笔记第四章

2025-04-30

第四章:程序

程序:若干条语句(命令)的集合。程序(代码)的基本结构有三种:顺序结构,选择结构和循环结构 (1)顺序结构:

按照书写的顺序从上往下执行。任何一段代码总得来说是顺序结构

(2)选择结构:表示如果....就....的意思

分为三种选择:单分支选择,双分支选择,多分支选择 1.单分支选择:

a.单if(没有endif)在then后面只执行一条语句 格式: if 条件 then 语句1

如果条件成立,就执行语句,执行完后,就转到下一行去执行。

如果条件不成立时,直接转到下一行执行.

例:以下程序用于从键盘上输入一个数,如果是3的倍数则输出yes,no,如果不是3的倍数,输出no

Dim x As Integer Cls

x = InputBox(\请输入一个数\ If x Mod 3 = 0 Then Print \ Print \

b.块if(有end if),语句可以写多条 格式: if 条件

语句序列

end if

如果条件成立,就执行语句序列,执行完后,直接转到end if的后面执行。如果条件不成立,就直接转到end if后面执行. 例:输入一个数,并判断其是否为偶数,如果是,则输出yes,no,bye,如果不是,则输出bye dim x as integer

x=inputbox(“请输入一个数:”) if x/2=x\\2 then

print “yes” print “no” end if

print “bye” 如果将

if x/2=x\\2 then

print “yes” print “no” end if

print “bye”

改为if x/2=x\\2 then print “Yes” print “no” print “bye”

结果是否一样??

2、双分支选择: if 条件 then 语句序列1 else

语句序列2 end if

如果条件成立,就执行语句序列1,执行完后,就转到end if后面执行,如果条件不成立,就执行else后面的语句序列2,执行完后,就转到end if后面执行.

例:dim x as string,s as integer

x=inputbox(“请输入:”) if x=”ABCD” then s=0 endif s=1

?s &&无论输入的值为多少,结果都为1

例:判断所输入的年份的是否为闰年.闰年满足以下两个条件之一:

(1)能被4整除但不能被100整除 (2)能被400整除

如果闰年,则输出yes,否则输出no

Dim x As Integer x = Val(Text1.Text)

If x Mod 4 = 0 And x Mod 100 <> 0 Or x Mod 400 = 0 Then MsgBox \ Else

MsgBox \ End If

val(S)-->将字符串s转换为数值,当碰到第一个非数字字符时,转换停止.

print val(\你好\'3 0 0

3、多分支选择:1)if...elseif...elseif..else...endif

2)select case...case....case....case else....endif 1)if...elseif....endif 格式:if 条件1 then 语句序列1 elseif 条件2 then 语句序列2 elseif 条件3 then 语句序列3 ......

elseif 条件n then 语句序列n [ else

语句序列n+1] end if

首先判断if条件是否成立,如果成立,就执行语句序列1,执行完后,就转到endif的后面.如果if条件不成立,就接着判断elseif

后面的条件2,如果成立,就执行语句序列2,执行完后,转到end if的后面执行,依次类推.

当所有的if条件都不成立时,就执行else后面的语句

即系统会从上往下依次判断每一个if条件,一旦找到满足条件的if,执行其中的语句序列,执行完后,就转到end if的后面。即多个if只能选一个 else 语句序列n+1并不是必须写

例:根据输入的笔试成绩(bs)和上机成绩(sj)计算考生的等级,等级规定如下:

(1)如果笔试成绩和上机成绩均在85以上,为”优秀” (2)笔试成绩和上机成绩均在75以上,为”良好” (3)笔试成绩和上机成绩都及格,为”通过” (4)笔试成绩和上机成绩一门未过,为”补考” (5)笔试成绩和上机成绩两门未过,为”重考” 要求运行时,单击”评定”则计算考生的等级

Dim bs As Single, sj As Single, dj As String bs = Val(Text1.Text) sj = Val(Text2.Text)

If bs >= 85 And sj >= 85 Then dj = \优秀\

ElseIf bs >= 75 And sj >= 75 Then dj = \良好\

ElseIf bs >= 60 And sj >= 60 Then dj = \通过\

ElseIf bs < 60 and sj < 60 Then dj = \未过\Else

dj = \补考\

End If

Label5.Caption = dj

2)select case... end select 格式:select case 测试表达式 case 值列表1 语句序列1 case 值列表2 语句序列2 .....

case 值列表n 语句序列n [case else

语句序列n+1] end select

首先计算测试表达式值,再将这个值和case后面的值列表依次比较,一旦找到对应的值列表,则执行其中的语句序列,执行完后,就转到end select 后面执行。当所有的值列表都不满足时,系统会执行case else后面的语句序列n+1

即多个case后面的值列表都包含了测试表达式的值,系统只执行第一个满足的值列表

值列表可以有以下四种形式:

(1)单个值:如 case 2 当测试表达式的值为2时

(2)用逗号分隔的多个值,如case 2,4,5,7 当测试表达式的值为2或4或5或7时

(3)值1 to 值2 ,如case 1 to 3 当测试表达式的值在1和3之间即测试表达式>=1 and 测试表达式<=3 (4)is 关系运算符 值,如is>=4 当测试表达式>=4时(is表示测试表达式) 例: cls

dim x as integer

x=inputbox(“请输入:”) select case x

case 3,1 print “1” case 2

print -1 case 1 to 3 print 2 case is>=1 print 3 case else print 0

end select &&如果输入3,结果为1,如果输入2.2,结果为2

例:根据输入的分数,求等级 等级规定如下: 100分为A+

90分及以上:等级为,80->89分为B,70-79为C,60-69为D,其它为E

Dim score As Single

score = InputBox(\请输入分数:\Cls

Select Case score Case 100 Print \ Case 90 To 99 Print \ Case 80 To 89 Print \ Case 70 To 79 Print \ Case 60 To 69 Print \ Case Else Print \End Select

第二种方法:

Dim score As Single

score = InputBox(\请输入分数:\Cls

Select Case score Case 100 Print \ Case Is >= 90 Print \ Case Is >= 80 Print \ Case Is >= 70 Print \ Case Is >= 60 Print \ Case Is < 60 Print \End Select

is只能在case后面表示条件,而且只能写一个条件,即不能用and或or连接多个条件。即 is>=0 and is<=60 ×(错误) 只能改成0 to 60 (对)

三.循环结构:有三种:for..next,while..wend,do…loop循环。

循环体:放在循环结构中,可以被反复执行若干次的语句. (1)while 循环

格式:while 条件 循环体 wend

当条件为True时,就执行循环体,碰到wend,则返回到while处再次判断条件,如果成立,再执行循环体,碰到wend则转到while处再次判断条件.依次类推。当while条件一旦为false,就转到wend后面顺序往下执行。 例:求1和3的和

Dim i As Integer, s As Integer s = 0 i = 1

While i <= 3 s = s + i i = i + 1 Wend

Print s

求1+2+...100的和

Dim i As Integer, s As Integer s = 0 i = 1

While i <= 100 s = s + i i = i + 1 Wend

Print s

求1+2+3....n的和

Dim i As Integer, s As Integer,n as integer s = 0

i = 1

n=inputbox(“请输入n的值) While i <= n s = s + i i = i + 1 Wend

Print s

(2)for …next循环(计数循环)即循环次数已知的循环. 格式: for 循环变量=初值 to 终值 [step 步长] 循环体

next [循环变量]

含义:首先定义一个变量,并且赋初值。如果变量的值和终值满足一定的关系(见下)即条件成立时,执行循环体,碰到next ,就将循环变量累加一个步长。再判断条件是否成立。如果成立,再执行循环体,碰到next再将循环变量累加一个步长。依次类推。当循环条件一旦为false就转到next的下一行执行. 说明:

1、循环条件为真的关系(即初值和终值满足的关系): (1)当步长>0时,条件为循环变量<=终值 (2) 当步长<0时,条件为:循环变量>=终值 (3)缺省 step 步长,则默认步长为1。

2、exit for即强制性终止for循环.一般与if条件搭配使用。 例:求n!

写法1:

Dim i As Integer, n As Integer, s As Double n = InputBox(\请输入n:\ s = 1

For i = 1 To n Step 1 s = s * i

Next i ?i可以省略。

Print s

相当于

Dim i As Integer, n As Integer, s As Double n = InputBox(\请输入n:\ s = 1 i = 1

While i <= n s = s * i i = i + 1 Wend Print s

写法2:

Dim i As Integer, n As Integer, s As Double n = InputBox(\请输入n:\ s = 1

For i = n To 1 Step -1 s = s * i Next i Print s 相当于:

Dim i As Integer, n As Integer, s As Double n = InputBox(\请输入n:\ s = 1 i = n

While i >= 1 s = s * i i = i - 1 Wend Print s

例1:判断自然数n是否为素数

素数:对于一个自然数n,如果它只能被1和本身整除,称为该数为素数。数学规定最小的素数为2。

分析:n能够除尽的数只能是1...n之间,除掉1和本身n,剩下的只有2..n-1,用n去除以2...n-1中的每一个数,一旦除尽,则n不是素数(能被第3个数除尽),如果都除不尽,则n是素数。

Dim n As Integer, i As Integer

n = InputBox(\请输入一自然数n:\ For i = 2 To n - 1

If n Mod i = 0 Then Exit For ‘一旦除尽即退出for循环,此时i在2到n-1之间。 Next i

If i > n-1 Then

Print n & \是一个素数!\ Else

Print n & \不是一个素数!\

End If

因为n不可能除尽超过它自己一半的数(本身除外),所以程序可以改为:

Dim n As Integer, i As Integer

n = InputBox(\请输入一自然数n:\ For i = 2 To n\\2

If n Mod i = 0 Then Exit For Next i

If i > n\\2 Then

Print n & \是一个素数!\ Else

Print n & \不是一个素数!\

End If

数学家证明:只要除到n的平方根,即可出结论:因此,程序可以进一步改为:

Dim n As Integer, i As Integer

n = InputBox(\请输入一自然数n:\ For i = 2 To int(sqr(n))

If n Mod i = 0 Then Exit For Next i

If i > int(sqr(n)) Then

Print n & \是一个素数!\ Else

Print n & \不是一个素数!\

End If

Do …. Loop循环(有四种结构)

格式1:

Do while 条件 循环体 Loop

当条件为True时,就执行循环体,碰到loop,则返回到do while处再次判断条件,如果成立,再执行循环体,碰到loop则转到do while处再次判断条件.依次类推。当do while条件一旦为false,就转到loop后面顺序往下执行。(即反复执行循环体,当一旦遇到条件为假时循环结束,有点类似While …wend语句)

例:求1到100的和

Private Sub Command1_Click()

Dim i As Integer, sum As Integer sum = 0 i = 1

Do While i <= 100 sum = sum + i i = i + 1 Loop Print sum End Sub

思考:写成如下形式,等同吗?

Private Sub Command1_Click()

Dim i As Integer, sum As Integer sum = 0 i = 1

if i <= 100 then

sum = sum + i i = i + 1 end if Print sum End Sub

格式2: Do

循环体

Loop while 条件

先执行循环体,碰到loop while时,判断后面的条件,若条件为true,则返回到上面的do继续执行循环体,执行完后碰到loop while时,判断后面的条件,若条件为true,则返回到上面的do继续执行循环体,依次类推,直到loop while后面的条件为false为止。(即反复执行循环体,当一旦遇到条件为假时循环结束)

例:求1到100的和

Private Sub Command1_Click()

Dim i As Integer, sum As Integer sum = 0 i = 1 Do

sum = sum + i i = i + 1

Loop While i <= 100’条件成立时执行循环体。 Print sum End Sub

思考:若将语句i=1改成i=101,则上述两种循环结果相同吗?为什么?

答:不同,格式1是先判断后执行,由于第一次就不成立,所以循环一次也不执行,所以sum仍维持原值,为0;格式2是先执行后判断,所以执行了一次后,才发现条件不成立,因而sum的值加了一次101,sum为101。

上述两种格式有共同点吗?如果有,是什么?

答:有,就是只有当条件为真时,才执行循环。一旦遇到条件为假,循环即终止。

格式3:

Do until 条件 循环体 Loop

当条件为false时,就执行循环体,碰到loop,则返回到do until处再次判断条件,如果条件为false,再执行循环体,碰到loop则转到do until处再次判断条件.依次类推。当do until条件一旦为true,就转到loop后面顺序往下执行。(即反复执行循

环,直到条件为真时循环结束)

例:求1到100的和

Private Sub Command1_Click()

Dim i As Integer, sum As Integer sum = 0 i = 1

Do Until i > 100 ’条件为假时执行循环体。 sum = sum + i i = i + 1 Loop

Print sum End Sub

格式4: Do

循环体

Loop until 条件

先执行循环体,碰到loop until时,判断后面的条件,若条件为false,则返回到上面的do继续执行循环体,执行完后碰到loop until时,判断后面的条件,若条件为false,则返回到上面的do继续执行循环体,依次类推,直到loop until后面的条件为true为止。(即反复执行循环,直到条件为真时循环结束) 例:求1到100的和

Private Sub Command1_Click()

Dim i As Integer, sum As Integer sum = 0: i = 1 Do

sum = sum + i i = i + 1

Loop Until i > 100 ’条件为假时执行循环体。 Print sum End Sub

思考:在 do … loop循环中,while 条件与 until条件区别是什么?

答:一个是当循环(while条件),即当条件为真时反复执行循环体,一旦遇到条件不成立,循环结束;一个是直到型循环(until条件),当条件为假时反复执行循环体,直到遇到条件为真时循环结束。同一个事物两种说法都可以表述: 如:

吃吧 当 没有吃饱

吃吧 直到 吃饱

思考:在 do … loop循环中,while 条件或until条件写在do后与写在loop后的区别是什么。

答:while 条件或until条件,写在do后面时,是先判断后执行,有可能一次都不执行(即第一次条件就不成立);而当写在loop后面时,是先执行后判断,无论如何,总是要执行一次。这相当于人生的两种处事态度:前者是三思而后行,后者是先斩后奏。

exit do 在上述四种格式中,都允许出现exit do语句,当有机会执行到此语句时,do..loop循环即刻终止(与for循环中的exit ..for类似)

例2:求s=1!+2!+3!+4!+5!,最后应为153. 分析:用循环嵌套做,外层循环用来控制总的次数(总共5次),内层循环用来求数的阶乘。

Dim i As Integer, j As Integer, s As Double, t As Double s = 0

For i = 1 To 5 t = 1

For j = 1 To i ?求i的阶乘,结果放在变量t中

t = t * j Next j s = s + t Next i Print s

说明:一般阶乘的数值都比较大(考试时可能要加到50!),所以s,t都定义为double型。

思考:如果将t=1放在s=0这句话的后面,结果会有变化吗?如果有变化,结果为多少?

Dim i As Integer, j As Integer, s As Double, t As Double s = 0 t = 1

For i = 1 To 5 For j = 1 To i t = t * j Next j s = s + t Next i Print s

结果为:34863

此题用以下写法可以吗?请分析

Dim i As Integer, s As Double, t As Double s = 0 t = 1

For i = 1 To 5 t = t * i s = s + t Next i Print s

例3:解数学竞赛题(小学四年级),36人搬36块砖,男搬4,女搬3,2个小孩抬1砖,问男、女、小孩各有多少人。

分析:设男为x,女为y,小孩为z,于是有以下方程组

x+y+z=36

4x+3y+z/2=36

用消元法,消掉z,得到以下式子:

4x+3y+(36-x-y)/2=36

解此二元一次不定方程,考虑实际情况:x的取值范围为0到9,y的取值范围为0到12。 Dim x As Integer, y As Integer For x = 0 To 9

For y = 0 To 12

If x * 4 + 3 * y + (36 - x - y) / 2 = 36 Then Print x, y, 36 - x - y End If Next

Next

结果为:3 3 30

解此二元一次不定方程,考虑实际情况:x的取值范围为0到9,y的取值范围为0到12。 Dim x As Integer, y As Integer For x = 0 To 9

For y = 0 To 12

If x * 4 + 3 * y + (36 - x - y) / 2 = 36 Then Print x, y, 36 - x - y End If Next

Next

结果为:3 3 30


计算机二级VB笔记第四章.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:张家港市锦丰中心小学儿童安全教育干预项目活动方案 精品推荐

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219