课件4第四章控制结构_第1页
课件4第四章控制结构_第2页
课件4第四章控制结构_第3页
课件4第四章控制结构_第4页
课件4第四章控制结构_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

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

文档简介

1第4章VB控制结构4.1顺序结构4.2选择结构4.3循环结构4.4其它辅助控制语句和控件4.5综合应用4.6自主学习上机作业5问题总结程序结构:‘?根据重量求运费Dima%,cost%Text1=aText2=costCost=a*10变量定义输入数据输出数据处理数据‘?根据重量求运费Dima%,cost%a=Text1Cost=a*10Text2=cost上机作业5问题总结输出结果的方式:Form1Text1msgboxLabel1错误“要求对象”低级错误:text1写成txte1…(上机5)实验3选择结构总结:第八题Dimn%SelectCasen=Val(Text1)Casen=1Text2="星期一"Casen=2Text2="星期二"Casen=3Text2="星期三"Casen=4Text2="星期四"Casen=5Text2="星期五"Casen=6Text2="星期六"Casen=7Text2="星期天"EndSelect4复习结构化程序设计的三种结构讲评上次的实验讲新课(滚动条、进度条、定时器、)几个算法复习循环几种循环特点、区别哪些语句放到循环里,哪些放到循环外(以判断偶数为例)判断出偶数,每行打5个请问嵌套在里面的IF能否拿出来直接看D.6程序6实验6总结:窗体的load事件Print看不出效果解决方法:1、窗体的Form_Load()事件中加上Me.AutoRedraw=True一句2、在窗体的属性页将其属性AutoRedraw选True:

7实验总结:窗体的AutoRedraw属性自动重绘,指当窗体或控件最小化,或被遮挡以后,再显示的时候,会将被遮挡的部分重新画出来如果是False的话,不会自动重绘,必须执行Refresh指令才会重绘。打印过后,将窗体最小化,再还原,看看效果

8实验4-2

如何打印出字母,Printchr(65)累加或者累乘的固定结构?Fori=1to100t=?s=s+tNextiDowhile…n=n+1t=?s=s+tNextiD.4的溢出问题?DimaAsLonga=2+3276711循环算法总结累加和累乘穷举法(找因子,水仙花数,素数,百钱买百鸡,完数)字符串处理(筛选,逆序,加密和解密)递推(小猴吃桃)求最大公约数(辗转相除法)十进制转换二进制124.1顺序结构VB具有结构化程序设计的三种程序控制结构,即顺序结构、选择结构、循环结构,是程序设计的基础。本章目录(1)顺序结构

各语句按出现的先后次序执行bABa用传统流程图表示为13(2)选择结构传统流程图:ba条件?AB不成立成立根据条件决定执行的语句14(3)循环结构I、当型循环结构

a

条件?成立循环体b不成立aa循环体b不成立成立条件?II、直到型循环结构

根据条件重复执行语句(称为循环体)154.1顺序结构本章目录4.1.1引例例4.1华氏温度与摄氏温度之间转换。要求:已知华氏温度,转换成摄氏温度;同样,已知摄氏温度,转换成华氏温度;

换显示保留两位小数。华氏温度与摄氏温度之间转换的公式是:

程序运行不管输入摄氏温度C多少,显示结果华氏温度始终不变,原因?计算机始终按照人安排的顺序执行代码Dimf!,c!f=9/5*c+32c=Val(Text1.Text)Text2.Text=Format(f,"0.00")c=Val(Text1.Text)f=9/5*c+3216一般程序设计语言中顺序结构的常用简单语句:

赋值语句和输入/输出语句等。在VB中

赋值语句

输入/输出通过:

文本框控件、标签控件、

InputBox函数、MsgBox函数

Print方法174.1.2赋值语句功能:计算表达式的值,再将此值赋给变量或对 象属性。(左右互换可以吗?)给变量赋值和设定属性是VB编程中常见的两个任务。例如:n=n+1

'计数累加

Text1.Text

="" '清除文本框的内容Text1.Text

="欢迎使用VB"'文本框显示字符串

本章目录形式:变量名=表达式对象名.属性名=表达式18赋值语句注意点本章目录

“=”符号有两个意义

赋值号、关系运算符等号形式相同,系统会根据所处的位置判断符号意义。赋值号左边只能是变量,不能是常量、常数符 号、表达式。下面均为错误的赋值语句:Now()=x+y'左边是表达式(函数)5=sqr(s)+x+y'

左边是常量x+y=z '

左边是表达式19常用赋值语句形式72页累加sum=sum+x计数

n=n+1

(与循环结构结合计数器)本章目录赋值号两边类型不同时的处理

①当两边精度不同时,表达式的值会转换成左边变量的精度。②当表达式是数字字符串,左边是数值类型,自动转换成数值类型再赋值,当表达式有非数字字符或空串,则出错。③逻辑型赋值给数值型时,True转换为-1,False转换为0; 反之当数值型赋值给逻辑型时,非0转换为True,0为False。④任何非字符类型赋值给字符类型,自动转换为字符类型。

204.1.3数据输出和输入标签和文本框控件(1)标签:利用CAPTION属性来输出数据(2)文本框:利用TEXT属性来获得用户从键盘输入的数据,或将计算的结果输出。R=val(text1)Label1.caption=“面积=“&3.14*r*r21形式:变量=InputBox(提示[,标题][,默认值])4.1.3数据输出和输入本章目录

注意:提示项不能省略。若要多行提示,可在每行行末加回车换行vbCrLf。例4.2利用InputBox输入基本工资和营业额,按营业额的5%提成,计算实发工资并显示。

作用:打开一个对话框,等待用户输入,返回字符 串类型的输入值。1.InputBox函数★例题:窗体上有Labe11和Command1PrivateSubCommand1_Click()x=InputBox("输入x:",,0)y=InputBox("输入y:",,0)Label1.Caption=x+yEndSub运行,在输入对话框中分别输入2、3,结果是A)程序运行有错误,数据类型不匹配B)程序运行有错误,InputBox函数的格式不对C)在Labe11中显示5D)在Labe11中显示232223作用:打开信息框,等待用户选择一个按钮。

MsgBox函数返回所选按钮的整型值,(整数1-7)

变量=MsgBox(提示[,按钮][,标题])

MsgBox过程无返回值,独立的语句:

MsgBox

提示[,按钮][,标题]2.MsgBox函数和过程本章目录按钮:决定信息框按钮的数目、名称及图标。返回结果:返回所按的按钮值此两项均为整型表达式24MsgBox按钮设置本章目录25MsgBox按钮设置第3个按钮为默认512VBDefaultButton3第2个按钮为默认56VBDefaultButton2第1个按钮为默认0VBDefaultButton1默认按钮

信息图标64VBInformation警告信息图标48VBExclamation询问信息图标32VBQuestion关键信息图标16VBCritical图标类型

重试、取消按钮5VBRetryCancel是、否按钮4VBYesNo是、否、取消按钮3VBYesNoCancel终止、重试、忽略按钮2VBAboutRetryIgnore确定、取消按钮1VBOkCancel确定按钮0VBOkOnly按钮数目描述值内部常数分组本章目录26MsgBox所选按钮返回值本章目录内部常数返回值被单击的按钮vbOk1确定vbCancel2取消vbAbort3终止vbRetry4重试vbIgnore5忽略vbYes6是vbNo7否例4.3编一账号和密码输入的检验程序,当输入不正确,如账号为非数字字符,密码不正确等,显示有关信息,再输入。273.Print方法形式:[对象.]Print[定位函数][输出表达式列表][分隔符]作用:在窗体、图形框输出信息,缺省对象为窗体Write输出后不换行定位函数:Spc(n)

用于在输出时插入n个空格;

Tab(n)

定位于从对象最左端算起的第n列。

输出表达式列表:用逗号分隔;缺省输出空行。分隔符:“;”不换行;缺省换行例4.4使用Print方法输出图形。28顺序结构要点掌握计算机按照语句出现的先后顺序执行掌握赋值语句掌握InputBox输入数据掌握MsgBox对话框显示信息和按钮的作用掌握Print方法完成实验二、顺序结构293.Print方法作用:在对象上输出信息。对象.Print[Spc(n)|Tab(n)][输出列表

][;|,]对象:窗体、图形框或打印机。缺省为窗体。Spc(n)函数:从当前位置起空n个空格Tab(n)函数:从最左端开始计算的第n列分号:光标定位在上一个被显示的字符之后逗号:光标定位在下一个打印区开始处(每区14列)Print语句尾无分号或逗号,输出后换行例4.4Print方法输出图形利用String函数显示重复字符利用循环结构、Spc、Tab函数显示有规律图形1、对比Print"abc","def"Print"abc";"def"Print"12345678901234"2、Print"abc";"def"Print"abc";Spc(6);"def"Print"abc";Tab(20);"def“Print"abcdefghigk";Tab(3);"def"3031Print"abc"Print"def"Print“abc”;Print"def"Print“abc”,Print"def"Print"abc“;Printtab(3);"def"循环变量的变化1234532i543216-i135792i-12468102i975319-2(i-1)9-09-29-49-69-810-110-310-510-710-9334.Format格式输出函数

功能:专门用于将数值、日期和时间数据按指定格式输出的函数形式:

Format(表达式[,"格式字符串"])例4.4利用Format函数显示数值。

(书78页)符号“0”或“#”,相同点:若要显示数值表达式的整数部分位数多于格式字符串的位数,则按实际数值显示;若小数部分的位数多于格式字符串的位数,则按四舍五入显示;不同点:“0”按其规定的位数显示,“#”对于整数钱的0或小数后的0不显示34常用数值格式化符及举例

符号作用数值表达式格式化字符串显示结果0实际数字小于格式控制位数时,数字前后加01234.5671234.567“00000.0000”“000.00”01234.56701234.57#实际数字小于格式控制位数时,数字前后不加01234.5671234.567“#####.####”“###.##”1234.5671234.57.加小数点1234“0000.00”1234.00,千分位1234.567“##,##0.0000”1,234.5670%数值乘以100,加百分号1234.567“####.##%”123456.7%$在数字前强加$1234.567"$###.##"$1234.57E+用指数表示1234.567"0.00E+00"1.23E-010、#是数位控制符,.、,是标点控制符4.2选择结构和控件顺序结构的程序中每条语句顺序向下执行,中间没有任何执行路径的跳转。然而,现实世界并不都是一帆风顺,更多的时候,我们还需要见风使舵,根据各种情况做出合适的选择现实世界中的这一根据不同条件做出不同选择的场景,反映到程序当中就是程序的选择结构。35364.2选择结构计算机要处理的问题往往是复杂多变的,仅采用顺序结构是不够的。必须利用选择结构等来解决实际应用中的各种问题。VB中主要通过If条件语句和Select情况语句来实现。它们都是对条件进行判断,根据判断结果,选择执行不同的分支。本章目录例1.1移动到窗体边界判断If(Label1.Top>Height)ThenLabel1.Top=0374.2.1If条件语句1.If…Then语句(单分支结构)

If<表达式>Then

语句块(可以是一句或多句语句)

EndIf或

If<表达式>Then<语句>表达式:算术、关系、逻辑表达式。语句块:可以是一句或多句语句表达式值:按非零为True,零为False进行判断。本章目录作用:当表达式值为True,执行Then后面的语句块 否则不做任何操作。38单分支结构Ifx<yThent=xx=yy=tEndIf或Ifx<yThent=x:x=y:y=t

本章目录例4.6:已知两个数x和y,比较它们的大小,使得x大于y。注意:简单If形式无EndIf时,只能是一句语句或语句间用冒号分隔,而且必须在一行上书写。39双分支结构2.If…Then…Else语句If表达式

Then

语句块1Else

语句块2EndIf或If表达式

Then

语句1

Else

语句2本章目录作用:当表达式的值为True时,执行Then后面 的语句块1,否则执行Else后面的语句块2

40双分支结构例4.7计算分段函数

单分支

ifx=0then

y=cos(x)-x^3+3*x结构实现Ifx<>0Theny=sin(x)+sqrt(x*x+1)

Ifx<>0Then

双分支

y=sin(x)+sqr(x*x+1)Else结构实现

y=cos(x)-x^3+3*xEndIf本章目录41

单分支

y=cos(x)-x^3+3*x结构实现Ifx<>0Theny=sin(x)+sqrt(x*x+1)

思考如下单分支结构能实现?Ifx<>0Theny=sin(x)+sqr(x*x+1)

y=cos(x)-x^3+3*x42多分支结构3.If…Then…ElseIf语句

If表达式1Then

语句块1

ElseIf表达式2Then

语句块2 …

[Else

语句块n+1]

EndIf作用:根据不同的表达式值确定执行哪个语句块

本章目录

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

ElseIf不能写成

ElseIf说明:43例4.8已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。多分支结构例本章目录IfUCase(ch)>="A"AndUCase(ch)<="Z"Then

MsgBox(ch+“是字母字符”)

'考虑大小写字母

ElseIfch>="0"Andch<="9"Then

'数字字符

MsgBox(ch+"是数字字符")

Else

'除上述字符以外的字符

MsgBox(ch+"是其他字符")

EndIf444.2.2SelectCase语句SelectCase

变量或表达式

Case表达式列表1

语句块1Case表达式列表2

语句块2 …[CaseElse

语句块n+1]EndSelect表达式列表与变量或表达式的类型必须相同,是下面4种形式之一:表达式例:"A"一组用逗号分隔的枚举值

2,4,6,8

表达式1To表达式260To100Is关系运算符表达式Is<60本章目录注意45Dimn!n=Text1SelectCasenCaseIs<60,Is<70Print“及格"CaseElsePrint"else"EndSelect是否正确?CaseIs<60andIs<70CaseIs<60orIs<70表达式列表与变量或表达式的类型必须相同selectcase就是对表达式结果进行分类,不能表示AND关系,可以表示Or46SelectCase语句例例4.10

将例4.8改用SelectCase

语句实现:

本章目录SelectCasech Case"a"To"z","A"To"Z" MsgBox(ch+"是字母字符") Case"0"To"9" MsgBox(ch+"是数字字符") CaseElse MsgBox(ch+"是其他字符")EndSelectSelectCase语句比If…Then…ElseIf语句直观,程序可读性强。但不是所有的多分支结构均可用SelectCase语句代替If…Then…ElseIf语句。当对多个变量进行条件判断时,只能使用if47SelectCase语句例例4.9判断坐标点(x,y),落在哪个象限。代码一

Ifx>0Andy>0ThenMsgBox("在第一象限")ElseIfx<0Andy>0ThenMsgBox("在第二象限") ElseIfx<0Andy<0ThenMsgBox("在第三象限") ElseIfx>0Andy<0ThenMsgBox("在第四象限") EndIf

代码二SelectCasex,yCasex>0Andy>0MsgBox(“在第一象限”)Casex<0Andy>0MsgBox(“在第二象限”)Casex<0Andy<0MsgBox(“在第三象限”)Casex>0Andy<0MsgBox(“在第四象限”)EndSelect代码二错误:1.SelectCase后不能出现多个变量2.Case后不能出现变量及有关运算符本章目录小结:1.SelectCase语句虽然简洁,但使用有限制2.虽然If语句条件复杂时书写不直观,但是万能的48If语句的嵌套是指If或Else后面的语句块中又包含If语If表达式1Then

If表达式2Then…EndIf

…EndIfIfx<yThent=x:x=y:y=tIfy<zThent=y:y=z:z=tIfx<yThent=x:x=y:y=tEndIfEndIfIf语句的嵌套例4.12已知x,y,z三个数,使得x>y>z用一个IF语句和一个嵌套的IF语句实现本章目录49If语句的嵌套是指If或Else后面的语句块中又包含If语If表达式1Then

If表达式2Then…EndIf

…EndIfIf语句的嵌套例4.12

已知x,y,z三个数,使得x>y>z用一个IF语句和一个嵌套的IF语句实现本章目录Ifx<yThent=x:x=y:y=tIfy<zThent=y:y=z:z=tIfx<yThent=x:x=y:y=tEndIfEndIfX<y?X与y交换y<z?X<y?y与z交换X与y交换TTTFFFx>y>zx≥zz最小F50另一种方法?sikao‘A方法Dimx%,y%,z%,t%x=Int(Rnd*100+1)y=Int(Rnd*100+1)z=Int(Rnd*100+1)Printx;y;zIfx<yThent=x:x=y:y=tIfx<zThent=x:x=z:z=tIfy<zThent=y:y=z:z=tPrintx;y;z‘B方法Dimx%,y%,z%,t%x=Int(Rnd*100+1)y=Int(Rnd*100+1)z=Int(Rnd*100+1)Printx;y;zIfx<yThent=x:x=y:y=tIfy<zThent=y:y=z:z=tIfx<zThent=x:x=z:z=tPrintx;y;z51注意如何表达数学表达式60<x<100Ift<=10Thencost=30ElseIf10<t<50Thencost=2.5*tElsecost=2*tEndIfIft<=10Thencost=30ElseIft<50Thencost=2.5*tElsecost=2*tEndIf提问84页52534.2.3条件函数(1)IIf函数IIf(表达式,表达式为真时的值,表达式为假时的值)IIf函数是If

Then

…Else

结构的简洁表示本章目录例如,将x,y中大的数,放入Tmax变量中:

Tmax=IIf(x>y,x,y)

该语句与如下语句等价:

Ifx>yThenTmax=xElseTmax=y544.2.3条件函数(2)Choose函数

Choose(整数表达式,选项列表)根据表达式的值i,返回选项列表中第i个选项。如果整数表达式的值越出选项范围时,返回Null。例根据Nop的值,得到+、-、×、÷中的某运算符:Op=Choose(Nop,"+","-","×","÷")

本章目录DimnopAsInteger,opAsCharRandomize()nop=Int(Rnd()*4+1)op=Choose(nop,"+","-","×","÷")MsgBox("nop="&nop&"op="&op)例4.13根据当前日期,显示今日是星期几。t=Choose(Weekday(Now),“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”)MsgBox("今天是:"&Now&t)55日期函数P53页PrintDate,Time,NowPrintDay(Date),Month(Date),Year(Date)PrintDateAdd("d",81,Date)PrintDateDiff("d",Date,#12/31/2011#)4.2.5选择控件与分组控件

当程序运行中,需要用户在界面上作出选择是,可以用单选按钮或复选框当有多组单选按钮或复选框时,可使用框架来将他们分组。56574.2.5选择控件与分组控件

1.单选按钮()

单选按钮以组的形式出现,允许选择一项。

例单选题测试(1)主要属性

Caption属性按钮上显示的文本

Value属性表示单选按钮的状态:

本章目录OptionButton(2)主要事件

Click

单击后使Value属性为True58一组选项,允许用户选择其中一个或多个例多选题测试(1)主要属性和事件

与单选有相同的属性和事件,Value属性类型和值不同:

0——vbUnchecked未选定

1——vbChecked被选定

2——vbGrayed灰色,部分被选定2.复选框()本章目录注意:

Click

单击后的效果,与单选按钮比较593.框架()需要在同一个窗体中建立几组相互独立的单选或复选按钮;具有容器功能。先建立框架控件,然后将各控件放置其中。本章目录特性:移动、复制、删除框架,对控件进行Enabled、Visible属性设置,均作用于框架内控件。

主要属性:Caption框架的标题,无则封闭框线。事件:一般不需要编写事件过程。Frame60例4.14通过单选按钮和分组控件设置文本框的Font属性。实现分析:(1)每个控件都有Click事件:对单选作对应的字体或字号设置;对于复选框因字型是逻辑类型,进行取反设置。(2)也可以加以个Command1按钮,均在该事件内判断和设置。例4.15选课

61选择结构要点掌握If语句多种分支形式的正确书写与使用掌握SelectCase语句的正确书写与使用掌握单选按钮、复选框和框架控件的使用完成实验三、选择结构

624.3循环结构教学思路什么是循环为什么学习它?它有用吗?以FOR循环为例,深入了解循环结构尝试用FOR循环解决实际问题DO循环课后作业:独立完成634.3循环结构计算机最擅长的功能之一:

按规定的条件,重复执行某些操作。4.3.1引例—求π的近似值祖冲之用了15年算出π值到小数点后面7位;第一台计算机计算到2000多位1999年东京大学超级计算机算到2061.5843亿位本章目录例4.16验证祖冲之有效位7位的计算求π/4=1-1/3+1/5-1/7+1/9…关键找规律写通项64什么是循环?按规定的条件,重复执行某些操作。重复做什么(循环体)循环执行几次,什么时候结束(循环结束条件)(计算机最擅长的功能之一就是按规定的条件,重复执行某些操作。)生活中的循环例子体育课上:练长跑,跑20圈怎么跑:一步一步来起点,1圈,2圈…20圈,结束65VB中提供了主要的两类循环语句:

for语句(一般已知循环次数);

Do语句(一般未知循环次数)。66例1:计算1+2+3+⋯+100之和?高斯算法:1+1002+993+98…50+51一共50个101,结果是505067例1:计算1+2+3+⋯+100之和计算机没有那么智能,不会像人这样思考,它只会一些简单、基本的运算。擅长:重复做简单的事情!(按照规定的条件重复执行某些操作)整数运算:+,-,*,/,mod(取余数),\(整除),^(乘方)再复杂的问题:也是经由这些基本运算一步一步得出来的。68例1:计算1+2+3+⋯+100之和

100行!一直重复做加法:重复了100次sum=0sum=sum+1sum=sum+2sum=sum+3…sum=sum+100分析?69为什么学习循环现实生活中有很多重复问题,用我们已经学过的顺序,选择结构解决不了70For循环语句(已知循环次数)For循环变量=初值

to终值

[step步长]

循环体Next循环变量

①②③④Fori=1to100step1

循环体Nexti循环变量必须为数值型。100次循环?循环体真假i=1i=i+1Next的下一条语句Fori=1to100step1

循环体Nexti流程图i<=100?:在整个循环的执行中,循环变量i一直在变,(有规律的变化)请问,循环结束后,i=?循环体i<=100真假i=1i=i+1Next的下一条语句i=1问终值?执行循环体

i=i+1i=2问终值?执行循环体

i=i+1……i=100问终值?执行循环体

i=i+1i=101问终值?不满足条件,退出循环详细执行情况?73退出循环时,循环变量的值最后一次执行循环体时,循环变量的值+步长Fori=1to100step1

循环体Nexti74总结:循环的两个基本问题重复做的事情(循环体)重复做多少次(循环次数)75关于循环次数:Fori=1to100step1

循环体NextiFori=51to100step1

循环体NextiFori=1to100step2

循环体NextiFori=1to1000step1

循环体Nexti关于循环次数:76>0初值<=终值=1时,可省略<0初值>=终值=0死循环步长进行循环的条件77累加:Sum=0sum=sum+1sum=sum+2…sum=sum+100Fori=1to100step1

循环体NextiFori=1to100step1sum=sum+?Nexti前例:计算1+2+3+⋯+100之和78i=1

执行循环体sum=sum+?i=i+1i=2

执行循环体sum=sum+?i=i+1……i=100

执行循环体sum=sum+?i=i+1i=101

不满足条件,退出循环累加:sum=sum+1sum=sum+2…sum=sum+10079例1:计算1+2+3+⋯+100之和DimiAsIntegerDimsumAsIntegerFori=1To100

sum=sum+iNextiPrint“sum=“;sum80关于循环体:难点:写出重复部分的通用表达式最简单的情况:一模一样的重复打印100行“*****”稍微复杂一点:通式中变化的部分和循环变量一致累加和:sum=sum+i更复杂:不是和循环变量一样的变化规律,但肯定还是有规律的,它可能是对循环变量的变化。81For循环语句For循环语句用于控制循环次数已知的循环结构。For循环变量=初值To终值

[Step步长]

语句块

[ExitFor]

语句块Next循环变量循环变量必须为数值型。循环次数>0初值<终值=1时,可省略<0初值>终值=0死循环步长本章目录82Sum=0fori=1To100Step2sum=sum+iNextiMsgBox(sum)

Sum=0i=1Re:Ifi<=100Thensum=sum+Ii=i+2GoToReEndIfMsgBox(sum)计算1~100的奇数和

分别用for、If语句实现循环,理解for语句执行过程83For循环语句循环流程:(1)循环变量被赋初值,它仅被赋值一次。(2)判断循环变量是否在终值内,如果是,执行循环体;如果否,结束循环,执行Next的下一语句。(3)循环变量加步长,转(2),继续循环

本章目录84说明循环结束时,循环变量的值是多少?循环变量在循环体内可以多次引用,请问如果改变了循环变量的值是否影响循环次数?85注意事项:三个循环参数:初值、终值、步长如果在循环体内被改变,不会影响循环的执行次数,但循环变量若在循环体内被重新赋值,则循环次数有可能发生变化Fori=1To10s=s+ii=i+1NextPrints,i86举例Dimp%,i%,n%P=2:n=20Fori=1tonsteppp=p+2n=n-3i=i+1Ifp>=10thenexitforNextiPrinti,p,n11,10,887For循环语句举例例1:在窗体上打印出小于50的自然数反三:在窗体上打印出小于50的正偶数在窗体上打印出小于50的正奇数,并且要求每打印5个就换行例2:计算1+2+3+…+100,将结果打印在窗体上反三:计算5的阶乘上机作业6的补充题目例3:随机产生50个整数(范围1~100),请数出这50个整数中偶数的个数。要求打印出所有的偶数(每行打印5个)例4:找出一个整数(用INPUTBOX函数输入)的所有因子。(穷举)例5、判断一个整数(用文本框输入)是否是素数。8889例5、判断输入的数是否为素数?素数(质数)定义:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。算法:整数m,依次用i=2~m-1去除,只要有一个数能整除m,m就不是素数;否则m是素数。要求一定范围内的素数,只要将m作为外循环体变量。

本章目录100以内的素数有2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,在100内共有25个素数。注:(1)2和3是所有素数中唯一两个连着的数。(2)2是唯一一个为偶数(双数)的素数90素数Dimi%,n%n=Text1Fori=2Ton-1IfnModi=0ThenPrintn;"不是素数"ElsePrintn;"是素数"EndIfNextiDimi%,n%,m%n=Text1Fori=2Ton-1IfnModi=0Thenm=m+1EndIfNextiIfm=0ThenPrintn;"是素数"ElsePrintn;"不是素数"EndIf92方法1(Goto语句)Dimi%,m%m=Val(Text1)Fori=2Tom-1If(mModi)=0ThenGoToNotmNextiPicture1.Printm&"是素数"Notm:93方法2Dimi%,m%,tagAsBooleanm=Val(Text1)tag=TrueFori=2Tom-1If(mModi)=0Thentag=FalseNextiIftagThenPicture1.Printm&"是素数"EndIf94方法3DimN%,I%,K%N=Val(InputBox("N=?"))K=N-1ForI=2ToKIfNModI=0ThenExitForNextIIfI>KThenPrintN;"是素数"ElsePrintN;"不是素数"EndIf

95思考:终值K还可以等于K=n/2K=int(sqr(n))

因为N=Sqr(N)*Sqr(N),所以,当N能被大于等于Sqr(N)的整数整除时,一定存在一个小于等于Sqr(N)的整数,使N能被它整除,因此只要判断N能否被2,3,…,Sqr(N)整除即可96例4.18将可打印的ASCII码制成表格输出实现思路:

1.循环的初值、终值;

2.字符和码值关系;

3.控制每项占用位数(Tab

函数);

4.控制每行输出个数.

8*i+2例4.18将可打印的ASCII码制成表格输出

Dimi%Fori=1To95Picture1.PrintChr(31+i);"=";31+i,IfiMod7=0ThenPicture1.PrintNexti9798例4.18将可打印的ASCII码制成表格输出

PrivateSubPicture1_Click()Dimasc%,i%Picture1.Print"ASC码对照表"Forasc=32To126Picture1.PrintTab(8*i+2);Chr(asc);"=";asc;i=i+1Ifi=7Theni=0:Picture1.PrintNextascEndSub994.3.2

Do…Loop循环语句的形式Do循环用于控制循环次数未知的循环结构。形式1:(当型循环)IfeThenExitDo

Do

语句块

[ExitDo]

语句块LoopWhile<条件>DoWhile<条件>

语句块

[ExitDo]

语句块

Loop形式1为先判断后执行,有可能一次也不执行;形式2为先执行后判断,至少执行一次。100101Do…Loop循环语句的形式形式2:(直到型循环)

DoUntil<条件>

语句块

[ExitDo]

语句块

LoopDo

语句块

[ExitDo]

语句块LoopUntil<条件>IfeThenExitDo102条件语句块语句块TFExitDo条件语句块语句块TFExitDoDoUntil…Loop执行过程Do…LoopUntil执行过程103说明:(1)当使用While<条件>构成循环时,当条件为“真”则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until<条件>构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时则退出循环。(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句ExitDo的作用是退出循环,它只能用在DO/Loop结构中,常同选择结构一起出现,用来实现当满足某一条件时提前退出循环。104Do…Loop循环语句举例例4:编程计算:S=1+2+3+…+100当N<=100N=N+1打印SS=0,N=1S=S+NDimsasinteger,nasintegerS=0:n=1Dowhilen<=100s=s+nn=n+1LoopPrints算法流程图105例6:求自然对数e的近似值,要求精度为第n项的值小于0.00001,近似公式为:e=1+1/1!+1/2!+1/3!+…+1/n!+…

赋初值eint0011111!1/1!1+1/!22!½!1+1/!+1/2!33!1/3!1+1/!+1/2!+1/3!44!¼!…………1+1/1!+1/2!+…+1/k!k+1(k+1)!1/(k+1)!赋初值Dimi%,n&,t!,e!e=0‘存放累加和结果

i=0‘计数器

n=1‘存放阶乘的值

t=1‘存放第n项的值

DoWhilet>=0.00001e=e+t‘累加和

i=i+1

n=n*i‘连乘

t=1/nLoopPrint“计算了”,i;“项的和是”;e106累加(累乘)PrivateSubCommand2_Click()Dimi%,n&,t!,e!e=0i=0n=1t=1Doe=e+ti=i+1n=n*i'连乘

t=1/n

LoopUntilt<0.00001Print"计算了",i;"项的和是";e,EndSub

用于:求近似解。关键:找出通项、精度(结束循环条件)107PrivateSubCommand1_Click()Dimsum!,n%,e!,t!sum=1n=1e=1t=1DoWhilet>=10^(-5)sum=sum*n

n=n+1t=1/sume=e+tPrinttLoopPrinte108循环例题例4.20用辗转相除法求两自然数的最大公约数。求最大公约数的算法思想:例m=14,n=6的最大公约数Ifm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopMsgBox“最大公约数=”&n(1)对于两数m,n,使得m>n(2)m除以n得余数r(3)若r≠0,则:

mçn,nçr,再重复执行(2)

否则n为最大公约数,结束本章目录109辗转相减法

m=m-nm>nn=n-mn>mm、n为公约数m=nDoWhilem<>nmn

Ifm>nThen146m=m–n86Else26n=n–m24EndIf22Loop4.3.4循环的嵌套——多重循环结构

在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。110常见的二重嵌套形式:

111(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop112对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;正确

错误

Forii=1To10Forjj=1To20… Nextii NextjjForii=1To10Forii=1To20… Nextii NextiiForii=1To10Forjj=1To20… NextjjNextiiForii=1To10…NextiiForjj=1To10…Nextjj举例Dimi%,j%,k%Fori=1To3Forj=1To4Fork=1To5Printi;j;kNextkNextjNextiDimi%,j%Fori=1To3Forj=1To4Printi;jNextjNexti打印100内的所有素数?114几种循环语句比较115循环结构与选择结构的嵌套

在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体;在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,不允许出现在两个或两个以上的分支内。

116(1)ForI=…………

IF…Then……EndIF……NextI(6)IF…Then……ForI=…………EndIF……NextI(5)SelectCase……ForI=…………Case…………Case…………NextI………EndSelect(3)ForI=…………IF…Then……NextI……EndIF(2)IF…Then……

ForI=…………NextI……EndIF(4)ForI=…………

SelectCase…Case…………Case…………EndSelect……NextI×××1174.4其他控制语句和控件4.4.1GoTo

语句

无条件地转移到标号或行号指定的那行语句。

GoTo{标号|行号}本章目录代码说明注意:标号符合标识符规定;

行号是一个数字序列;转向的入口处标号或行号应有冒号。1184.4其他辅助控制语句和控件4.4.1GoTo语句无条件地转移到标号或行号指定的那行语句。

GoTo{标号|行号}注意:标号是字符序列,首字符必须为字母,标号后应有冒号;行号是一个数字序列;例4.15判断输入的数是否为素数素数就是除1和本身以外,不能被其他任何整数整除的数。根据此定义,判别某数m是否为素数最简单的方法就是依次用i=2~m-1去除,只要有一个数能整除m,m就不是素数;否则m是素数。要求一定范围内的素数,只要将m作为外循环体变量。

本章目录119方法1Dimi%,m%m=Val(Text1)Fori=2Tom-1If(mModi)=0ThenGoToNotmNextiPicture1.Printm&"是素数"Notm:1204.4.2Exit和End语句1.Exit语句VB中有多种形式的Exit语句,用于退出某种控制结构的执行。Exit的形式如下:

ExitFor、ExitDo、

ExitSub、ExitFunction本章目录1212.End语句

独立的End语句用于结束一个程序的运行,它可以放在任何事件过程中。与其他控制结构关键字配套的End语句

用于结束一个控制语句或过程或块,相当于语句括号。End语句的多种形式如下:

EndIf、EndSelect、EndWith、

EndType、EndFunction、EndSub本章目录1224.4.3滚动条、进度条和定时器滚动条(ScrollBar)通常附在窗体上协助观察数据或确定位置,也可作为数据输入工具。进度条(ProgressBar)用来指示事务处理的进度。滚动条有水平和垂直两种进度条没有水平垂直之分

本章目录1234.4.3滚动条、进度条和定时器1.滚动条(ScrollBar)

用于数据输入工具,也可显示数据。滚动条有水平(H)和垂直(V)两种。本章目录Value

滑块当前位置的值(缺省为0)Min

滑块最小位置值(缺省为0)Max

滑块最大位置值(缺省为32767)SmallChange单击滚动条两端的箭头时,Value属性(滑 块位置)改变值LargeChange单击滚动条的空白区域时,Value属性改变值124主要事件Scroll

当拖动滑块时触发Change

改变Value属性时触发例7.3计算0~18之间某个数阶乘,数据由滚动条获得。Max属性为18,Min属性为0,Value初值为0,SmallChange属性为1,LargeChange属性为3本章目录例4.24(7.4)设计一个调色板应用程序提示:RGB是一个颜色函数,通过红、绿、蓝3种基本色混合产生某种颜色。

格式:RGB(红,绿,蓝)

(1)红、绿、蓝3种基本色使用0~255之间的整数。设计思想:使用三个滚动条作为三种基本颜色的输入工具。125注意:任意一个颜色改变均为影响合成的颜色,因此用共享事件来简化编程。1262.进度条(ProgressBar)在WINDOWS及其应用程序中,当执行一个耗时较长的操作时通常会用进度条显示事务处理的进程。位于microsoftwindowscommoncontros6.0部件中,需要加载后才能使用(工程-部件-控件)水平和垂直进度条orientation属性

0-水平

1-垂直本章目录1272.进度条(ProgressBar)

用来指示事务处理的进度,显示的填充数主要属性:

Max、Min、Value(执行阶段被填充的数目)

编程使用方法:在对ProgressBar编程时,必须先确定Value属性上限(Min、Max值),value的初值例如果正在下载文件,Max

值为文件的字节数。变化的Value值,使得进度条变化。例在该文件下载过程中,Value的值为当前已下载的字节数。128Max和Min设置控件的界限Value(设计状态不能用)控件执行阶段被填充的数目,直到等于Max属性值。控件显示的填充数是Value属性与Max和Min属性之间的比值如果min=1,max=100,value=50,显示50%的填充块例4.25设计带有进度条的倒计时程序(以1分钟为例)

进度条的开始状态:填充块是满的然后填充块随着时间减少,依次递减,直到为空129ProgressBar1.Max=60ProgressBar1.Min=0ProgressBar1.Value=601303.定时器(Timer)

定时器以一定的时间间隔产生Timer事件属性Enabled

为False时定时器不产生Timer事件Interval

触发Timer事件的时间间隔,单位ms

事件定时器控件只有一个Timer

产生Tick事件条件:Enabled=True

Interval>0例4.26用一个定时器控制蝴蝶在窗体内的飞舞

本章目录思考:如何控制飞的速度、如何控制飞的每次距离?如果飞的过程有三个状态又如何编程?131循环结构要点掌握For循环语句的正确书写与使用掌握Do循环语句的正确书写与使用掌握滚动条、进度条和定时器的使用完成实验四、循环结构本节要点1324.5综合应用例4.16由计算机自动产生四则运算题,并能判断答案的正确性。设计思路:(1)通过随机函数Rnd产生试题的操作数和运算符,运算符+、-、×、÷可对应编号1~4。产生表达式通过Form_Load事件过程。(2)需要有一个全局变量保存四则运算题的正确答案,用户答案可通过文本框输入。(3)本题主要将随机函数、If语句、Select语句综合在一起使用。本章目录133综合应用-最大公约数例4.17用辗转相除法求两自然数的最大公约数。求最大公约数的算法思想:(1)对于两数m,n,使得m>n(2)m除以n得余数r例m=14,n=6

的最大公约数Ifm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopMsgBox“最大公约数=”&n

温馨提示

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

评论

0/150

提交评论