版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章三种基本结构程序设计本章内容及要求:1.了解算法概念及算法的表示,掌握用流程图表示算法2.熟练掌握赋值语句、End语句和注释语句等语句及输入/输出消息框函数的使用;3.熟练掌握行if语句、块if结构、SelectCase情况选择结构的使用,掌握选择的嵌套结构;4.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。重点:选择结构及循环结构的实现及其应用难点:选择的嵌套及多重循环结构第四章三种基本结构程序设计本章内容及要求:重点:选择结14.1算法及算法的表示
4.1.1算法概述什么是算法:广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。狭义地讲:算法是解决一个问题采取的方法和步骤的描述。下面通过两个简单的例子加以说明:例4.1输入三个数,然后输出其中最大的数。将三个数依次输入到变量A、B、C中,设变量MAX存放最大数。其算法如下:
4.1算法及算法的表示4.1.1算法概述例4.12例4.2输入10个数,打印输出其中最大的数。算法设计如下:(1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为1,即N=1(2)将A存入表示最大值的变量Max中,即Max=A(3)再输入一个值给A,如果A>Max则Max=A,否则Max不变(4)让记录数据个数的变量增加1,即N=N+1(5)判断N是否小于10,若成立则转到第(3)步执行,否则转到第(6)步。(6)打印输出max1)输入A、B、C。2)A与B中大的一个放入MAX中。3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。例4.2输入10个数,打印输出其中最大的数。1)输入A34.1.2算法的特性
有穷性一个算法必须经过有限步骤之后就能解决某个问题。事实上,一般的有限性限制在实际中是不够的,因为尽管解决某个特定问题的执行步骤量是有限的,但可能对实际计算来说仍太大。一个有用的算法不仅要求步骤有限,同时也要求步骤量合理。
确定性
一个算法的每一步必须是无歧义的和精确定义的。在各种情况下动作的执行必须严密地确定。
3有0个或多个输入且有一个或多个输出输入可定义为算法执行前初始化时给定的一些量,输出指与输入有某种特定关系的,在算法执行完成时产生的一些量。
4通用性一个算法最好是适用于某类问题而不只是适用于某一个问题。这种通用性,尽管不是必要的,但肯定是一有用算法要求的特性
4.1.2算法的特性有穷性44.1.3算法的表示一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。例如:例4.1可用如下的伪代码表示Begin(算法开始)
输入A,B,CIFA>B则A→Max
否则B→MaxIFC>Max则C→MaxPrintMaxEnd(算法结束)4.1.3算法的表示5二、用传统流程图表示算法处理框起止框I/O框判断框流程线连接点1、传统流程图中的基本符号二、用传统流程图表示算法处理框起止框I/O框判断框流程线连62、三种基本结构的传统表示(1)顺序结构条件语句1语句2YN语句1语句2(2)选择结构2、三种基本结构的传统表示条件语句1语句2YN语句1语句2(7条件(a)条件语句组(3)循环结构a)当型循环b)直到循环YNYN(b)语句组条件(a)条件语句组(3)循环结构a)当型循环b)直8例4.2输入10个数,打印输出其中的最大的数的流程图N<10Max=AN=1A>MaxMax=A输入A开始再输入给AN=N+1输出Max结束YNNY例4.2输入10个数,打印输出其中的最大的数的流程图N<109PrivateSubForm_Click()Dima%,max%,i%a=Val(InputBox("A=?"))max=aFori=2To10a=Val(InputBox("A=?"))Ifa>maxThenmax=aNextiMsgBox("Max=“&Str(max))EndSub最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符合计算机语言的语法规则。下面是例4.2的计算机程序,即为用计算机语言表示算法:PrivateSubForm_Click()104.2顺序结构4.2.1赋值语句
形式:变量名=表达式对象.属性=表达式
功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值.例:sRate!=0.1Text1.Text="欢迎使用VisualB”说明:1.执行过程:先求表达式的值,然后将值赋值给左边的变量。2.右边表达式可以是变量、常量、函数调用等特殊的表达式。3.不要将“=”理解为数学上的等号:A=A+1是表示将A单元的值加1后以放回到A单元。4.2顺序结构4.2.1赋值语句11执行过程如右图4.赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的:5=X'左边是常量。Abs(X)=20'左边是函数调用,即是表达式。5.赋值符号“=”两边的数据类型一般要求应一致。
执行过程如右图4.赋值符号“=”左边一定只能是变量名或对象的12缺省值标题题提示4.2.2用户交互函数
1.InputBox函数变量名=InputBox[$](<提示信息>[,<标题>][,<缺省>][,<x坐标>][,<y坐标>])
其中:提示提示信息,标题标题区显示,缺省输入区缺省值有$返回字符类型,否则为数值类型.例如,要在屏幕上显示如下的对话框:缺省值标题题提示4.2.2用户交互函数13例如:有下列语句如下:
DimstrNameAsString*40,strS1AsString*40strS1=“请输入你的姓名”+Chr(13)+Chr(10)+“然后单击确定”strName=InputBox$(strS1,“输入框”,,100,100)
当键盘输入“王晓明”后,变量strName获得键盘输入的值.缺省值标题题提示例如:有下列语句如下:缺省值标题题提示142.MsgBox函数
函数形式:变量[%]=MsgBox(提示[,按钮[+图标]+[缺省按钮]+[模式]][,标题])
图标标题提示信息命令按钮2.MsgBox函数图标标题提示信息命令按钮15说明:1“标题”和“提示”与InputBox函数中对应的参数相同;2“按钮+图标+缺省按钮+模式”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表4.1)3若程序中需要返回值,则使用函数,否则可调用过程。说明:16按钮及图标值如下:按钮及图标值如下:17例4.1编一帐号和密码检验程序。要求:帐号不超过6位数字,有错,清除原内容再输入.密码输入时在屏幕上以“*”代替;若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。分析:帐号6位,MaxLength为6,密码PassWordChar为“*”,MsgBox函数设置密码错对话框.例4.1编一帐号和密码检验程序。184.3选择结构
1.If…Then语句(单分支结构)
If<表达式>Then语句块EndIf
或
If<表达式>Then<语句>
例:已知两个数x和y,比较它们的大小,使得x大于y.
Ifx<yThent=x:x=y:y=tEndIf
或Ifx<yThent=x:x=y:y=t4.3选择结构例:已知两个数x和y,比较它们的大小,192.If…Then…Else语句(双分支结构)
If<表达式>Then<语句块1>Else<语句块2>EndIf
If<表达式>Then<语句1>Else<语句2>
例如:输出x,y两个中值较大的一个值。IFX>YThenPrintXElsePrintYEndIf也可以写成如下的单行形式:IFX>YThenPrintXElsePrintY双分支选择结构执行过程2.If…Then…Else语句(双分支结构)例如:输出x203.If…Then…ElseIf语句(多分支结构)
形式:
If<表达式1>Then <语句块1> ElseIf<表达式2>Then <语句块2> … [Else 语句块n+1] EndIf
例:输入一学生成绩,评定其等级。方法是:90~100分为“优秀”,80~89分为“良好”,70~79分为“中等”,60~69分为“及格”,60分以为“不合格”执行过程3.If…Then…ElseIf语句(多分支结构)21请问以下哪些正确,哪些错误?请问以下哪些正确,哪些错误?22IIf函数语法:IIf(expr,
truepart,
falsepart)部分描述expr必要参数。用来判断真伪的表达式。truepart必要参数。如果
expr为True,则返回这部分的值或表达式。falsepart必要参数。如果
expr为False,则返回这部分的值或表达式。例如:CheckIt=IIf(TestMe>1000,"Large","Small")相当于:IfTestMe>1000ThentestIt="Large"ElsetestIt="Small"EndIfIIf函数语法:IIf(expr,truepart,234.3.2SelectCase语句(情况语句)形式:
SelectCase变量或表达式 Case表达式列表1 语句块1 Case表达式列表2 语句块2 … [CaseElse 语句块n+1] EndSelect<表达式列表>:与<变量或表达式>同类型的下面四种形式之一:表达式A+5
一组枚举表达式(用逗号分隔)
2,4,6,8
表达式1To表达式2
60to100 Is关系运算符表达式
Is<60数值型或字符串表达式4.3.2SelectCase语句(情况语句)数值型或24例输入百分制成绩mark,显示对应的五级制成绩哪些能实现,哪些不能实现?例输入百分制成绩mark,显示对应的五级制成绩哪些能实现254.3.3选择结构的嵌套在IF语句的Then分支和Else分支中可以完整地嵌套另一IF语句或SelectCase语句,同样SelectCase语句每一个Case分支中都可嵌套另一IF语句或另一SelectCase语句。下面是两种正确的嵌套形式:(1)IF<条件1>Then…..
if<条件2>Then……Else…..EndIf….Else….
IF<条件3>Then…..Else…..EndIf…..EndIF(2)IF<条件1>Then…..SelectCase…Case……
IF<条件1>Then……Else…..EndIf……Case….…..EndSelect….EndIF4.3.3选择结构的嵌套26注意:只要在一个分支内嵌套,不出现交叉,满足结构规则,其嵌套的形式将有很多种,嵌套层次也可以任意多。对于多层IF嵌套结构中,要特别注意IF与Else的配对关系,一个Else必须与IF配结,配对的原则是:在写含有多层嵌套的程序时,V会自动缩进对齐方式,这样容易阅读和维护。注意:274.3.4常见错误1.在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。2.多边选择ElseIf关键字的书写和条件表达式的表示ElseIf不要写成ElseIf;多个条件表达式次序问题3.SelectCase语句的使用SelectCase后不能出现多个变量;Case子句后不用条件变量进行逻辑运算4.3.4常见错误284.4循环结构1.For循环语句(一般用于循环次数已知)形式
For循环变量=初值to终值[Step步长] 语句块 [ExitFor] 语句块Next循环变量循环体>0初值<终值=1时,可省略<0初值>终值=0死循环步长4.4循环结构循环体>0初值<终值=1时,可省29循环次数例:ForI=2To13Step3Label1.Text=Label1.Text&Str(I)&Chr(13)&Chr(10)NextILabel1.Text=Label1.Text&“I=”&Str(I)循环执行次数输出I的值分别为:25811出了循环输出为:I=14循环次数例:ForI=2To13Step30例4.5编程计算:S=1+2+3+…+100DimS%,I%S=0'累加前变量S为0ForI=1to100S=S+INextIMsgBox("S=“&S)当N<=100N=N+1打印SS=0,N=1S=S+N例4-5的算法流程图DimS%,I%当N<=100N=N+1打印SS=0,N31形式1:(当型循环)
DoWhile<条件>语句块[ExitDo]语句块Loop
Do语句块[ExitDo]语句块LoopWhile<条件>
4.4.2Do…Loop循环语句形式1:(当型循环)4.4.2Do…Loop循32三种基本结构程序设计课件33形式2:(直到循环)DoUntil<条件> 语句块 [ExitDo] 语句块 Loop
Do 语句块 [ExitDo] 语句块 LoopUntil<条件>形式2:(直到循环)34条件语句块语句块TFExitDo条件语句块语句块TFExitDoDoUntil…Loop执行过程Do…LoopUntil执行过程条件语句块语句块TFExitDo条件语句块语句块T35说明:(1)当使用While<条件>构成循环时,当条件为“真”则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until<条件>构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句ExitDo的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。说明:(3)在循环体内一般应有一个专门用来改变条件表达式中36例4.7求两个整数的最大公约数、最小公倍数
Dimn%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIfm<nThent=m:m=n:n=t
r=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopPrint"最大公约数=",nPrint"最小公倍数=",nm/n分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)
(1)对于已知两数m,n,使得m>n;
(2)m除以n得余数r;
(3)若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4)m←n,n←r,再重复执行(2)。
例4.7求两个整数的最大公约数、最小公倍数Dimn37
4.4.4循环的嵌套——多重循环结构
如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:4.4.4循环的嵌套——多重循环结构38(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop(1)ForI=….(2)ForI=….(3)Do39对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.
正确
错误
Forii=1To10Forjj=1To20… Nextii NextjjForii=1To10Forii=1To20… Nextii NextiiForii=1To10Forjj=1To20… NextjjNextiiForii=1To10…NextiiForii=1To10…Nextii对于循环的嵌套,要注意以下事项:For404.4.5几种循环语句比较4.4.5几种循环语句比较414.4.6循环结构与选择结构的嵌套在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。4.4.6循环结构与选择结构的嵌套在循环42(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……EndIF0(4)ForI=…………
SelectCase…Case…………Case…………EndSelect……NextI×××(1)ForI=……(6)IF…Then(5)S434.5其它辅助控制语句
4.5.1Goto语句形式:GoTo{标号|行号}作用是无条件地转移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列。
例
求100以内的素数判别某数m是否为素数最简单的方法是:对于m从i=2,3,…,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。Form=2To100Fori=2Tom-1If(mModi)=0ThenGoToNotNextMNextiPrintmNotNextM:Nextm4.5其它辅助控制语句444.5.2Exit语句Exit语句用于退出Do...Loop、For...Next、Function或Sub代码块。对应的使用格式为:ExitDo、ExitFor、ExitFunction、ExitSub。分别表示退出DO循环、For循环、函数过程、子过程。例如:下面的例子是使用Exit语句退出For...Next循环、Do...Loop循环及子过程。4.5.2Exit语句Exit语句用于退出Do.45PrivateSubForm_Click()DimI%,Num%Do'建立无穷循环。ForI=1To100'循环100次。Num=Int(Rnd*100)'生成一个0~99的随机数。SelectCaseNumCase10:ExitFor'退出For...Next循环。Case50:ExitDo'退出Do...Loop循环。Case64:ExitSub'退出子过程。EndSelectNextILoopEndSubPrivateSubForm_Click()464.5.3End语句形式:End
功能:结束一个程序的运行。在VisualBasic中还有多种形式的End语句,用于结束一个程序块或过程。其形式有:EndIfEndSelectEndWithEndSubEndFunction等它们与对应的语句配对使用。
4.5.3End语句474.5.4暂停语句
Stop语句用来暂停程序的执行,相当于在事件代码中设置断点。语法格式为:Stop说明:1.Stop语句的主要作用是把解释程序置为中断(Break)模式,以便对程序进行检查和调试。可以在程序的任何地方放置Stop语句,当执行Stop语句时,系统将自动打开立即窗口。2.与End语句不同。4.5.4暂停语句484.5.5With...EndWith语句形式:With对象名语句块EndWith说明:With语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在With控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。4.5.5With...EndWith语句494.6常用算法1.累加、连乘
例:1~100的5或7的倍数的和
Sum=0Fori=1To100IfiMod5=0OriMod7=0Then
Sum=Sum+iEndIfNextiPrintSum例:3~10的乘积
t=1Fori=3To10
t=t*iNextiPrintt思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?4.6常用算法1.累加、连乘例:1~100的5或7的倍数50例4.14求自然对数e的近似值,要求其误差小于0.00001,近似公式为:
该例题涉及两个问题:
(1)用循环结构求级数和的问题。本例根据某项值的精度来控制循环的结束与否。(2)累加:e=e+t循环体外对累加和的变量清零e=0
连乘:n=n*i循环体外对连乘积变量置1n=1
PrivateSubForm_Click()Dimi%,n&,t!,e!e=0:n=1‘e存放累加和、n存放阶乘i=0:t=1‘i计数器、t第i项的值DoWhilet>0.00001e=e+t:i=i+1‘累加、连乘n=n*i:t=1/nLoopMsgBox("计算了“&Chr(i)&"项的和是"&Chr(e))EndSub例4.14求自然对数e的近似值,要求其误差小于0.00001512.最小、最大值在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。例随机产生10个100~200之间的整数,求最大值。
PrivateSubButton1_Click()
DimiAsIntegerDimx,MaxAsIntegerMax=100Fori=1To10x=Int(Rnd()*101+100)Label1.Text=Label1.Text&Str(x)&""Ifx>MaxThenMax=xNextiLabel1.Text=Label1.Text&Chr(13)&Chr(10)'换行
Label1.Text=Label1.Text&"最大值="&Str(Max)EndSub2.最小、最大值PrivateSubButton1_Cl524.7常见错误1.不循环或死循环的问题
主要是循环条件、循环初值、循环终值、循环步长的设置有问题。2.循环结构中缺少配对的结束语句
For少配对的Next3.循环嵌套时,内外循环交叉4.累加、连乘时,存放累加、连乘结果的变量赋初值问题(1)一重循环在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。(2)多重循环这要视具体问题分别对待。4.7常见错误53第四章三种基本结构程序设计本章内容及要求:1.了解算法概念及算法的表示,掌握用流程图表示算法2.熟练掌握赋值语句、End语句和注释语句等语句及输入/输出消息框函数的使用;3.熟练掌握行if语句、块if结构、SelectCase情况选择结构的使用,掌握选择的嵌套结构;4.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。重点:选择结构及循环结构的实现及其应用难点:选择的嵌套及多重循环结构第四章三种基本结构程序设计本章内容及要求:重点:选择结544.1算法及算法的表示
4.1.1算法概述什么是算法:广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。狭义地讲:算法是解决一个问题采取的方法和步骤的描述。下面通过两个简单的例子加以说明:例4.1输入三个数,然后输出其中最大的数。将三个数依次输入到变量A、B、C中,设变量MAX存放最大数。其算法如下:
4.1算法及算法的表示4.1.1算法概述例4.155例4.2输入10个数,打印输出其中最大的数。算法设计如下:(1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为1,即N=1(2)将A存入表示最大值的变量Max中,即Max=A(3)再输入一个值给A,如果A>Max则Max=A,否则Max不变(4)让记录数据个数的变量增加1,即N=N+1(5)判断N是否小于10,若成立则转到第(3)步执行,否则转到第(6)步。(6)打印输出max1)输入A、B、C。2)A与B中大的一个放入MAX中。3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。例4.2输入10个数,打印输出其中最大的数。1)输入A564.1.2算法的特性
有穷性一个算法必须经过有限步骤之后就能解决某个问题。事实上,一般的有限性限制在实际中是不够的,因为尽管解决某个特定问题的执行步骤量是有限的,但可能对实际计算来说仍太大。一个有用的算法不仅要求步骤有限,同时也要求步骤量合理。
确定性
一个算法的每一步必须是无歧义的和精确定义的。在各种情况下动作的执行必须严密地确定。
3有0个或多个输入且有一个或多个输出输入可定义为算法执行前初始化时给定的一些量,输出指与输入有某种特定关系的,在算法执行完成时产生的一些量。
4通用性一个算法最好是适用于某类问题而不只是适用于某一个问题。这种通用性,尽管不是必要的,但肯定是一有用算法要求的特性
4.1.2算法的特性有穷性574.1.3算法的表示一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。例如:例4.1可用如下的伪代码表示Begin(算法开始)
输入A,B,CIFA>B则A→Max
否则B→MaxIFC>Max则C→MaxPrintMaxEnd(算法结束)4.1.3算法的表示58二、用传统流程图表示算法处理框起止框I/O框判断框流程线连接点1、传统流程图中的基本符号二、用传统流程图表示算法处理框起止框I/O框判断框流程线连592、三种基本结构的传统表示(1)顺序结构条件语句1语句2YN语句1语句2(2)选择结构2、三种基本结构的传统表示条件语句1语句2YN语句1语句2(60条件(a)条件语句组(3)循环结构a)当型循环b)直到循环YNYN(b)语句组条件(a)条件语句组(3)循环结构a)当型循环b)直61例4.2输入10个数,打印输出其中的最大的数的流程图N<10Max=AN=1A>MaxMax=A输入A开始再输入给AN=N+1输出Max结束YNNY例4.2输入10个数,打印输出其中的最大的数的流程图N<1062PrivateSubForm_Click()Dima%,max%,i%a=Val(InputBox("A=?"))max=aFori=2To10a=Val(InputBox("A=?"))Ifa>maxThenmax=aNextiMsgBox("Max=“&Str(max))EndSub最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符合计算机语言的语法规则。下面是例4.2的计算机程序,即为用计算机语言表示算法:PrivateSubForm_Click()634.2顺序结构4.2.1赋值语句
形式:变量名=表达式对象.属性=表达式
功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值.例:sRate!=0.1Text1.Text="欢迎使用VisualB”说明:1.执行过程:先求表达式的值,然后将值赋值给左边的变量。2.右边表达式可以是变量、常量、函数调用等特殊的表达式。3.不要将“=”理解为数学上的等号:A=A+1是表示将A单元的值加1后以放回到A单元。4.2顺序结构4.2.1赋值语句64执行过程如右图4.赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的:5=X'左边是常量。Abs(X)=20'左边是函数调用,即是表达式。5.赋值符号“=”两边的数据类型一般要求应一致。
执行过程如右图4.赋值符号“=”左边一定只能是变量名或对象的65缺省值标题题提示4.2.2用户交互函数
1.InputBox函数变量名=InputBox[$](<提示信息>[,<标题>][,<缺省>][,<x坐标>][,<y坐标>])
其中:提示提示信息,标题标题区显示,缺省输入区缺省值有$返回字符类型,否则为数值类型.例如,要在屏幕上显示如下的对话框:缺省值标题题提示4.2.2用户交互函数66例如:有下列语句如下:
DimstrNameAsString*40,strS1AsString*40strS1=“请输入你的姓名”+Chr(13)+Chr(10)+“然后单击确定”strName=InputBox$(strS1,“输入框”,,100,100)
当键盘输入“王晓明”后,变量strName获得键盘输入的值.缺省值标题题提示例如:有下列语句如下:缺省值标题题提示672.MsgBox函数
函数形式:变量[%]=MsgBox(提示[,按钮[+图标]+[缺省按钮]+[模式]][,标题])
图标标题提示信息命令按钮2.MsgBox函数图标标题提示信息命令按钮68说明:1“标题”和“提示”与InputBox函数中对应的参数相同;2“按钮+图标+缺省按钮+模式”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表4.1)3若程序中需要返回值,则使用函数,否则可调用过程。说明:69按钮及图标值如下:按钮及图标值如下:70例4.1编一帐号和密码检验程序。要求:帐号不超过6位数字,有错,清除原内容再输入.密码输入时在屏幕上以“*”代替;若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。分析:帐号6位,MaxLength为6,密码PassWordChar为“*”,MsgBox函数设置密码错对话框.例4.1编一帐号和密码检验程序。714.3选择结构
1.If…Then语句(单分支结构)
If<表达式>Then语句块EndIf
或
If<表达式>Then<语句>
例:已知两个数x和y,比较它们的大小,使得x大于y.
Ifx<yThent=x:x=y:y=tEndIf
或Ifx<yThent=x:x=y:y=t4.3选择结构例:已知两个数x和y,比较它们的大小,722.If…Then…Else语句(双分支结构)
If<表达式>Then<语句块1>Else<语句块2>EndIf
If<表达式>Then<语句1>Else<语句2>
例如:输出x,y两个中值较大的一个值。IFX>YThenPrintXElsePrintYEndIf也可以写成如下的单行形式:IFX>YThenPrintXElsePrintY双分支选择结构执行过程2.If…Then…Else语句(双分支结构)例如:输出x733.If…Then…ElseIf语句(多分支结构)
形式:
If<表达式1>Then <语句块1> ElseIf<表达式2>Then <语句块2> … [Else 语句块n+1] EndIf
例:输入一学生成绩,评定其等级。方法是:90~100分为“优秀”,80~89分为“良好”,70~79分为“中等”,60~69分为“及格”,60分以为“不合格”执行过程3.If…Then…ElseIf语句(多分支结构)74请问以下哪些正确,哪些错误?请问以下哪些正确,哪些错误?75IIf函数语法:IIf(expr,
truepart,
falsepart)部分描述expr必要参数。用来判断真伪的表达式。truepart必要参数。如果
expr为True,则返回这部分的值或表达式。falsepart必要参数。如果
expr为False,则返回这部分的值或表达式。例如:CheckIt=IIf(TestMe>1000,"Large","Small")相当于:IfTestMe>1000ThentestIt="Large"ElsetestIt="Small"EndIfIIf函数语法:IIf(expr,truepart,764.3.2SelectCase语句(情况语句)形式:
SelectCase变量或表达式 Case表达式列表1 语句块1 Case表达式列表2 语句块2 … [CaseElse 语句块n+1] EndSelect<表达式列表>:与<变量或表达式>同类型的下面四种形式之一:表达式A+5
一组枚举表达式(用逗号分隔)
2,4,6,8
表达式1To表达式2
60to100 Is关系运算符表达式
Is<60数值型或字符串表达式4.3.2SelectCase语句(情况语句)数值型或77例输入百分制成绩mark,显示对应的五级制成绩哪些能实现,哪些不能实现?例输入百分制成绩mark,显示对应的五级制成绩哪些能实现784.3.3选择结构的嵌套在IF语句的Then分支和Else分支中可以完整地嵌套另一IF语句或SelectCase语句,同样SelectCase语句每一个Case分支中都可嵌套另一IF语句或另一SelectCase语句。下面是两种正确的嵌套形式:(1)IF<条件1>Then…..
if<条件2>Then……Else…..EndIf….Else….
IF<条件3>Then…..Else…..EndIf…..EndIF(2)IF<条件1>Then…..SelectCase…Case……
IF<条件1>Then……Else…..EndIf……Case….…..EndSelect….EndIF4.3.3选择结构的嵌套79注意:只要在一个分支内嵌套,不出现交叉,满足结构规则,其嵌套的形式将有很多种,嵌套层次也可以任意多。对于多层IF嵌套结构中,要特别注意IF与Else的配对关系,一个Else必须与IF配结,配对的原则是:在写含有多层嵌套的程序时,V会自动缩进对齐方式,这样容易阅读和维护。注意:804.3.4常见错误1.在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。2.多边选择ElseIf关键字的书写和条件表达式的表示ElseIf不要写成ElseIf;多个条件表达式次序问题3.SelectCase语句的使用SelectCase后不能出现多个变量;Case子句后不用条件变量进行逻辑运算4.3.4常见错误814.4循环结构1.For循环语句(一般用于循环次数已知)形式
For循环变量=初值to终值[Step步长] 语句块 [ExitFor] 语句块Next循环变量循环体>0初值<终值=1时,可省略<0初值>终值=0死循环步长4.4循环结构循环体>0初值<终值=1时,可省82循环次数例:ForI=2To13Step3Label1.Text=Label1.Text&Str(I)&Chr(13)&Chr(10)NextILabel1.Text=Label1.Text&“I=”&Str(I)循环执行次数输出I的值分别为:25811出了循环输出为:I=14循环次数例:ForI=2To13Step83例4.5编程计算:S=1+2+3+…+100DimS%,I%S=0'累加前变量S为0ForI=1to100S=S+INextIMsgBox("S=“&S)当N<=100N=N+1打印SS=0,N=1S=S+N例4-5的算法流程图DimS%,I%当N<=100N=N+1打印SS=0,N84形式1:(当型循环)
DoWhile<条件>语句块[ExitDo]语句块Loop
Do语句块[ExitDo]语句块LoopWhile<条件>
4.4.2Do…Loop循环语句形式1:(当型循环)4.4.2Do…Loop循85三种基本结构程序设计课件86形式2:(直到循环)DoUntil<条件> 语句块 [ExitDo] 语句块 Loop
Do 语句块 [ExitDo] 语句块 LoopUntil<条件>形式2:(直到循环)87条件语句块语句块TFExitDo条件语句块语句块TFExitDoDoUntil…Loop执行过程Do…LoopUntil执行过程条件语句块语句块TFExitDo条件语句块语句块T88说明:(1)当使用While<条件>构成循环时,当条件为“真”则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until<条件>构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句ExitDo的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。说明:(3)在循环体内一般应有一个专门用来改变条件表达式中89例4.7求两个整数的最大公约数、最小公倍数
Dimn%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIfm<nThent=m:m=n:n=t
r=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopPrint"最大公约数=",nPrint"最小公倍数=",nm/n分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)
(1)对于已知两数m,n,使得m>n;
(2)m除以n得余数r;
(3)若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4)m←n,n←r,再重复执行(2)。
例4.7求两个整数的最大公约数、最小公倍数Dimn90
4.4.4循环的嵌套——多重循环结构
如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:4.4.4循环的嵌套——多重循环结构91(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop(1)ForI=….(2)ForI=….(3)Do92对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.
正确
错误
Forii=1To10Forjj=1To20… Nextii NextjjForii=1To10Forii=1To20… Nextii NextiiForii=1To10Forjj=1To20… NextjjNextiiForii=1To10…NextiiForii=1To10…Nextii对于循环的嵌套,要注意以下事项:For934.4.5几种循环语句比较4.4.5几种循环语句比较944.4.6循环结构与选择结构的嵌套在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。4.4.6循环结构与选择结构的嵌套在循环95(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……EndIF0(4)ForI=…………
SelectCase…Case…………Case…………EndSelect……NextI×××(1)ForI=……(6)IF…Then(5)S964.5其它辅助控制语句
4.5.1Goto语句形式:GoTo{标号|行号}作用是无条件地转移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列。
例
求100以内的素数判别某数m是否为素数最简单的方法是:对于m从i=2,3,…,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。Form=2To100Fori=2Tom-1If(mModi)=0ThenGoToNotNextMNextiPrintmNotNextM:Nextm4.5其它辅助控制语句974.5.2Exit语句Exit语句用于退出Do...Loop、For...Next、Function
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《会计从业总账管理》课件
- 《广场规划设计》课件
- 寒假自习课 25春初中道德与法治八年级下册教学课件 第三单元 第六课 第4课时 国家监察机关
- 短信营销合同三篇
- 农学启示录模板
- 理发店前台接待总结
- 儿科护士的工作心得
- 探索化学反应奥秘
- 收银员的劳动合同三篇
- 营销策略总结
- (1-6年级)小学数学常用单位换算公式
- 中建安全标准化图册图集(上下全集)(全电子版)
- 高一物理必修一思维导图
- 锚索张拉和锁定记录表
- 2016年校本课程--------合唱教案1
- 【原创】《圆柱与圆锥》复习课教教学设计
- 《中国药典》规定中药饮片用量
- 国网合肥供电公司城市新建住宅小区电力建设实施细则
- 初中物理元件实物图及一些常用图形
- 中小学生备战期末迎接期末考试动员班会PPT
- 房测之友BMF用户说明书
评论
0/150
提交评论