版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章程序设计的3种基本结构本章内容及要求:
1.了解算法概念及表示,掌握用N—S流程图表示算法;
2.熟练掌握赋值语句、输入/输出消息框函数的使用;
3.熟练掌握行if语句、块if结构、SelectCase情况选择结构有使用,掌握选择的嵌套结构;
4.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。重点:选择结构及循环结构的实现及其应用难点:选择的嵌套及多重循环结构第4章程序设计的3种基本结构本章内容及要求:重点:选择本章主要内容4.1算法及算法的表示
4.2顺序结构
4.3选择结构
4.4循环结构
4.5其他控制语句
4.6应用程序举例
本章主要内容4.1算法及算法的表示
4.2顺序结构4.1算法及算法的表示4.1.1算法概述什么是算法:
广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。
狭义地讲:算法是解决一个问题采取的方法和步骤的描述。4.1算法及算法的表示4.1.1算法概述1)输入A、B、C。2)A与B中大的一个放入MAX中。3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。例4.1输入三个数,然后输出其中最大的数。
将三个数依次输入到变量A、B、C中,设变量MAX存放最大数。其算法如下:
4.1算法及算法的表示1)输入A、B、C。例4.1输入三个数,然后输出其中例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)打印输出max4.1算法及算法的表示例4.2输入10个数,打印输出其中最大的数。算法如下:44.1.2算法的特性有穷性确定性有0个或多个输入有一个或多个输出有效性4.1算法及算法的表示4.1.2算法的特性有穷性4.1算法及算法的表示4.1.3算法的表示一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。4.1算法及算法的表示4.1.3算法的表示4.1算法及算法的表示例如:例4.1可用如下的伪代码表示Begin(算法开始)
输入
A,B,CIFA>B则
A→Max
否则
B→MaxIFC>Max则
C→MaxPrintMaxEnd(算法结束)4.1算法及算法的表示例如:例4.1可用如下的伪代码表示4.1算法及算法的表示二、用传统流程图表示算法处理框起止框I/O框判断框流程线连接点1、传统流程图中的基本符号4.1算法及算法的表示二、用传统流程图表示算法处理框起止框I/O框判断框流程线连2、三种基本结构的表示(1)顺序结构条件语句1语句2YN语句1语句2(2)选择结构4.1算法及算法的表示2、三种基本结构的表示条件语句1语句2YN语句1语句2(2)(3)循环结构a)当型循环b)直到循环条件语句组YN(b)条件(a)YN语句组4.1算法及算法的表示(3)循环结构a)当型循环b)直到循环条件语句组YN(三种基本结构的特点:(1)只有一个入口(2)只有一个出口(3)不存在死语句(4)不存在死循环4.1算法及算法的表示三种基本结构的特点:(1)只有一个入口4.1算法及算法的
从10个数中选出最大的数的算法流程图N<10Max=AN=1A>MaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY4.1算法及算法的表示从10个数中选出最大的数的算法流程图N<10M4.1.4用N—S流程图表示算法将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框。三种基本结构的N—S图表示:语句A语句B语句A语句B条件YN1、顺序结构2、选择结构4.1算法及算法的表示4.1.4用N—S流程图表示算法将全部算法写在一个矩3、循环结构a)当型循环b)直到循环例:画出从10个数中选出最大的数的N—S流程图。语句组当条件成立(a)语句组直到当条件成立(b)4.1算法及算法的表示3、循环结构a)当型循环b)直到循环例:画出从10个数传统流程图N<10Max=AN=1A>MaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY输入A当N<10Max=AN=N+1打印MaxMax=A,N=1N—S流程图A>MaxYN输入A4.1算法及算法的表示传统流程图N<10Max=AA>MaxMax=A输入A开A=Val(InputBox("A=?"))B=Val(InputBox("B=?"))C=Val(InputBox("C=?"))IfA>BthenMax=AElseMax=BEndIfIfC>MaxthenMax=CPrint"Max=";Max下面是例4.1的计算机程序,即为用计算机语言表示算法:4.1算法及算法的表示A=Val(InputBox("A=?"))下面是例4.1的4.1.5结构化程序设计方法(补充)(一)用计算机解决问题的过程提出、分析问题确定算法模型设计算法编写程序调试程序分析输出结果正确合理结束不正确4.1算法及算法的表示4.1.5结构化程序设计方法(补充)(一)用计算机解决问(二)结构化程序设计思想自顶向下、逐步细化、模块化自顶向下:先从全局、整体设计逐步细化:将一个问题分解成几个较小的问题解决模块化:将一个大任务分解成若干个较小的部分,每个部分承担一定功能,称为“功能模块”例:给100个整数,打印输出其中的素数。4.1算法及算法的表示(二)结构化程序设计思想自顶向下、逐步细化、模块化自顶向下:S1N—S流程图输入100个数存入X1,x2,……x100打印x1…..x100中不等于0的数让x1,x2,……x100中的非素变为0S3S2输入xi当i<=100i=i+1i=1S1细化xi≠0当i<=100i=i+1i=1YN打印xiS3细化4.1算法及算法的表示S1N—S流程图输入100个数存入X1,x2,……x100打S1N—S流程图输入100个数存入X1,x2,……x100打印x1…..x100中不等于0的数让x1,……x100中的非素变为0S3S2S2细化判断xi是否是素数,若不是则将xi=0当i<=100i=i+1i=1S21r=0r<=将x1除j的余j=j+1j=2YNxi=0直到j>xi/2S21细化4.1算法及算法的表示S1N—S流程图输入100个数存入X1,x2,……x100打输入100个数存入X1,x2,……x100打印x1…..x100中不等于0的数让x1,……x100中的非素变为0细化后的流程图输入xi当i<=100i=i+1i=1当i<=100i=1r=0r=xi%jj=j+1j=2YNxi=0直到j>xi/2i=i+1xi≠0当i<=100i=1YN打印xii=i+1输入100个数存入X1,x2,……x100打印x1…..x14.2顺序结构4.2.1赋值语句
形式:变量名=表达式对象.属性=表达式
功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值。
例:sRate=0.1Text1.Text="欢迎使用VisualBasic6.0”说明:
1、执行过程:先求表达式的值,然后将值赋值给左边的变量。
2、右边的表达式可以是变量、常量、函数调用等特殊的表达式。
3、不要将“=”理解为数学上的等号:
A=A+1是表示将A单元的值加1后以放回到A单元。4.2顺序结构4.2.1赋值语句执行过程如右图4、赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的: 5=X'左边是常量。 Abs(X)=20'左边是函数调用,即是表达式。5、赋值符号“=”两边的数据类型一般要求应一致。4.2顺序结构执行过程如右图4、赋值符号“=”左边一定只能是变量名或对象的4.2.2数据的输出——Print方法Print方法的一般格式:
[对象名.]Print[<表达式表>][{,|;}]说明:
[对象名.]可以是窗体名、图片框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。用Print方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。4.2顺序结构4.2.2数据的输出——Print方法Print方法的4.2.3用户交互函数和过程
1.InputBox函数变量名=InputBox[$](<提示信息>[,<标题>][,<缺省>][,<x坐标>][,<y坐标>])
其中:提示提示信息,标题标题区显示,缺省输入区缺省值。例如,要在屏幕上显示如下的对话框:4.2顺序结构4.2.3用户交互函数和过程4.2顺序结构
例如:有下列语句如下:
Dimx%x=Val(InputBox(“请输入一个数”,“输入框”,100))
语句执行后打开如下对话框。缺省值标题提示4.2顺序结构例如:有下列语句如下:缺省值标题提示4.2顺序结构2.MsgBox函数和MsgBox过程函数形式:变量[%]=MsgBox(提示[,按钮[+图标]+[缺省按钮]+[模式]][,标题])
过程形式:MsgBox提示[,按钮[+图标]+[缺省按钮]+[模式]][,标题]图标标题提示信息命令按钮4.2顺序结构2.MsgBox函数和MsgBox过程图标标题提示信息命令说明:1、“标题”和“提示”与InputBox函数中对应的参数相同;2、“按钮+图标+缺省按钮+模式”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表4.1)4.2顺序结构说明:4.2顺序结构按钮及图标值如下:4.2顺序结构按钮及图标值如下:4.2顺序结构根据用户所选按钮,函数返回1—7的整数值,其含义表4.24.2顺序结构
3、若程序中需要返回值,则使用函数,否则可调用过程。根据用户所选按钮,函数返回1—7的整数值,其含义表4.24.2顺序结构
用户可根据MsgBox函数的不同返回值,实现程序的控制流程,就必需通过编写程序代码才能实现。例如:
i=MsgBox("发生错误,是否继续?",vbYesNo+vbQuestion,"提示信息")
Ifi=7ThenEnd'或写成Ifi=vbNoThenEnd……
当用户单击“否”,程序就结束,单击“是”或直接按回车键,程序则继续向下执行。4.2顺序结构用户可根据MsgBox函数的4.2.4注释语句其语法格式为:Rem<注释内容>或
'<注释内容>说明:1.<注释内容>指要包括的任何注释文本。在Rem关键字和注释内容之间要加一个空格。可以用一个英文单引号“'”来代替Rem关键字。2.如果在其他语句行后面使用Rem关键字,必需用冒号(:)与语句隔开。若用英文单引号“'”,则在其他语句行后面不必加冒号(:)。例如:ConstPI=3.1415925'符号常量PIS=PI*r*r :Rem计算圆的面积4.2顺序结构4.2.4注释语句其语法格式为:4.2顺序结构4.2.5应用举例例4.3
输入时间(小时,分和秒),然后使用输出消息框输出总计多少秒。使用文本框输入数据,使用消息框输出计算结果,程序运行界面如图所示。4.2顺序结构4.2.5应用举例例4.3输入时间(小时,分和秒),然4.2.5应用举例例4.4
编一程序,求一内半径R1=10cm,外半径R2=20cm的球环的体积。要求按四舍五入保留到小数点后4位。解:球的体积公式:4.2顺序结构本题所求的球环面的体积公式:4.2.5应用举例例4.4编一程序,求一内半径R1=1
选择结构是根据条件选择执行不同的分支语句,以完成问题的要求。在VisualBasic程序设计中,使用IF语句和SelectCase语句来处理选择结构。
其特点是:根据所给定的条件成立(True)或不成立(False),从各实际可能的不同分支中执行某一分支的相应操作(程序块),并且任何情况下总有“无论条件多寡,必择其一;虽然条件众多,仅选其一”的特性。
4.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.1If条件语句1.If…Then语句(单分支结构)例:已知两个数x和y,2.If…Then…Else语句(双分支结构)
If<表达式>Then<语句块1>Else<语句块2>EndIf
If<表达式>Then<语句1>Else<语句2>
双分支选择结构执行过程4.3选择结构2.If…Then…Else语句(双分支结构)双分支选择例如:输出x,y两个中值较大的一个值。
IFX>YThenPrintX
ElsePrintYEndIf也可以写成如下的单行形式:
IFX>YThenPrintXElsePrintY4.3选择结构例如:输出x,y两个中值较大的一个值。4.3选择结构3.条件函数Iif()IIf函数可用来执行简单的条件判断操作,它相当于IF…Then….Else结构。IIF函数的使用格式:IIF(<表达式>,<表达式1>,<表达式2>)说明:(1)<表达式>与IF语句中的表达式相同,通常是关系表达式、逻辑表达式,也可为算术表达式。如果是算术表达式,其值按非0为True,0为False进行判断。(2)当<表达式>为真时,函数返回<表达式1>的值,当<表达式>为假时,函数返回<表达式2>的值。(3)<表达式1>、<表达式2>可以是任何表达式。例如:Max=IIF(X>Y,X,Y)它与下面语句等价:
IFX>YThenMax=xElseMax=Y
4.3选择结构3.条件函数Iif()4.3选择结构4.If…Then…ElseIf语句(多分支结构)
形式:
If<表达式1>Then <语句块1> ElseIf<表达式2>Then <语句块2> … [Else
语句块n+1] EndIf执行过程4.3选择结构4.If…Then…ElseIf语句(多分支结构)执行过程例4.6:输入一学生成绩,评定其等级。方法是:90~100分为“优秀”,80~89分为“良好”,70~79分为“中等”,60~69分为“及格”,60分以为“不合格”4.3选择结构使用IF语句实现的程序段如下:Ifx>=90thenPrint"优秀"ElseIfx>=80ThenPrint"良好"ElseIfx>=70ThenPrint"中等"ElseIfx>=60ThenPrint"及格"ElsePrint"不及格"EndIf思考与讨论例4.6:输入一学生成绩,评定其等级。方法是:90~100分4.3.2SelectCase语句(情况语句)形式:SelectCase变量或表达式
Case表达式列表1
语句块1 Case表达式列表2
语句块2 … [CaseElse
语句块n+1]EndSelect数值型或字符串表达式4.3选择结构4.3.2SelectCase语句(情况语句)数值型或说明:
<表达式列表>:与<变量或表达式>同类型的下面四种形式之一:表达式A+5
一组枚举表达式(用逗号分隔)
2,4,6,8
表达式1To表达式2
60to100Is关系运算符表达式
Is<604.3选择结构说明:4.3选择结构例如:将例4.6使用selectcase…..语句来实现的程序段如下:SelectCasexCase90to100Print"优秀"Case80to89Print"良好"Case70to79Print"中等"Case60to69Print"及格"CaseElsePrint"不及格"EndSelect4.3选择结构例如:将例4.6使用selectcase…..语句来实现2.Choose函数Choose函数使用格式: Choose(<数值表达式>,<表达式1>….<表达式n>)说明:Choose函数根据<数值表达式>的值来决定返回其后<表达式列表>中的那个表达式的值。如果<数值表达式>的值为1,则返回<表达式1>的值,如果<数值表达式>的值为2,则返回<表达式2>的值,以此类推。若<数值表达式>的值小于1或大于n,则函数返回Null(空)。
例如:根据Nop的值,得到+、-、*,/的运算符,可由理面语句来实现。 Nop=Int(Rnd*4)+1 OP=Choose(Nop,"+","-","*","/")4.3选择结构2.Choose函数4.3选择结构4.3.3选择结构的嵌套下面是两种正确的嵌套形式:(1)
IF<条件1>Then…..IF<条件2>Then……Else…..EndIf….Else….IF<条件3>Then…..Else…..EndIf…..EndIF(2)IF<条件1>Then…..SelectCase…Case……IF<条件2>Then……Else…..EndIf……Case….…..EndSelect….EndIF4.3选择结构4.3.3选择结构的嵌套4.3选择结构
注意:只能在一个分支内嵌套,不出现交叉。满足结构规则,其嵌套的形式将有很多种,嵌套层次也可以任意多。
对于多层IF嵌套结构中,要特别注意IF与Else的配对关系,一个Else必须与IF配结,配对的原则是:else总是与离它最近、且尚未配对的if配对。
在写含有多层嵌套的程序时,建议使用缩进对齐方式,这样容易阅读和维护。4.3选择结构注意:只能在一个分支内嵌套,不出现交叉。满足结构规例4.7
设计一个用户身份验证程序,运行界面如下图所示。4.3选择结构
设密码分别为1234567(普通用户)、1989643(授权用户)和1687799(特许用户),按回车键表示密码输入结束。如果输入密码正确,则用MsgBox对话框显示“你的口令正确,已通过身份验证”并显示用户类型;否则显示“密码不符,要重试一遍吗!”(有“是”和“否”两个按钮),当用户单击“是”则将焦点定位到文本框中、清除文本框中的内容并允许再输入一遍,如果单击“否”则退出程序。例4.7设计一个用户身份验证程序,运行界面如下图所示。44.4循环结构
1.For循环语句(一般用于循环次数已知)形式:
For循环变量=初值to终值[Step步长]
语句块
[ExitFor]
语句块
Next循环变量循环体>0初值<终值当=1时,可省<0初值>终值=0死循环
步长4.4循环结构4.4循环结构循环体>0初值<终值当=1时,可省循环次数例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循环执行次数:
输出I的值分别为:25811出了循环输出为:I=144.4循环结构Int((13-2)/3+1)=4循环次数例:ForI=2To13Step例4.8编程计算:S=1+2+3+…+100DimS%,I%S=0‘累加前变量S为0ForI=1to100S=S+INextIPrint"S=",S当N<=100N=N+1打印SS=0,N=1S=S+N4.4循环结构例4.8编程计算:S=1+2+3+…+100DimS%,形式1:(当型循环)
Do{While|Until}<条件>
语句块
[ExitDo]
语句块
Loop4.4.2Do…Loop循环语句4.4循环结构形式1:(当型循环)形式2:(直到循环)
Do
语句块
[ExitDo]
语句块
Loop{While|Until}<条件>4.4循环结构形式2:(直到循环)4.4循环结构条件语句块语句块TFExitDo条件语句块语句块TFExitDoDoUntil…Loop执行过程Do…LoopUntil执行过程4.4循环结构条件语句块语句块TFExitDo条件语句块语句块T说明:(1)当使用While<条件>构成循环时,当条件为“真”,则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until<条件>构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。4.4循环结构说明:4.4循环结构
(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句ExitDo的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。4.4循环结构(3)在循环体内一般应有一个专门用来改变条件表达式中DimSAsInteger,IAsIntegerS=0'累加前变量S为0I=1'给控制循环的变量赋初值DoWhileI<=100'该语句改为DoUntilI>100S=S+II=I+1LoopPrint"S=";S例4.9改写程序计算:S=1+2+3+…+100DimSAsInteger,IAsInteger4.4.3While…Wend语句使用格式如下:While<条件><循环块>Wend
说明:该语句的功能与DoWhile<条件>….Loop实现的循环完全相同。4.4循环结构4.4.3While…Wend语句4.4循环结构例4.10
求两个整数的最大公约数、最小公倍数Dimn%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIfm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopPrint"最大公约数=",nPrint"最小公倍数=",nm/n4.4循环结构例4.10求两个整数的最大公约数、最小公倍数Dimn%
4.4.4循环的嵌套——多重循环结构
如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套。
嵌套的层数可根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。前面介绍的几种循环控制结构可以相互嵌套。4.4循环结构4.4.4循环的嵌套——多重循环结构4.4循环结构(1)ForI=….…..
ForJ=….….NextJ…..NextI(2)ForI=….…..
DoWhile/Until….….Loop…..NextI(3)DoWhile….…..
ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..
DoWhile/Until….….Loop…..Loop4.4循环结构(1)ForI=….(2)ForI=….(3)Do例如:打印九九乘法表.
Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNexti4.4循环结构例如:打印九九乘法表.4.4循环结构对于循环的嵌套,要注意以下事项:
(1)内循环变量与外循环变量不能同名;
(2)外循环必须完全包含内循环,不能交叉;
(3)不能从循环体外转向循环体内,也不能从外循环转向内循环。
4.4循环结构对于循环的嵌套,要注意以下事项:4.4循环结构
Fori=1To10
Forj=1To20… Nexti
NextjFori=1To10Fori=1To20… Nexti Nexti下面是不正确的嵌套4.4循环结构Fori=1To10Forj=1To20… NextjNextiFori=1To10…NextiFori=1To10…Nexti下面是正确的嵌套Fori=1To104.4循环结构
例4.11:将一张面值为100元的人民币等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合?思考与讨论4.4循环结构例4.11:将一张面值为1004.4.5几种循环语句比较4.4循环结构4.4.5几种循环语句比较4.4循环结构4.4.6循环结构与选择结构的嵌套
在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体。
在选择结构中嵌套循环结构时,则要求整个循环结构必须完整嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。4.4循环结构4.4.6循环结构与选择结构的嵌套在循环(1)ForI=…………IF…Then……EndIF ……NextI(2)IF…Then……ForI=…………NextI……EndIF4.4循环结构(3)ForI=…………IF…Then……NextI……EndIF×(1)ForI=……(2)IF…Then4.4(4)ForI=…………SelectCase…Case…………Case…………EndSelect…… NextI(5)SelectCase……ForI=…………Case…………Case…………NextI………EndSelect×(6)IF…Then……ForI=…………EndIF……NextI×(4)ForI=……(5)SelectCase……×(4.5.1Goto语句形式:GoTo{标号|行号}
作用是无条件地转移到标号或行号指定的那行语句。
标号是一个字符序列,行号是一个数字序列。例如: Lp:…… …… gotoLp
4.5其它控制语句
4.5.1Goto语句4.5其它控制语句4.5.2Exit语句
Exit语句用于退出
Do...Loop、For...Next、Function或Sub代码块。对应的使用格式为:ExitDo、ExitFor、ExitFunction、ExitSub。分别表示退出DO循环、For循环、函数过程、子过程。4.5其它控制语句
4.5.2Exit语句Exit语句用于退出Do.PrivateSubForm_Click()DimI%,Num%DoWhileTrue'建立无穷循环。
ForI=1To100'循环
100次。
Num=Int(Rnd*100)'生成一个0~99的随机数。
SelectCaseNumCase10:ExitFor'退出
For...Next循环。
Case50:ExitDo'退出
Do...Loop循环。
Case64:ExitSub'退出子过程。
EndSelectNextILoopEndSub4.5其它控制语句
PrivateSubForm_Click()4.5其它4.5.3End语句形式:End
功能:结束一个程序的运行。在VisualBasic中还有多种形式的End语句,用于结束一个程序块或过程。其形式有:
EndIf EndSelect EndTypeEndWith EndSub EndFunction等,它们与对应的语句配对使用。4.5其它控制语句
4.5.3End语句4.5其它控制语句4.5.4暂停语句
Stop语句用来暂停程序的执行,相当于在事件代码中设置断点。语法格式为:
Stop说明:
1.Stop语句的主要作用是把解释程序置为中断(Break)模式,以便对程序进行检查和调试。可以在程序的任何地方放置Stop语句,当执行Stop语句时,系统将自动打开立即窗口。
2.与End语句不同。4.5其它控制语句
4.5.4暂停语句4.5其它控制语句4.5.5With...EndWith语句形式:
With对象名语句块
EndWith
说明:With语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。4.5其它控制语句
4.5.5With...EndWith语句4.5
例如,需要对同一对象设置几个属性。途径之一是使用多条语句。PrivateSubForm_Load()Command1.Caption="退出(E&xit)"Command1.Top=500Command1.Left=4500Command1.Enabled=TrueEndSub4.5其它控制语句
使用With...EndWith语句,程序的代码如下。PrivateSubForm_Load()WithCommand1.Caption="退出(E&xit)".Top=500.Left=4500.Enabled=TrueEndWithEndSub例如,需要对同一对象设置几个属性。途径之一是4.6应用程序举例4.6.1累计求和、求乘积、计数等问题
此类问题都要使用循环,根据问题的要求,确定循环变量的初值、终值或结束条件及用来表示计数、和、阶乘的变量的初值。
例4.12
编程序计算:当最后一项的绝对值小于0.000001时停止计算,输出其计算的结果及其计算了多少项。
编程分析:这是用来求级数和的一类题目,这类题目一般要写成s=s+t(t为通项)这种形式。本题中相加的各项正负交替,第i+1项是第i项乘以1/((2*i)*(2*i+1))。程序编写如下:
4.6应用程序举例4.6.1累计求和、求乘积、计数等问4.6应用程序举例4.6.2素数与哥德巴赫猜想例4.14判断一个给定的整数是否为素数。
算法思路:素数指除了能被1和自身外,不能被其他整数整除的自然数。判断整数N是不是素数的基本方法是:将N分别除以2,3,…,N-1,若都不能整除,则N为素数。因为N=Sqr(N)*Sqr(N),所以,当N能被大于等于Sqr(N)的整数整除时,一定存在一个小于等于Sqr(N)的整数,使N能被它整除,因此只要判断N能否被2,3,…,Sqr(N)整除即可。算法流程图如下:4.6应用程序举例4.6.2素数与哥德巴赫猜想例4.1DimN%,I%,K%N=Val(InputBox("N=?"))K=Int(Sqr(N))ForI=2ToKIfNModI=0ThenExitForNextIIfI>KThenPrintN;"是素数"ElsePrintN;"不是素数"EndIf4.6应用程序举例算法流程图程序代码:DimN%,I%,K%4.6应用程序举例算法流程图
例4.15编一程序验证哥德巴赫猜想:一个大于等于6的偶数可以表示为两个素数之和。例如:
6=3+38=3+510=3+7
算法设计:设N为大于等于6的任一偶数,将其分解为N1和N2两个数,使用N1+N2=N,分别判断N1和N2是否为素数,若都是,则为一组解。若N1不是素数,就不必再检查N2是否素数。先从N1=3开始,直到N1=N/2为止。算法流程图如图4-29所示。将程序代码写到窗体的单击事件中。实现上面算法的程序代码如下:4.6应用程序举例例4.15编一程序验证哥德巴赫猜想:一个大于PrivateSubForm_Click()DimN%,N1%,N2%,I%,K1%,K2%N=Val(InputBox("输入大于6的偶数"))
ForN1=3ToN\2Step2K1=Int(Sqr(N1))
ForI=2ToK1'判断N1是否是素数
IfN1ModI=0ThenExitForNextI
IfI>K1Then'如果N1为素数,将N分解为N1+N2N2=N-N1K2=Int(Sqr(N2))
ForI=2ToK2'判断N2是否是素数
IfN2ModI=0ThenExitForNextIIfI>K2Then'如果N2也为素数,则打印输出
PrintN&"="&N1&"+"&N2EndIf
EndIf
NextN1EndSub4.6应用程序举例PrivateSubForm_Click()4.6应用4.6.3字符串处理
例4.15
统计文本框中英文单词的个数(设单词由空格、逗号、分号、感叹号、回车符、换行符作为单词之间的分隔符)。
编程分析:用变量Last存放上一次取出的字符、Char存放当前所取出字符,变量nw累计单词数,从左边开始的第I个字符的位置用变量I存放、其初值为1。从文本(字符串)的左边开始,取出第I个字符值赋给Char,如果Char是英文字母,同时它的前一个字符Last是为单词分隔符,则表示当前的字母是新单词的开始,累计单词数。将Char值赋给Last、I自增1,重复第2、3步直到文本末尾。
4.6应用程序举例4.6.3字符串处理例4.15统计文本框中英文例4.16字符的加密和解密加密算法是:
将每个字母C加(或减)一序数K,即用它后的第K个字母代替,变换式公式:
c=chr(Asc(c)+k)
例如:设序数k为5,这时
"A"→"F",
"a"→"f","B"→"G"…
当加序数后的字母超过"Z"或"z"则
c=Chr(Asc(c)+k-26)例如:Youaregood→Dtzfwjltti解密算法:解密为加密的逆过程将每个字母C减(或加)一序数K,即
c=chr(Asc(c)-k),例如:序数k为5,这时
"Z"→"U",
"z"→"u","Y"→"T"…当加序数后的字母小于"A"或"a"则
c=Chr(Asc(c)-k+26)4.6应用程序举例例4.16字符的加密和解密4.6应用程序举例
迭代法在数学上也称“递推法”,凡是由一给定的初值,通过某一算法(公式)可求得新值,再由新值按照同样的算法又可求得另一个新值,这样经过有限次即可求得其解。4.6.4迭代法
例4.17用迭代法求某个数的平方根。已知求平方根的迭代公式为:
4.6应用程序举例迭代法在数学上也称“递推法”,凡是由一给定的算法思想如下:
设平方根的解为x,可假定一个初值x0=a/2(估计值),根据迭代公式得到一个新的值x1,这个新值x1比初值x0更接近要求的值x;再以新值作为初值,即:x1→x0,重新按原来的方法求x1,重复这一过程直到|x1-x0|<ε(某一给定的精度)。此时可将x1作为问题的解。程序代码见教材Pg.854.6应用程序举例算法思想如下:程序代码见教材Pg.854.6应用程序举例本章小结1.本章介绍了结构化程序设计方法及其算法表示,这对初学程序设计的同学来说可能认识不到它的重性,其实算法是程序设计的灵魂,因为要编写一个好的程序,首先就要设计好的算法。即使一个简单程序,在编写时也要考虑先做什么,再做什么,最后做什么。
2.面向对象的程序设计并不是要抛弃结构化程序设计方法,而是站在比结构化程序设计更高、更抽象的层次上去解决问题。当它被分解为低级代码模块时,仍需要结构化编程的方法和技巧。程序都是由顺序结构、选择结构和循环结构3种结构的复杂组合。本章小结1.本章介绍了结构化程序设计方法及其本章作业下面题直接做在教材上,下次上课前抽查一、二、三、四题
编程题1,2、4、6、8题写在作业本上上机完成实验1、2、4、6小题本章作业下面题直接做在教材上,下次上课前抽查第4章程序设计的3种基本结构本章内容及要求:
1.了解算法概念及表示,掌握用N—S流程图表示算法;
2.熟练掌握赋值语句、输入/输出消息框函数的使用;
3.熟练掌握行if语句、块if结构、SelectCase情况选择结构有使用,掌握选择的嵌套结构;
4.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。重点:选择结构及循环结构的实现及其应用难点:选择的嵌套及多重循环结构第4章程序设计的3种基本结构本章内容及要求:重点:选择本章主要内容4.1算法及算法的表示
4.2顺序结构
4.3选择结构
4.4循环结构
4.5其他控制语句
4.6应用程序举例
本章主要内容4.1算法及算法的表示
4.2顺序结构4.1算法及算法的表示4.1.1算法概述什么是算法:
广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。
狭义地讲:算法是解决一个问题采取的方法和步骤的描述。4.1算法及算法的表示4.1.1算法概述1)输入A、B、C。2)A与B中大的一个放入MAX中。3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。例4.1输入三个数,然后输出其中最大的数。
将三个数依次输入到变量A、B、C中,设变量MAX存放最大数。其算法如下:
4.1算法及算法的表示1)输入A、B、C。例4.1输入三个数,然后输出其中例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)打印输出max4.1算法及算法的表示例4.2输入10个数,打印输出其中最大的数。算法如下:44.1.2算法的特性有穷性确定性有0个或多个输入有一个或多个输出有效性4.1算法及算法的表示4.1.2算法的特性有穷性4.1算法及算法的表示4.1.3算法的表示一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。4.1算法及算法的表示4.1.3算法的表示4.1算法及算法的表示例如:例4.1可用如下的伪代码表示Begin(算法开始)
输入
A,B,CIFA>B则
A→Max
否则
B→MaxIFC>Max则
C→MaxPrintMaxEnd(算法结束)4.1算法及算法的表示例如:例4.1可用如下的伪代码表示4.1算法及算法的表示二、用传统流程图表示算法处理框起止框I/O框判断框流程线连接点1、传统流程图中的基本符号4.1算法及算法的表示二、用传统流程图表示算法处理框起止框I/O框判断框流程线连2、三种基本结构的表示(1)顺序结构条件语句1语句2YN语句1语句2(2)选择结构4.1算法及算法的表示2、三种基本结构的表示条件语句1语句2YN语句1语句2(2)(3)循环结构a)当型循环b)直到循环条件语句组YN(b)条件(a)YN语句组4.1算法及算法的表示(3)循环结构a)当型循环b)直到循环条件语句组YN(三种基本结构的特点:(1)只有一个入口(2)只有一个出口(3)不存在死语句(4)不存在死循环4.1算法及算法的表示三种基本结构的特点:(1)只有一个入口4.1算法及算法的
从10个数中选出最大的数的算法流程图N<10Max=AN=1A>MaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY4.1算法及算法的表示从10个数中选出最大的数的算法流程图N<10M4.1.4用N—S流程图表示算法将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框。三种基本结构的N—S图表示:语句A语句B语句A语句B条件YN1、顺序结构2、选择结构4.1算法及算法的表示4.1.4用N—S流程图表示算法将全部算法写在一个矩3、循环结构a)当型循环b)直到循环例:画出从10个数中选出最大的数的N—S流程图。语句组当条件成立(a)语句组直到当条件成立(b)4.1算法及算法的表示3、循环结构a)当型循环b)直到循环例:画出从10个数传统流程图N<10Max=AN=1A>MaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY输入A当N<10Max=AN=N+1打印MaxMax=A,N=1N—S流程图A>MaxYN输入A4.1算法及算法的表示传统流程图N<10Max=AA>MaxMax=A输入A开A=Val(InputBox("A=?"))B=Val(InputBox("B=?"))C=Val(InputBox("C=?"))IfA>BthenMax=AElseMax=BEndIfIfC>MaxthenMax=CPrint"Max=";Max下面是例4.1的计算机程序,即为用计算机语言表示算法:4.1算法及算法的表示A=Val(InputBox("A=?"))下面是例4.1的4.1.5结构化程序设计方法(补充)(一)用计算机解决问题的过程提出、分析问题确定算法模型设计算法编写程序调试程序分析输出结果正确合理结束不正确4.1算法及算法的表示4.1.5结构化程序设计方法(补充)(一)用计算机解决问(二)结构化程序设计思想自顶向下、逐步细化、模块化自顶向下:先从全局、整体设计逐步细化:将一个问题分解成几个较小的问题解决模块化:将一个大任务分解成若干个较小的部分,每个部分承担一定功能,称为“功能模块”例:给100个整数,打印输出其中的素数。4.1算法及算法的表示(二)结构化程序设计思想自顶向下、逐步细化、模块化自顶向下:S1N—S流程图输入100个数存入X1,x2,……x100打印x1…..x100中不等于0的数让x1,x2,……x100中的非素变为0S3S2输入xi当i<=100i=i+1i=1S1细化xi≠0当i<=100i=i+1i=1YN打印xiS3细化4.1算法及算法的表示S1N—S流程图输入100个数存入X1,x2,……x100打S1N—S流程图输入100个数存入X1,x2,……x100打印x1…..x100中不等于0的数让x1,……x100中的非素变为0S3S2S2细化判断xi是否是素数,若不是则将xi=0当i<=100i=i+1i=1S21r=0r<=将x1除j的余j=j+1j=2YNxi=0直到j>xi/2S21细化4.1算法及算法的表示S1N—S流程图输入100个数存入X1,x2,……x100打输入100个数存入X1,x2,……x100打印x1…..x100中不等于0的数让x1,……x100中的非素变为0细化后的流程图输入xi当i<=100i=i+1i=1当i<=100i=1r=0r=xi%jj=j+1j=2YNxi=0直到j>xi/2i=i+1xi≠0当i<=100i=1YN打印xii=i+1输入100个数存入X1,x2,……x100打印x1…..x14.2顺序结构4.2.1赋值语句
形式:变量名=表达式对象.属性=表达式
功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值。
例:sRate=0.1Text1.Text="欢迎使用VisualBasic6.0”说明:
1、执行过程:先求表达式的值,然后将值赋值给左边的变量。
2、右边的表达式可以是变量、常量、函数调用等特殊的表达式。
3、不要将“=”理解为数学上的等号:
A=A+1是表示将A单元的值加1后以放回到A单元。4.2顺序结构4.2.1赋值语句执行过程如右图4、赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的: 5=X'左边是常量。 Abs(X)=20'左边是函数调用,即是表达式。5、赋值符号“=”两边的数据类型一般要求应一致。4.2顺序结构执行过程如右图4、赋值符号“=”左边一定只能是变量名或对象的4.2.2数据的输出——Print方法Print方法的一般格式:
[对象名.]Print[<表达式表>][{,|;}]说明:
[对象名.]可以是窗体名、图片框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。用Print方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。4.2顺序结构4.2.2数据的输出——Print方法Print方法的4.2.3用户交互函数和过程
1.InputBox函数变量名=InputBox[$](<提示信息>[,<标题>][,<缺省>][,<x坐标>][,<y坐标>])
其中:提示提示信息,标题标题区显示,缺省输入区缺省值。例如,要在屏幕上显示如下的对话框:4.2顺序结构4.2.3用户交互函数和过程4.2顺序结构
例如:有下列语句如下:
Dimx%x=Val(InputBox(“请输入一个数”,“输入框”,100))
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版牛只运输车辆驾驶人员培训与考核合同3篇
- 二零二五年度暖气设备安装工程安全生产管理合同3篇
- 二零二五年度农业科技创新农副业承包合同书模板4篇
- 美容院与互联网平台合作开展直播带货合同4篇
- 公共管理导论知到智慧树章节测试课后答案2024年秋西北大学
- 买卖双方2024年蔬菜交易合同3篇
- 2025年度木门原材采购合同4篇
- 二零二五宠物医院兽医职务聘任与培训合同4篇
- 2025年度南京市二手房买卖合同电子版范本4篇
- 二零二五版农业综合开发农资采购项目合同4篇
- 基因突变和基因重组(第1课时)高一下学期生物人教版(2019)必修2
- 内科学(医学高级):风湿性疾病试题及答案(强化练习)
- 音乐剧好看智慧树知到期末考试答案2024年
- 办公设备(电脑、一体机、投影机等)采购 投标方案(技术方案)
- 查干淖尔一号井环评
- 案卷评查培训课件模板
- 2024年江苏省样卷五年级数学上册期末试卷及答案
- 人教版初中英语七八九全部单词(打印版)
- 波浪理论要点图解完美版
- 金融交易数据分析与风险评估项目环境敏感性分析
- 牛顿环与劈尖实验论文
评论
0/150
提交评论