Ifa*2-1<=10Thenb=2*b+c
If3*b>aThen
a=a+1
c=c-1
Else
a=a-1
EndIf
Printa,b,c
EndSub
2、PrivateSubForm_click()
Show
a=1:
b=3
Ifa*4-1>=bThen
Ifb>5Thenb=b+1
ElseIfb>2Then
b=b-1
Else
b=b+2
EndIf
b=IIf(a=b,b+1,b-1)
Printb
EndSub
任务六值班情况查询
SelectCase语句根据测试表达式的值,从多个语句块中选择一个符合条件的语句块执行。
语法格式如下:
SelectCase<测试表达式>
Case表达式列表1
语句块1
[Case表达式列表2
语句块2]
...
[CaseElse
语句块n]
EndSelect
说明:
(1)其中测试表达可可以是数值或字符串表述式,每个“表达式列表”可以是一个表达式,一组用逗号分隔的枚举值(如1,2,3)、表达式1to表达式2(如1TO5),IS关系运算符表达式(如IS<3)
(2)SelectCase语句执行的流程是:
对测试表达式进行测试并检查表达式列表1,若为真,则执行语句块1并结束选择,若为假,继续检查下一个条件,如果都不为真,则执行语句块N,如果没有语句块N,则什么也不做就结束选择。
课后练习:
(1)下列程序段的执行结果为
a=1
b=0
SelectCasea
Case1
SelectCaseb
Case0
Print"**0**"
Case1
Print"**1**"
EndSelect
Case2
Print"**2**"
EndSelect
A、**0**B、**1**C、**2**D、0
2、下面程序段执行结果为
x=4
SelectCasex
Case5
Print"excellent"
Case4
Print"good"
Case3
Print"pass"
CaseElse
Print"fail"
EndSelect
A、excellentB、goodC、passD、fail
3、下面程序段执行结果为
x=3
SelectCasex
Case5
Print"excellent"
Case4
Print"good"
Case3
Print"pass"
CaseElse
Print"fail"
EndSelect
A、excellentB、goodC、passD、fail
4、以下Case语句中错误的是
A、Case0To10B、CaseIs>10
C、CaseIs>10AndIs<50D、Case3,5,Is>10
任务7棋盘上的麦粒数
1.For循环结构
For循环用于重复执行一行或数行代码,语法格式如下:
For循环变量=初值To终值[Step步长]
[循环体]
[ExitFor]
[循环体]
Next[循环变量]
说明:
(1)、For与Next必须成对出现,Next后面的循环控制变量可省略,但必须与For中的循环控制变量一致。
(2)、For与Next之间的语句行被称为循环体。
(3)、初值、终值和步长为数值型表达式。
(4)、For语句首先计算初值、终值和步长的值,并将初值赋给循环控制变量。
(5)、判断循环控制变量是否超过终值。
是:
跳过循环体及Next语句,执行NEXT后面的语句序列。
(不执行循环体)
否:
执行循环体一次。
(6)、上述超过的概念包含两种情况。
初值<=终值时:
步长应为正值,当循环控制变量大于终值即为超过。
初值>=终值时:
步长应为负值,当循环控制变量小于终值即为超过。
(7)、[ExitFor]通常用在选择语句中,用于提前结束循环,即跳过Next语句,执行next后面的语句序列。
(8)、Next语句将(循环控制变量+步长)的值再次赋给循环控制变量,然后回到步骤(5)。
(9)、步长是循环变量的增量,其值可为正可为负,但不能为0。
步长为1时,Step步长部分可省略。
补充:
示例1求S=1+2+3+…+8
Privatesubform_click()
Dimsasinteger,kasinteger
s=0
Fork=1To8
s=s+k
Nextk
Print"s=";s
Endsub
程序运行结果如下:
s=36
例2计算1~100的奇数和,程序段如下:
Dimi%,s%
s=0
Fori=1To100step2
s=s+i
Nexti
print“s=“;s
二、while循环形式
(1)格式
While条件
[语句块]
Wend
(2)功能:
当条件成立(为真)时,执行循环体;当条件不成立(为假)时,终止循环
(3)功能及说明
While与Wend必须成对出现。
While与Wend之间的语句块是循环体。
条件用逻辑表达式描述。
While语句计算描述条件的用逻辑表达式,当其为True时,执行循环体。
遇到Wend语句,返回对应的While语句。
当条件为False,结束循环,跳过Wend语句,执行后续语句。
练习:
1、FOR循环可以没有循环体。
2、FOR和NEXT必须成对出现,缺一不可
3、在某种情况下,FOR语句中的“循环变量”与NEXT语句中的“循环变量”可以不是同一变量
4、在FOR/NEXT语句中,当步长为正时,终止循环的条件是__________,当步长为负时,终止循环的条件是__________.
5、“Fork=________To-11Step-3”的循环体循环50次。
6、假设有以下程序段:
ForI=1To10Step3
Forj=15To3Step-4
Printi*j
Nextj
Prints,i,j
则语句Printi*j的执行次数是,执行后i的值为,j的值为。
7、写出下列程序的输出结果
forj=1to15
a=a+jmod3
nextj
printa
____________________
8、写出下列程序的输出结果
fork=1to3
ifk<=1thena=2*k
ifk<=2thena=2*k+1
ifk<=3thena=k
printk;a
nextk
____________________
任务8计算阶梯问题
Do循环语句
格式一
Do[While|Until<循环条件>]
[语句块]
[ExitDo]
[语句块]
Loop
执行过程:
先检查循环条件,如果
循环条件符合执行循环的要求(选用WHILE时条件为true;选用until时条件为false),则执行语句块,否则(选用WHILE时条件为false;选用until时条件为true),退出循环。
格式二
Do
[语句块]
[ExitDo]
[语句块]
Loop[While|Until<循环条件>]
执行过程:
先执行语句块,后检查循环条件,如果循环条件符合执行循环的要求(选用WHILE时条件为true;选用until时条件为false),则执行语句块,否则(选用WHILE时条件为false;选用until时条件为true),退出循环。
说明:
(1)当使用While<条件>构成循环时,当条件为“真”,则反复执行循环体,当条件为“假”,则退出循环。
(2)当使用Until<条件>构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。
3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。
(4)语句ExitDo的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。
练习:
1、执行下列程序段后,变量t的值是______。
t=0
Forx=2To3
n=1
DoWhilen<=x
t=t+n
n=n+1
Loop
Nextx
A、8B、9C、10D、11
2、执行下列程序段后,显示的结果是______
s=0
Form=1To4Step2
n=1
DoWhilen<=m
s=s+n
n=n+1
Loop
Nextm
Prints+m+n
3、运行下面程序后,循环体执行了______次。
i=0:
n=1
DoWhilei<32
i=(i+1)*(i+1)
n=n+1
Loop
Printn
A、2B、3C、4D、5
4、在窗体上画两个文本框Text1和Text2,一个命令按钮Command1,请阅读以下程序段
PrivatesubCommand1_click()
X=0
Dountilx>=30
X=(x+2)*(x+4)
N=n+1
Loop
Text1.text=str(n)
Text2.text=str(x)
Endsub
运行程序后,单击命令按钮,在两个文本框中显示的值分别为______
A、1和0B、2和120C、2和240D、4和168
5、设有下面的循环:
i=0
Whilei<=1
i=i+3
Printi
Wend
则运行后的输出结果是
A、1B、2C、3D、4
任务9分析蛋糕销售情况
知识点:
一、数组的概念
1、数组、数组元素
数组:
使用同一名字、不同下标表示的、顺序存储的一组变量。
数组名就是这个区域的名称,区域的每个单元都有自己的地址,下标指出每个单元在该区域的位置。
在实际应用中,可以使用数组来处理同一类型的成批数据,例如商品的零售记录等
2、数组的类型:
基本数据类型,对象类型
3、数组的维数:
数组的下标个数,几个下标为几维数组,最多60维。
4、定长数组
Dim数组名([下标下界To]下标上界[,下标下界To下标上界])[As数据类型]
dim
在窗体模块、标准模块或过程
private
在窗体模块、标准模块或过程
static
在过程中声明定长数组
public
在标准模块声明全局数组
下标:
[下界To]上界省略下界为0,必须为常数。
每一维大小:
上界-下界+1
数组大小(元素个数):
每一维大小的乘积
5、默认数组
在VisualBasic中,允许声明默认数组,即数据类型为Variant的数组:
StaticVari(1To100)
6、数组的初始化
数组名=Array(数组元素值)
使用Array函数给数组赋初值时,数组变量只能是Variant类型。
Array只适用于一维数组,不能对二维或多维数组赋值。
7、数组的清除
Erase数组名[,数组名]……
二、说明:
1、DIM语句必须放在使用数组之前,遵循先声明后使用的原则
2、格式中的数组名可是任意合法的变量名
3、数据类型可以是基本的数据类型,也可是变体型,若省略AS子句,则定义的数组为变体型。
4、定义的数组,数组中的全部元素初始化为0,字符型数组初始化为空字符串
5、下标下界和下标上界表示该维的最小和最大下标值,通过关键字TO连接起来,代表下标的取值范围,下标的范围可以是不超过Long数据类型的范围,如果省略下界默认为0,如果希望下标下界为1,可以通过optionbase1该语句必须出现在窗体层或模块层的说明部分。
6、数组有一个下标为一维数组,有两个或多个下标,称为二维数组或多维数组,数组的维数最多为60
7、不能使用DIM语句对已声明了的数组进行重新声明
8、在同一过程中,数组名不能和变量名同名
9、在声明数组时,每一维元素的个数必须是常数,不能是变量和表达式
10、数组的下界必须小于数组的上界
例1:
Dimmark(1to100)AsInteger
例2:
DimlArray(0To3,0To4)AsLong共有4×5个元素
等价于:
DimlArray(3,4)AsLong
三、数组元素的赋初值
(1)用循环
Fori=1To10
iA(i)=0
Nexti
(2)Array函数
DimibAsVariant
ib=Array("abc","def","67")
Fori=0ToUBound(ib)
Printib(i);"";
Nexti
注意:
1、利用Array对数组各元素赋值,其类型只能是variant。
2、数组的下界Lbound,上界通过函数Ubound获得。
四、数组的清除
Erase数组名[,数组名]……
用来重新初始化定长数组的元素,或者释放动态数组的储存空间
五、数组中常见错误和注意事项
1.静态数组声明下标出现变量
n=InputBox("输入数组的上界")
Dima(1Ton)AsInteger
2.数组下标越界
引用的下标比数组声明时的下标范围大或小。
Dima(1To30)AsLong,i%
a
(1)=1:
a
(2)=1
Fori=2To30
a(i)=a(i-2)+a(i-1)‘a(0)不存在
Nexti
3.数组维数错
数组声明时的维数与引用数组元素时的维数不一致。
Dima(3,5)AsLong
a(i)=10
练习:
一、选择
1、语句DimArr(-3to5)asinteger定义的数组的元素个数是______
A、6B、7C、8D、9
2、语句dimarr(3t05,-2to2)定义的数组的元素个数是______
A、20B、15C、12D、24
3、设有数组定义语句:
Dima(5)asinteger,并设List1为列表框控件,下列给数组元素赋值的语句错误的是______
A、a(4)=3B、a(4)=inputbox(“输入一个数”)
C、a(4)=List1.listindexD、a=array(1,2,3,4,5,6,)
4、使用数组声明语句DimY(1to12)asinteger后,以下说法正确的是______
A、Y数组中的所有元素值均为0
B、Y数组中的所有元素值不确定
C、Y数组中的所有元素值均为Empty
D、运行EraseY后,Y数组中的所有元素值均empty
5、、使用Array函数给某X赋值时,X必须是______
A、已经声明的静态数组
B、Variant类型变量
C、已经声明的动态数组
D、已经声明的动态数组且该动态数组的类型为Variant
6、、可以通过______的方法来输出一个二维数组中的各个元素
A、引用数组的一个下标B、引用数组的两个下标
C、将数组名赋值给变量D、以上都不正确
7、以下______是VB合法的数组元素表示
A、X[10]B、X(I+1)C、X10D、X(1to10)
8、执行以下语句过程,在窗体上显示的内容是
OptionBase0
PrivateSubCommand3_Click()
Dimd
d=Array("a","b","c","d")
Printd
(1);d(3)
EndSub
A、abB、bdC、acD、出错
9、在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:
OptionBase1
PrivateSubCommand1_Click()
DimaAsVariant
a=Array(1,2,3,4,5)
Sum=0
Fori=1To5
Sum=Sum+a(i)
Nexti
x=Sum/5
Fori=1To5
Ifa(i)>xThenPrinta(i);
Nexti
EndSub
程序运行后,单击命令按钮,在窗体上显示的内容是
A、12B、123C、345D、45
二、填空
1、在VB中,把一组具有相同、不同的变量称为数组。
2、在计算机中,数组占据一块连续的内存区域,就是这个区域的名称,区域的每个单元都有自己的地址,指出每个单元在该区域的位置。
3、在VB中,用来声明数组的语句有、、和。
4、在定义数组时,下标的范围可以是不超过数据类型的范围。
如果省略了“下标下界To”,数组默认下界为,如果希望下标从1开始,可以通过语句来设置。
5、数组的维数最多可以有维。
6、用Dim声明数组时,在默认情况下,数组下界为,如果需要数组下界为1,可以在通用声明中,使用项加以说明。
7、我们利用函数及能分别求出数组的下、上界。
8、假设Dima(8)AsDouble,则该数组声明了9个元素可供使用。
如果设Dimb(4,1to9)AsSingle,则它声明了一个具有个元素的维数组。
9、用Dim语句定义数组时,数值数组中的全部元素初始化为,字符串数组中的全部元素初始化为。
10、利用Array()函数给数组元素输入初值,数组应该声明为数组,数组的数据类型为类型。
三、判断
1、可以使用Lbound和Ubound这两个函数确定数组的大小。
2、Array只适用于一维数组和二维数组赋值,不适合多维数组赋值。
3、使用Array函数给数组赋初值时,数组变量只能是Variant类型。
4、把Erase语句用于定长数组时,不释放数组的所有空间,只是清除数组的内容。
任务10统计家庭支出情况
知识点:
1.动态数组(概念)
动态数组是指计算机在执行过程中才给数组开辟存储空间的数组,可以用ReDim语句再次分配动态数组占据的存储空间,也可以用Erase语句删除它,收回分配给所占存储空间。
动态数组可以用变量作为下标值,在程序运行过程中完成声明,动态数组可以在任何时候改变大小。
2、创建动态数组通常分为两步:
首先在窗体级别、标准、模块或过程中,用Dim语句(模块级数组)、Public语句(公用数组)、Private或Static(局部数组)声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim语句定义带下标的数组。
3、ReDim语句:
ReDim[Preserve]变量(下标,下标)As数据类型名称
说明:
1、可以用redim语句在过程内直接声明数组,用redim重新声明只能修改数组中元素的个数,不能修改数组的维数
2、用private、public或dim语句声明过的已经用带空圆括号(没有维数下标)的动态数组,在一个程序中,可以根据需要使用redim语句修改数组的维数或元素的个数,但不能修改数据的类型
3、重新分配动态数组时数组中的内容将被清除,如果在redim语句中使用了Preserve选择项,则保留数组内容
4、redim语句只能出现在事件过程或通用过程中,用它定义的数组是一个临时数组,即在执行数组所在的过程时为数组开辟一定的