Visual-Basic程序设计-第四章课件_第1页
Visual-Basic程序设计-第四章课件_第2页
Visual-Basic程序设计-第四章课件_第3页
Visual-Basic程序设计-第四章课件_第4页
Visual-Basic程序设计-第四章课件_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章VB算法基础及基本语句第四章VB算法基础及基本语句主要内容三种程序结构(顺序,分支,循环)赋值语句条件分支语句(共五种)笔记、作业、实验主要内容三种程序结构(顺序,分支,循环)笔记、作业、实验求两个自然数的最大公约数的算法 (欧几里德算法) S1.输入两个自然数M、N S2.求M除以N的余数R S3.使M=N,即用N代换M S4.使N=R,即用R代换N S5.若R≠0,则重复执行S2、S3、S4(循环),否则转S6 S6.输出M,M即为M和N的最大公约数求两个自然数的最大公约数的算法基本算法结构图顺序分支循环基本算法结构图顺序分支循环4.2.1赋值语句1、形式Var=<表达式>如:s=“Thisisaflower”Number%=72Text.font.size=12Y=(a+b)/2作用:将表达式的值赋值给变量名。一般用于给变量赋值或对控件设定属性值。4.2.1赋值语句1、形式2.不同数据类型数据的赋值当表达式的类型与变量的类型不一致时,强制转换成左边的精度,如iA%=10/3iA中的结果为3

注意:虽然赋值号与关系运算符“等号”都用“=”表示,VB系统会根据所处的位置自动判断是何种意义的符号。注意点:P59-602.不同数据类型数据的赋值4.2.2InputBox函数InputBox函数 作用:

用来接受用户通过键盘输入的数据。形式:V=InputBox(Prompt[,Title][,Default]

[,x,y][,helpfile,context])其中:提示:

提示信息;标题:

对话框标题;缺省:输入区缺省值函数返回字符类型。举例:下页4.2.2InputBox函数InputBox函数PrivateSubForm_Click()

PassWord=InputBox("输入你的口令:","程序示例")IfPassWord="123456"ThenPrint"OK!"ElsePrint"Error!"EndIfEndSub函数返回值PrivateSubForm_Click()函数返回值4.2.3MsgBox函数作用: MsgBox函数用于向用户发布提示信息,并要求用户作出必要的响应。形式是: MsgBox(Prompt[,button][,title]

[,helpfile,context])P724.2.3MsgBox函数作用:P72button:这是一个由4个数值常量组成的式子,形式为c1+c2+c3+c4,button:

PrintMsgBox("非法数据!",vbOKOnly+48+0,"提示信息")

PrintMsgBox(“请输入X值!”,16+vbOKOnly,”ex4_6")PrintMsgBox("非法数据!",vbOKOnlMsgBox函数根据用户选择单击的按钮而返回不同的值:参见P63表4-3。MsgBox函数根据用户选择单击的按钮而返回不同的值:参见P顺序结构顺序结构4.3分支结构和分支结构语句结构示意图4.3分支结构和分支结构语句结构示意图1、IF条件THEN一条语句2、if条件THEN

语句组(多条语句)

end

if3、if条件then

语句组1

else

语句组2

end

if4、if条件1then 语句组1 elseif条件2then

语句组2 elseif条件3then

语句组3……[else

语句组n]endif1、IF条件THEN一条语句4、if条件1the

1.If…Then语句(单分支结构)

If<表达式>Then语句块EndIf

If<表达式>Then<语句>

例:已知两个数x和y,比较它们的大小,使得x大于y.

Ifx<yThent=xx=yy=tEndIf

或Ifx<yThent=x:x=y:y=t重要的是学会两个数的交换,若上述语句次序变一下,结果如何?例:已知两个数x和y,比较它们的大小,2.If…Then…Else语句(双分支结构)

If<表达式>Then<语句块1>Else<语句块2>EndIf

If<表达式>Then<语句1>Else<语句2>

计算分段函数:单分支结构实现:

y=cos(x)-x^3+3*xIfx<>0Theny=sin(x)+sqr(x*x+1)

双分支结构实现:

Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf2.If…Then…Else语句(双分支结构)单分支结构实3.If…Then…ElseIf语句(多分支结构)

形式:

If<表达式1>Then <语句块1>ElseIf<表达式2>Then <语句块2>

[Else

语句块n+1

]EndIf3.If…Then…ElseIf语句(多分支结构)PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)

Ifx<1ThenText2.Text=“小于1的数”

ElseIfx<=10ThenText2.Text=“1到10之间”

ElseText2.Text=”大于10的数”

EndIfEndSub输入判断PrivateSubCommand1_Click()输入例已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。用多分支结构实现:

不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。.

ElseIf不能写成ElseIf。IfUcase(strC)>="A"AndUcase(strC)<="Z"Then

PrintstrC+"是字母字符"ElseIfstrC>="0"AndstrC<="9"Then PrintstrC+"是数字字符"Else PrintstrC+"其他字符"EndIf例已知变量strC中存放了一个字符,判断该字符是字母字符、数4.If语句的嵌套

If语句的嵌套是指If或Else后面的语句块中又包含If语句。形式如下:

If<表达式1>Then

If<表达式11>Then…EndIf…EndIf

例:已知x,y,z三个数,使得x>y>z用一个IF语句和一个嵌套的IF语句实现Ifx<yThent=x:x=y:y=t

Ify<zThent=y:y=z:z=t

Ifx<yThent=x:x=y:y=tEndIf

EndIfIf语句的嵌套注意事项:书写锯齿型;If与EndIf配对。4.If语句的嵌套例:已知x,y,z三个数,使得x>y>z5、Select-Case-EndSelect结构语句Select

Casee

Casec1A组语句

Casec2B组语句...

Case

Elsen组语句

EndSelecte称为测试表达式,

c1,c2,...是测试项它们可取三种形式:(1)具体取值:

如:3、5、7.2等;(2)连续的数据范围:

如:8To20;”B”To“H”等;(3)满足某个判决条件:

如:Is>20;Is<="P"等。测试项还可以是这三中形式的组合,如4,7To9,Is>305、Select-Case-EndSelect结构语句表达式列表1……语句块1……语句块n+1……表达式列表2表达式列表n语句块2语句块nTTTFFF表达式列表1……语句块1……语句块n+1……表达式列表2表达PrivateSubCommand1_Click()DimxAsIntegerx=Val(text1.Text)

Select

Casex

CaseIs<1Text2.text="这是小于1的数"

Case1To10Text2.Text="这是1到10之间的数"

CaseElseText2.Text="这是大于10的数"

EndSelectEndSubPrivateSubCommand1_Click()例变量strC中存放了一个字符,判断该字符类型。在前面例中用多分支结构实现:

IfUcase(strC)>="A"AndUcase(strC)<="Z"Then PrintstrC+"是字母字符"ElseIfstrC>="0"AndstrC<="9"Then PrintstrC+"是数字字符"Else PrintstrC+"其他字符"EndIf用SelectCase语句实现:

SelectCasestrC Case"a"To"z","A"To"Z" PrintstrC+"是字母字符"

Case"0"To"9" PrintstrC+"是数字字符"

CaseElse PrintstrC+"其他字符"

EndSelect例变量strC中存放了一个字符,判断该字符类型。

DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx>=0Theny=1+xElsey=1-2*xEndIfText2.Text=y输入x,计算y的值。其中 1+x(x≥0)Y=1-2x(x<0)思考题:DimxAsSingle,yAsSingle1、学校对学习成绩优良的学生进行奖励,获奖的条件如下:(1)所考5门课的成绩都在88分以上。(2)前3门(主课)的成绩都在95分以上,其他两门(非主课)的成绩都在80分以上。输入某学生5门课的成绩s1、s2、s3、s4、s5,判断他是否能够获奖。1、学校对学习成绩优良的学生进行奖励,获奖的条件如下:2、利用输入框函数输入3个不同的数,选出其中最大的数。2、利用输入框函数输入3个不同的数,选出其中最大的数。3、铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过50kg时,0.25元/kg,超过50kg而不超过100kg时,其超过部分按0.35元/kg收费,超过100kg时,其超过部分按0.45元/kg收费。编写程序,输入行李重量,计算并输出托运的费用。设行李重量为wkg,应付运费为x元,则运费公式为:0.25*w(w<=50)X=0.25*50+0.35*(w-50)(50<w<=100)0.25*50+0.35*50+0.45*(w-100)(w>100)3、铁路托运行李,从甲地到乙地,规定每张客4、某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物(1)在1000元以上者,按九五折优惠;(2)在2000元以上者,按九折优惠;(3)在3000元以上者,按八五折优惠;(4)在5000元以上者,按八折优惠;编写程序,输入购物款数,计算并输出优惠价。4、某百货公司为了促销,采用购物打折扣的优惠5、已知两个变量x和y,比较它们的大小,使得x中的值大于y,下面那个方法能实现?Ifx<ythenA、x=y:y=xB、x=t:t=y:y=tC、t=y:y=x:x=tD、x=y:t=y:x=t5、已知两个变量x和y,比较它们的大小,使得常见错误1.在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。2.多边选择ElseIf关键字的书写和条件表达式的表示ElseIf不要写成ElseIf;多个条件表达式次序问题。3.SelectCase语句的使用SelectCase后不能出现多个变量;Case子句后不能出现变量。常见错误例:已知百分制成绩mark,显示对应的五级制成绩哪些正确,哪些错误?例:已知百分制成绩mark,显示对应的五级制成绩例:已知坐标点(x,y),判断其落在哪个象限。

方法一

Ifx>0Andy>0ThenPrint"在第一象限"

ElseIfx<0Andy>0ThenPrint"在第二象限"

ElseIfx<0Andy<0ThenPrint"在第三象限"

ElseIfx>0Andy<0ThenPrint"在第四象限"

EndIf

方法二SelectCasex,yCasex>0Andy>0 Print"在第一象限"Casex<0Andy>0 Print"在第二象限"Casex<0Andy<0 Print"在第三象限"Casex>0Andy<0 Print"在第四象限"EndSelect哪个能实现,哪个不能实现?方法二代码错误:1.SelectCase后不能出现多个变量;2.Case后不能出现变量及有关运算符。例:已知坐标点(x,y),判断其落在哪个象限。方法一 习题:1.下面程序运行后输出的结果是_____X=Int(Rnd)+3Ifx^2>8theny=x^2+1Ifx^2=9theny=x^2-2Ifx^2<8theny=x^3Printy习题:1.下面程序运行后输出的结果是_____2.下面的程序段是检查输入的算术表达式中圆括号是否配对,并显示相应的结果。本程序在文本框输入表达式,边输入,边统计,以输入回车符作为表达式输入结束,然后显示结果。2.下面的程序段是检查输入的算术表达式中圆括号是否配对,并显Dimcount1%PrivateSubText1_KeyPress(KeyAsciiAsInteger)If__1__=“(”Thencount1=count1+1ElseIf__2__=“)”Then__3__EndIfIfKeyAscii=13ThenIf__4__ThenPrint“左右括号配对”ElseIf__5__ThenPrint“左括号多于右括号”;count1;”个”ElsePrint“右括号多于左括号”;-count1;”个”EndIfEndIfEndSubDimcount1%四、循环结构及循环语句1、DO-LOOP语句及其对应的四种循环结构注意:先判后做先做后判保证:不多做一次,不少做一次!P68—P69四、循环结构及循环语句1、DO-LOOP语句及其对应的四种循Visual-Basic程序设计-第四章课件

DoWhile条件Do......[ExitDo][ExitDo]......LoopLoopWhile条件条件为TRUE——循环;条件为FALSE——退出循环DoWhile条件Do条DoDoUntil条件......[ExitDo][ExitDo]...…LoopUntil

条件Loop条件为FALSE——循环;条件为TRUE——退出循环Do 在Do语句和Loop语句之间的语句即为循环体语句。 ExitDo语句时,就会直接退出本层循环,转而执行Loop语句的下一条语句。 此语句最常用的形式是与If-Then语句相结合,即:IfeThenExitDo 在Do语句和Loop语句之间的语句即为循环体语句。 Exi求两个自然数的最大公约数的算法 (欧几里德算法) S1.输入两个自然数M、N S2.求M除以N的余数R S3.使M=N,即用N代换M S4.使N=R,即用R代换N S5.若R≠0,则重复执行S2、S3、S4(循环),否则转S6 S6.输出M,M即为M和N的最大公约数求两个自然数的最大公约数的算法Visual-Basic程序设计-第四章课件PrivateSubCommand1_Click()Dimmaslong,naslong,rAsLongm=Val(Text1.Text)‘取数据Mn=Val(Text2.Text)‘取数据N

Ifm<>Int(m)orm<1orn<>Int(n)orn<1Then

Text3.Text="数据错误!"

Else

Ifm<nThent=m:m=n:n=t

Do‘求最大公约数

r=mModnm=nn=r

LoopUntilr=0Text3.Text=CStr(m)‘输出最大公约数

EndIfEndSub判断数据是否合法PrivateSubCommand1_Click()判断r=1Dountilr=0r=mModnm=nn=rLoop求最大公约数Dor=mModnm=nn=rLoopUntilr=0r=1Dowhiler<>0r=mModnm=nn=rLoopDor=mModnm=nn=rLoopwhiler<>01234whiler<>0whiler<>0r=1求最大公约数Dor=1Do1234whiler<例:

我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。PrivateSubCommand1_Click()x=13n=0DoWhilex<26x=x*1.008n=n+1LoopPrintn,xEndSub例:我国有13亿人口,按人口年增长0.8%计算,多少年后2、计数型循环语句一般形式是:

Forv=e1Toe2[Stepe3]...[ExitFor]...

Nextvv是循环控制变量,应为整型或单精度型;循环体2、计数型循环语句一般形式是:循环体e1、e2和e3是控制循环的参数。e1为初值、e2为终值、e3为步长。当e3=1时,stepe3部分可以省略。e1、e2和e3是控制循环的参数。e1为初值、e2为终值、eFor-Next循环结构语句的执行方式计算e1、e2和e3的值(如果e1、e2、e3为算术表达式);给v赋初值;进行判别:判别v是否超过e2,超过则退出循环,执行Next下一语句;执行Next语句,系统执行下述操作:v增加一个步长,即执行v=v+e3,转而执行判别操作。For-Next循环的正常循环次数用下式计算:

Int((e2-e1)/e3)+1

循环变量<=终值

语句块

ExitFor

语句块

循环变量加步长

T

F

循环变量得初值

For-Next循环结构语句的执行方式计算e1、e2和e3的For-Next示例1、用For语句写程序,在一行上输出60个“*”号……Fori=1To60Print"*";NextI……For-Next示例1、用For语句写程序,在一行上输出PrivateSubForm_Click()

Fori=1To10Step2Printi;

NextiPrint"i=";iEndSub注意:PrintI与PrintI;的区别!PrivateSubForm_Click()注意:例计算1~100的奇数和,程序段如下:Dimi%,s%S=0Fori=1To100step2 s=s+i Nexti

例计算1~100的奇数和,程序段如下:For-Next示例1、求N!(N为自然数)由阶乘定义可知:N!=1*2*3*······*(N-2)*(N-1)*N =(N-1)!*Nk=1Fori=1Tonk=k*iNextik=1Fori=nTo1step-1k=k*iNexti

For-Next示例1、求N!(N为自然数)由阶乘定义For-Next示例 控制变量的“初值”、“终值”和“步长”在进入For循环时,就被系统“记住”了,并不会因为循环体内对它的修改而影响循环执行的次数。例如:……x=2:y=8:z=3Fora=xToyStepzx=1:y=11:z=2Printa;Nexta……输出结果是:258循环体内虽然对x,y,z重新赋值,但程序仍按原来设定的初值、终值和步长去运行For-Next示例 控制变量的“初值”、“终值”和“步ForI=1to10step2printI;nextiI=1doprintI;I=I+2loopuntilI>10分析:两段程序的功能一样?两种语句的特点?那种较为合适?ForI=1to10step2I=1分析:例:改变循环控制变量对循环的影响。PrivateSubCommand1_Click()j=0Fori=1To20Step2i=i+3j=j+1Print"第";j;"次循环i=";iNextiPrint"退出循环后i=";iEndSub正常情况:i=1,3,5,7,9,11,13,15,17,19现在:i=4,9,14,19在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。例:改变循环控制变量对循环的影响。在循环体内对循环控制A=1:b=0Dowhilea<=5b=b+a*aa=a+1LoopPrinta,bDimchasstring,IasintegerCh=“DEF”ForI=1tolen(ch)ch=mid(ch,2*I-1,1)&left(ch,len(ch))printchNextiA=1:b=0Dimchasstring,Iasi关于循环嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套.例:九九乘法表的实现。关于循环嵌套一个循环体内又包含了一个完整的循环结构称为循环的PrivateSubCommand1_Click()

Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNextiEndSub执行本程序,图片框上将显示九九乘法表。换行!作用?PrivateSubCommand1_Click()换行

Forii=1To10Forjj=1To20… Nextii Nextjj

Forii=1To10Forii=1To20… Nextii Nextii

Forii=1To10Forjj=1To20… NextjjNextii

Forii=1To10…NextiiForii=1To10…Nextii

对于循环的嵌套,要注意以下事项:内循环变量与外循环变量不能同名;外循环必须完全包含内循环,不能交叉;不能从循环体外转向循环体内,反之则可以。正确

错误Forii=1To103、设计循环程序的关键需要解决的问题有规律?哪个变?怎么变?确定控制变量;了解两种循环语句的功能与特点, 选择合适的循环语句。保证不多做一次,不少做一次尝试编写循环体语句静态走一遍;结果?调试….最后正确。3、设计循环程序的关键需要解决的问题有规律?哪个变?怎么变?其他辅助控制语句

1.GoTo语句形式:GoTo{标号|行号}作用:无条件地转移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列.2.Exit语句多种形式:ExitFor、ExitDo、ExitSub、ExitFunction等。作用:退出某种控制结构的执行。3.End语句多种形式:End、EndIf、EndSelect、EndWith、EndType、 EndSub、EndFunction、

作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。其他辅助控制语句PrivateSubCommand1_Click()Dimintranum,i,j,aAsInteger

Randomize‘随机化语句

Fori=1To1000intranum=Int(100*Rnd)+1‘产生1~100间随机数a=0

Forj=1To10000‘延时a=a+1

NextjText1.Text=CStr(intranum)Text1.Refresh‘文本框刷新

NextiText1.Text=CStr(intranum)EndSub4、举例PrivateSubCommand1_Click()4、4.5常用算法算法是对某个问题求解过程的描述

1.累加、连乘

1~100的5或7的倍数的和

Sum=0Fori=1To100IfiMod5=0OriMod7=0Then

Sum=Sum+iEndIfNextiPrintSum3~10的乘积

t=1Fori=3To10

t=t*iNextiPrintt思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?4.5常用算法算法是对某个问题求解过程的描述1~100例:求自然对数e的近似值,要求其误差小于0.00001,近似公式为:

该例题涉及两个问题:

(1)用循环结构求级数和的问题。本例根据某项值的精度来控制循环的结束与否。(2)累加:s=s+t循环体外对累加和的变量清零s=0

连乘:n=n*i循环体外对连乘积变量置1n=1

PrivateSubForm_Click()Dimi%,n&,t!,s!s=0:n=1‘s存放累加和、n存放阶乘i=0:t=1‘i计数器、t第i项的值DoWhilet>0.00001s=s+t:i=i+1‘累加、连乘n=n*i:t=1/nLoopPrint"计算了";i;"项的和是";eEndSub例:求自然对数e的近似值,要求其误差小于0.00001,近似用以下公式计算sin(x)的值。当最后一项的绝对值小于10-7时,停止计算。X的值由键盘输入。分析:设变量t用于存放中间项的计算结果,并且当第n项值<10-7时结束计算,即循环结束条件为t的绝对值<1E-7;可以把算法描述为:再看和式中第n项tn

的值与第n-1项的递推关系:t=第1项值:s=t:n=1DoUntilAbs(t)<1E-7n=n+1t=第n项值s=s+tLoop用以下公式计算sin(x)的值。当最后一项的绝对值小于10-2.求素数素数是一个大于2,且不能被1和本身以外的整数整除的整数。

判别某数m是否为素数最简单的方法是:对于m从i=2,3,…,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。

求100以内素数的代码:

PrivateSubCommand1_Click()

DimIasinteger,masinteger,flagasboolean

Form=2To100

flag=trueFori=2Tom-1

If(mModi)=0Thenflag=falseNextiIfflagthenPrintmNextmEndSub2.求素数3.穷举法

“穷举法”也称为“枚举法”或“试凑法”,即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。

百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:x+y+z=1003x+2y+0.5z=100三个未知数,两个方程,此题有若干个解。解决此类问题采用“试凑法”,把每一种情况都考虑到。方法一:最简单三个未知数利用三重循环来实现。方法二:从三个未知数的关系,利用两重循环来实现。3.穷举法PrivateSubForm_Click()dimxasinteger,yasinteger,zasintegerEndSub改进:Forx=0to33fory=0to50if3*x+2*y+0.5*(100-x-y)=100thenprintx,y,100-x-yendifnextyNextxforx=0to100fory=0to100forz=0to100ifx+y+z=100and3*x+2*y+0.5*z=100thenprintx,y,zendifnextznextynextxPrivateSubForm_Click()改进:for4.递推法

“递推法”又称为“迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。

猴子吃桃子。小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天要吃时只剩下一个,问小猴共摘下了多少个桃子?分析:这是一个“递推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子……。设第n天的桃子为xn,那么它是前一天的桃子数的xn-1的一半减1,即xn

=(xn-1+1)×24.递推法PrivateSubForm_Click()dimnasinteger,Iasintegerx=1print“第7天的桃子数为:1只”forI=6to1step–1x=(x+1)*2print“第”;I;”天的桃子数为:”;x;”只”nextiEndSubPrivateSubForm_Click()5.最小、最大值在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。例随机产生10个100~200之间的数,求最大值。PrivateSubCommand1_Click()

Max=100Fori=1To10x=Int(Rnd*101+100)Printx;

Ifx>MaxThenMax=xNextiPrintPrint"最大值=";MaxEndSub5.最小、最大值PrivateSubCommand1_C

实际应用,求最短残料。有一根长度为321米的钢材料,要将它截取成两种规格a、b的长度分别为17米和27米的短料,每种至少1段,问分隔成a,b各多少段后,剩余的残料r最少?分析,该题利用“试凑法”通过二重循环求残料r的最小值正数,残料不可能是负数。程序如下:PrivateSubCommand1_Click()Dima%,b%,min!,ia%,ib%min=321 ‘最小值初值取钢材料的长度Forb=1To321\27 ‘b最多的段数Fora=1To321\17 ‘a最多的段数t=321-b*27-a*17 ‘当前的残料Ift>0Andt<minThen min=t ‘求最短的残料ia=a ‘最短残料时a的段数ib=b ‘最短残料时b的段数EndIfNextaNextbPrintia,ib,rEndSub实际应用,求最短残料。PrivateSubCom二级真题练习

阅读下面程序,单击窗体后在窗体上显示的内容是________,若将程序中的A语句与B语句的位置互换,再次执行程序,显示内容是________。(02春)OptionExplicitPrivateSubForm_Click()DimsumAsInteger,iAsIntegerFori=7To4Step-1SelectCaseiCase4,7sum=sum+i‘A语句

Case3,5sum=sum+2‘B语句CaseElsesum=sum+1EndSelectNextiPrint"sum=";sumEndSub二级真题练习

阅读下面程序,单击窗体后在窗体上显示的内容是执行以下语句后,a的值是______(02春)DimaAsIntegera=1DoUntila=100a=a+2LoopA、99B、100C、溢出D、101执行以下语句后,a的值是______(02春)求出1-100之内的所有勾股数(若a2+b2=c2,a,b,c为自然数,其中a<>b,则a,b,c称为一对勾股数)。编程题:求出1-100之内的所有勾股数(若a2+b2=练习题1、下列循环语句能正常结束的循环是_____。A、I=5doI=I+1loopuntilI<0B、I=1doI=I+2loopuntilI=10C、I=10doI=I-2loopuntilI<0D、I=6doI=I-4loopuntilI=0练习题1、下列循环语句能正常结束的循环是_____。B、I=2、下面程序段运行结果为______。ForI=3to1step–1printspc(5-I);forj=1to2*I-1print“*”;nextjprintNextiA、*********B、*********C、*********D、*********2、下面程序段运行结果为______。A、*B执行下面程序,当单击窗体时,显示在窗体上的第一行的内容是_______,第二行的内容是_______Privatesubform_click()dimIasinteger,sumasintegerforI=0.5to8.5step2.5sum=sum+I*10nextIprintsumprintIEndsub执行下面程序,当单击窗体时,显示在窗体上的第一行的内容是__3、执行下面程序,打印结果是_______。optionexplicitprivatesubform_click()dimIasinteger,jasintegerj=10forI=1tojstep2I=I+1j=j-inextIprintI,jendsub3、执行下面程序,打印结果是_______。4、将一个正整数分解为质因数乘积。例如:234=2*3*3*13。Privatesubcommand1_click()dimn%,factor%,firstasbooleann=inputbox(“输入一个正整数”)factor=2first=truedodowhile____iffirstthenprintn;”=”;factor;elseprint“*”;factor;endif_____first=falseloopfactor=factor+1Loopuntilfactor>nEndsub4、将一个正整数分解为质因数乘积。例如:234=2*3*3*第四章VB算法基础及基本语句第四章VB算法基础及基本语句主要内容三种程序结构(顺序,分支,循环)赋值语句条件分支语句(共五种)笔记、作业、实验主要内容三种程序结构(顺序,分支,循环)笔记、作业、实验求两个自然数的最大公约数的算法 (欧几里德算法) S1.输入两个自然数M、N S2.求M除以N的余数R S3.使M=N,即用N代换M S4.使N=R,即用R代换N S5.若R≠0,则重复执行S2、S3、S4(循环),否则转S6 S6.输出M,M即为M和N的最大公约数求两个自然数的最大公约数的算法基本算法结构图顺序分支循环基本算法结构图顺序分支循环4.2.1赋值语句1、形式Var=<表达式>如:s=“Thisisaflower”Number%=72Text.font.size=12Y=(a+b)/2作用:将表达式的值赋值给变量名。一般用于给变量赋值或对控件设定属性值。4.2.1赋值语句1、形式2.不同数据类型数据的赋值当表达式的类型与变量的类型不一致时,强制转换成左边的精度,如iA%=10/3iA中的结果为3

注意:虽然赋值号与关系运算符“等号”都用“=”表示,VB系统会根据所处的位置自动判断是何种意义的符号。注意点:P59-602.不同数据类型数据的赋值4.2.2InputBox函数InputBox函数 作用:

用来接受用户通过键盘输入的数据。形式:V=InputBox(Prompt[,Title][,Default]

[,x,y][,helpfile,context])其中:提示:

提示信息;标题:

对话框标题;缺省:输入区缺省值函数返回字符类型。举例:下页4.2.2InputBox函数InputBox函数PrivateSubForm_Click()

PassWord=InputBox("输入你的口令:","程序示例")IfPassWord="123456"ThenPrint"OK!"ElsePrint"Error!"EndIfEndSub函数返回值PrivateSubForm_Click()函数返回值4.2.3MsgBox函数作用: MsgBox函数用于向用户发布提示信息,并要求用户作出必要的响应。形式是: MsgBox(Prompt[,button][,title]

[,helpfile,context])P724.2.3MsgBox函数作用:P72button:这是一个由4个数值常量组成的式子,形式为c1+c2+c3+c4,button:

PrintMsgBox("非法数据!",vbOKOnly+48+0,"提示信息")

PrintMsgBox(“请输入X值!”,16+vbOKOnly,”ex4_6")PrintMsgBox("非法数据!",vbOKOnlMsgBox函数根据用户选择单击的按钮而返回不同的值:参见P63表4-3。MsgBox函数根据用户选择单击的按钮而返回不同的值:参见P顺序结构顺序结构4.3分支结构和分支结构语句结构示意图4.3分支结构和分支结构语句结构示意图1、IF条件THEN一条语句2、if条件THEN

语句组(多条语句)

end

if3、if条件then

语句组1

else

语句组2

end

if4、if条件1then 语句组1 elseif条件2then

语句组2 elseif条件3then

语句组3……[else

语句组n]endif1、IF条件THEN一条语句4、if条件1the

1.If…Then语句(单分支结构)

If<表达式>Then语句块EndIf

If<表达式>Then<语句>

例:已知两个数x和y,比较它们的大小,使得x大于y.

Ifx<yThent=xx=yy=tEndIf

或Ifx<yThent=x:x=y:y=t重要的是学会两个数的交换,若上述语句次序变一下,结果如何?例:已知两个数x和y,比较它们的大小,2.If…Then…Else语句(双分支结构)

If<表达式>Then<语句块1>Else<语句块2>EndIf

If<表达式>Then<语句1>Else<语句2>

计算分段函数:单分支结构实现:

y=cos(x)-x^3+3*xIfx<>0Theny=sin(x)+sqr(x*x+1)

双分支结构实现:

Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf2.If…Then…Else语句(双分支结构)单分支结构实3.If…Then…ElseIf语句(多分支结构)

形式:

If<表达式1>Then <语句块1>ElseIf<表达式2>Then <语句块2>

[Else

语句块n+1

]EndIf3.If…Then…ElseIf语句(多分支结构)PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)

Ifx<1ThenText2.Text=“小于1的数”

ElseIfx<=10ThenText2.Text=“1到10之间”

ElseText2.Text=”大于10的数”

EndIfEndSub输入判断PrivateSubCommand1_Click()输入例已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。用多分支结构实现:

不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。.

ElseIf不能写成ElseIf。IfUcase(strC)>="A"AndUcase(strC)<="Z"Then

PrintstrC+"是字母字符"ElseIfstrC>="0"AndstrC<="9"Then PrintstrC+"是数字字符"Else PrintstrC+"其他字符"EndIf例已知变量strC中存放了一个字符,判断该字符是字母字符、数4.If语句的嵌套

If语句的嵌套是指If或Else后面的语句块中又包含If语句。形式如下:

If<表达式1>Then

If<表达式11>Then…EndIf…EndIf

例:已知x,y,z三个数,使得x>y>z用一个IF语句和一个嵌套的IF语句实现Ifx<yThent=x:x=y:y=t

Ify<zThent=y:y=z:z=t

Ifx<yThent=x:x=y:y=tEndIf

EndIfIf语句的嵌套注意事项:书写锯齿型;If与EndIf配对。4.If语句的嵌套例:已知x,y,z三个数,使得x>y>z5、Select-Case-EndSelect结构语句Select

Casee

Casec1A组语句

Casec2B组语句...

Case

Elsen组语句

EndSelecte称为测试表达式,

c1,c2,...是测试项它们可取三种形式:(1)具体取值:

如:3、5、7.2等;(2)连续的数据范围:

如:8To20;”B”To“H”等;(3)满足某个判决条件:

如:Is>20;Is<="P"等。测试项还可以是这三中形式的组合,如4,7To9,Is>305、Select-Case-EndSelect结构语句表达式列表1……语句块1……语句块n+1……表达式列表2表达式列表n语句块2语句块nTTTFFF表达式列表1……语句块1……语句块n+1……表达式列表2表达PrivateSubCommand1_Click()DimxAsIntegerx=Val(text1.Text)

Select

Casex

CaseIs<1Text2.text="这是小于1的数"

Case1To10Text2.Text="这是1到10之间的数"

CaseElseText2.Text="这是大于10的数"

EndSelectEndSubPrivateSubCommand1_Click()例变量strC中存放了一个字符,判断该字符类型。在前面例中用多分支结构实现:

IfUcase(strC)>="A"AndUcase(strC)<="Z"Then PrintstrC+"是字母字符"ElseIfstrC>="0"AndstrC<="9"Then PrintstrC+"是数字字符"Else PrintstrC+"其他字符"EndIf用SelectCase语句实现:

SelectCasestrC Case"a"To"z","A"To"Z" PrintstrC+"是字母字符"

Case"0"To"9" PrintstrC+"是数字字符"

CaseElse PrintstrC+"其他字符"

EndSelect例变量strC中存放了一个字符,判断该字符类型。

DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx>=0Theny=1+xElsey=1-2*xEndIfText2.Text=y输入x,计算y的值。其中 1+x(x≥0)Y=1-2x(x<0)思考题:DimxAsSingle,yAsSingle1、学校对学习成绩优良的学生进行奖励,获奖的条件如下:(1)所考5门课的成绩都在88分以上。(2)前3门(主课)的成绩都在95分以上,其他两门(非主课)的成绩都在80分以上。输入某学生5门课的成绩s1、s2、s3、s4、s5,判断他是否能够获奖。1、学校对学习成绩优良的学生进行奖励,获奖的条件如下:2、利用输入框函数输入3个不同的数,选出其中最大的数。2、利用输入框函数输入3个不同的数,选出其中最大的数。3、铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过50kg时,0.25元/kg,超过50kg而不超过100kg时,其超过部分按0.35元/kg收费,超过100kg时,其超过部分按0.45元/kg收费。编写程序,输入行李重量,计算并输出托运的费用。设行李重量为wkg,应付运费为x元,则运费公式为:0.25*w(w<=50)X=0.25*50+0.35*(w-50)(50<w<=100)0.25*50+0.35*50+0.45*(w-100)(w>100)3、铁路托运行李,从甲地到乙地,规定每张客4、某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物(1)在1000元以上者,按九五折优惠;(2)在2000元以上者,按九折优惠;(3)在3000元以上者,按八五折优惠;(4)在5000元以上者,按八折优惠;编写程序,输入购物款数,计算并输出优惠价。4、某百货公司为了促销,采用购物打折扣的优惠5、已知两个变量x和y,比较它们的大小,使得x中的值大于y,下面那个方法能实现?Ifx<ythenA、x=y:y=xB、x=t:t=y:y=tC、t=y:y=x:x=tD、x=y:t=y:x=t5、已知两个变量x和y,比较它们的大小,使得常见错误1.在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。2.多边选择ElseIf关键字的书写和条件表达式的表示ElseIf不要写成ElseIf;多个条件表达式次序问题。3.SelectCase语句的使用SelectCase后不能出现多个变量;Case子句后不能出现变量。常见错误例:已知百分制成绩mark,显示对应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论