《程序设计种基本结构.pptx》由会员分享,可在线阅读,更多相关《程序设计种基本结构.pptx(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1)输入A、B、C。2)A与B中大的一个放入MAX中。3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。例3.1 输入三个数,然后输出其中最大的数。将三个数依次输入到变量、B、C中,设变量MAX存放最大数。其算法如下:3.1 算法及算法的表示 第1页/共86页例3.2 输入10个数,打印输出其中最大的数。算法设计如下:(1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为1,即N=1 (2)将A存入表示最大值的变量Max中,即Max=A (3)再输入一个值给A,如果AMax 则 Max=A,否则Max不变 (4)让记录数据个数的变量增加1,即N=N+1 (5)判断
2、N是否小于10,若成立则转到第(3)步执行,否则转到第(6)步 (6)打印输出max3.1 算法及算法的表示 第2页/共86页3.1.2 算法的特性 1有穷性2确定性3有0个或多个输入4有一个或多个输出5有效性3.1 算法及算法的表示 第3页/共86页3.1.3 算法的表示 一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。3.1 算法及算法的表示 第4页/共86页例如:例3.1可用如下的伪代码表示Begin(算法开始)输入 A,B,C IF AB 则 AMax 否则 BM
3、ax IF CMax 则 CMaxPrint MaxEnd(算法结束)3.1 算法及算法的表示 第5页/共86页二 用传统流程图表示算法处理框起止框I/O框判断框流程线1、传统流程图中的基本符号3.1 算法及算法的表示 第6页/共86页2、三种基本结构的表示(1)顺序结构条件语句1语句2YN语句1语句2(2)选择结构3.1 算法及算法的表示 第7页/共86页(3)循环结构a)当型循环b)直到循环条件语句组YN(b)条件(a)YN语句组3.1 算法及算法的表示 第8页/共86页三种基本结构的特点:(1)只有一个入口(2)只有一个出口(3)不存在死语句(4)不存在死循环例:例3.2输入10个数,打
4、印输出其中的最大的数的流程图3.1 算法及算法的表示 第9页/共86页 从10个数中选出最大的数的算法流程图NMaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY3.1 算法及算法的表示 第10页/共86页3.1.4 用NS流程图表示算法 将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框三种基本结构的NS图表示:语句A语句B语句A语句B条件YN1、顺序结构2、选择结构3.1 算法及算法的表示 第11页/共86页(3)循环结构a)当型循环b)直到循环例:画出从10个数中选出最大的数的NS 流程图语句组当条件成立(a)语句组直到当条件成立(b)3.1 算法及算法的表示
5、第12页/共86页传统流程图NMaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY输入A当NMaxYN输入A3.1 算法及算法的表示 第13页/共86页Private Sub Form_Click()Dim a%,max%,i%a=Val(InputBox(A=?)max=a For i=2 To 10 a=Val(InputBox(A=?)If a max Then max=a Next i Print Max=;maxEnd Sub下面是例3.2的计算机 程序,即为用计算机语言表示算法:3.1 算法及算法的表示 第14页/共86页3.1.6 结构化程序设计方法(补充)(一)
6、、用计算机解决问题的过程提出、分析问题确定算法模型设计算法编写程序调试程序分析输出结果正确合理结束不正确3.1 算法及算法的表示 第15页/共86页(二)、结构化程序设计思想自顶向下、逐步细化、模块化自顶向下:先从全局、整体设计逐步细化:将一个问题分解成几个较小的问题解决模块化:将一个大任务分解成若干个较小的部分,每 个部分承担一定功能,称为“功能模块”例:给100个整数,打印输出其中的素数3.1 算法及算法的表示 第16页/共86页S1NS流程图输入100个数存入X1,x2,x100打印x1.x100中不等于0的数让x1,x2,x100中的非素变为0S3S2输入xi当i=100i=i+1i=
7、1S1细化xi0当i=100i=i+1i=1YN打印xiS3细化3.1 算法及算法的表示 第17页/共86页S1NS流程图输入100个数存入X1,x2,x100打印x1.x100中不等于0的数让x1,x100中的非素变为0S3S2S2细化判断xi是否是素数,若不是则将xi=0当i=100i=i+1i=1S21r=0rxi/2S21细化3.1 算法及算法的表示 第18页/共86页输入100个数存入X1,x2,x100打印x1.x100中不等于0的数让x1,x100中的非素变为0细化后的流程图输入xi当i=100i=i+1i=1当ixi/2i=i+1xi0当i=100i=1YN打印xii=i+1第
8、19页/共86页3.2 顺序结构3.2.1 赋值语句 形式:变量名表达式 对象.属性表达式 功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值.例:sRate!=0.1 Text1.Text 欢迎使用Visual Basic 6.0”说明:1 执行过程:先求表达式的值,然后将值赋值给左边的变量。2 右边的表达式可以是变量、常量、函数调用等特殊的表达式。3 不要将“”理解为数学上的等号:A=A+1 是表示将A单元的值加后以放回到A单元。第20页/共86页执行过程如右图3.赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值
9、语句都是错的:5=X 左边是常量。Abs(X)=20 左边是函数调用,即是表达式。5.赋值符号“=”两边的数据类型一般要求应一致。3.2 顺序结构第21页/共86页3.2.2 数据的输出Print方法 Print方法的一般格式:对象名.Print,|;说明:对象名.可以是窗体名、图片框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。用Print方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。3.2 顺序结构第22页/共86页3.2.3 用户交互函数和过程 1.InputBox函数变量名=InputBox$(,)其中:提示 提示信息,标题 标题区显示,缺省输入区
10、缺省值。例如,要在屏幕上显示如下的对话框:3.2 顺序结构第23页/共86页 例如:有下列语句如下:Dim x%x=Val(InputBox(“请输入一个数”,“输入框”,100)语句执行后打开如下对话框。缺省值标题提示3.2 顺序结构第24页/共86页2.MsgBox函数和MsgBox过程 函数形式:变量%=MsgBox(提示,按钮图标+缺省按钮+模式,标题)过程形式:MsgBox 提示,按钮图标+缺省按钮+模式,标题图标标题提示信息命令按钮3.2 顺序结构第25页/共86页说明:“标题”和“提示”与InputBox函数中对应的参数相同;“按钮图标+缺省按钮+模式”是整型表达式,决定信息框按
11、钮数目、出现在信息框上的图标类型及操作模式(见表3.1)若程序中需要返回值,则使用函数,否则可调用过程。3.2 顺序结构第26页/共86页按钮及图标值如下:根据用户所选按钮,函数返回17的整数值,其含义如下表:(表3-2)3.2 顺序结构第27页/共86页3.2.4 注释语句 其语法格式为:Rem 或 说明:1.指要包括的任何注释文本。在Rem关键字和注释内容之间要加一个空格。可以用一个英文单引号“”来代替Rem关键字。2.如果在其他语句行后面使用Rem关键字,必需用冒号(:)与语句隔开。若用英文单引号“”,则在其他语句行后面不必加冒号(:)。例如:Const PI=3.1415925 符号常
12、量PIS=PI*r*r :Rem计算圆的面积3.2 顺序结构第28页/共86页3.2.5 应用举例 例3.3 输入时间(小时,分和秒),然后使用输出消息框输出总计多少秒。使用文本框输入数据,使用消息框输出计算结果,程序运行界面如图3-14所示。3.2 顺序结构图3-14 程序运行界面第29页/共86页3.2.5 应用举例例3.4 编一程序,求一内半径R1=10cm,外半径R2=20cm的球环的体积。要求按四舍五入保留到小数点后4位。解:球的体积公式 :本题所求的球环面的体积公式:3.2 顺序结构第30页/共86页 选择结构是根据条件选择执行不同的分支语句,以完成问题的要求。在Visual Ba
13、sic程序设计中,使用IF语句和Select Case语句来处理选择结构。其特点是:根据所给定的条件成立(True)或不成立(False),从各实际可能的不同分支中执行某一分支的相应操作(程序块),并且任何情况下总有“无论条件多寡,必择其一;虽然条件众多,仅选其一”的特性。3.3 选择结构3.3.1 If条件语句 第31页/共86页1.IfThen语句(单分支结构)If Then 语句块 End If 或 If Then 例:已知两个数x和y,比较它们的大小,使得x大于y.If xy Then t=x:x=y:y=t End If 或 If xy Then t=x:x=y:y=t 3.3.1
14、If条件语句条件语句第32页/共86页2.IfThenElse语句(双分支结构)If Then Else End If If Then Else 双分支选择结构执行过程 3.3.1 If条件语句条件语句第33页/共86页例如:输出x,y两个中值较大的一个值。IF XY Then Print XElse Print YEnd If也可以写成如下的单行形式:IF XY Then Print X Else Print Y 3.3.1 If条件语句条件语句第34页/共86页 例3.5 设计一个求解一元二次方程的程序,要求考虑实根、虚根等情况。算法分析:(1)一元二次方程根的计算公式:(2)求解首先要输
15、入方程的系数a,b,c,计算的值,由其值是否大于等于零来决定是实根还是虚根。3.3.1 If条件语句条件语句第35页/共86页3.条件函数Iif()IIf函数可用来执行简单的条件判断操作,它相当于IFThen.Else结构。IIF函数的使用格式:IIF(,)说明:(1)与IF语句中的表达式相同,通常是关系表达式、逻辑表达式,也可为算术表达式。如果是算术表达式,其值按非0为True,0为False进行判断。(2)当为真时,函数返回的值,当为假时,函数返回的值。(3)、可以是任何表达式。例如:Max=IIF(XY,X,Y)它与下面语句等价:IF XY Then Max=x Else Max=Y 3
16、.3.1 If条件语句条件语句第36页/共86页4.IfThenElseIf语句(多分支结构)形式:If Then ElseIf Then Else 语句块 n+1 End If执行过程 3.3.1 If条件语句条件语句第37页/共86页使用IF语句实现的程序段如下:If x=90 then Print 优秀ElseIf x=80 Then Print 良好 ElseIf x=70 Then Print 中等 ElseIf x=60 Then Print 及格 Else Print 不及格End If 例3.6 输入一学生成绩,评定其等级。方法是:90100分为“优秀”,8089分为“良好”,
17、7079分为“中等”,6069分为“及格”,60分以为“不合格”3.3.1 If条件语句第38页/共86页3.3.2 Select Case语句(情况语句)形式:Select Case 变量或表达式Case 表达式列表1语句块1Case 表达式列表2语句块2Case Else语句块n+1End Select数值型或字符串表达式3.3 选择结构第39页/共86页 说明:与同类型的下面四种形式之一:表达式 A+5 一组枚举表达式(用逗号分隔)2,4,6,8 表达式1 To 表达式2 60 to 100 Is 关系运算符表达式 Is 603.3 选择结构第40页/共86页例如:将例3.3 使用sel
18、ect case.语句来实现的程序段如下:Select Case x Case 90 to 100 Print 优秀 Case 80 to 89 Print 良好 Case 70 to 79 Print 中等 Case 60 to 69 Print 及格 Case Else Print 不及格End Select3.3 选择结构第41页/共86页2.Choose函数Choose函数使用格式:Choose(,.)说明:Choose函数根据的值来决定返回其后中的那个表达式的值。如果的值为1,则返回的值,如果的值为2,则返回的值,以此类推。若的值小于1或大于n,则函数返回Null。例如:根据Nop的
19、值,得到+、-、*,/的运算符,可由理面语句来实现。Nop=Int(Rnd*4)+1OP=Choose(Nop,+,-,*,/)3.3 选择结构第42页/共86页3.3.3 选择结构的嵌套下面是两种正确的嵌套形式:(1)IF Then .IF Then Else .End If .Else .IF Then .Else .End If .End IF(2)IF Then .Select Case Case IF Then Else .End If Case.End Select .End IF3.3 选择结构第43页/共86页 注意:只要在一个分支内嵌套,不出现交叉,满足结构规则,其嵌套的形式
20、将有很多种,嵌套层次也可以任意多。对于多层IF嵌套结构中,要特别注意IF与Else的配对关系,一个Else必须与IF配结,配对的原则是:在写含有多层嵌套的程序时,建议使用缩进对齐方式,这样容易阅读和维护。例3.7 设计一个用户身份验证程序,运行界面如下图所示。3.3 选择结构第44页/共86页 循环结构是一种重复执行的程序结构。它判断给定的条件,如果条件成立,即为“真”(True),则重复执行某一些语句(称为循环体);否则,即为“假”(False),则结束循环。通常循环结构有“当型循环”(先判断条件,后执行循环)和“直到型循环”(先执行循环,再判断条件)两种。在Visual Basic中,实现
21、循环结构的语句主要有4种:ForNext语句 Do While/UntilLoop DoLoop While/Until语句 WhileWend语句3.4 循环结构第45页/共86页3.4.1 ForNext循环语句 For循环语句(一般用于循环次数已知)形式:For 循环变量初值 to 终值 Step 步长 语句块Exit For 语句块 Next 循环变量循环体 0 初值终值 =1 时,可省略终值=0 死循环 步长3.4 循环结构第46页/共86页循环次数例:For I=2 To 13 Step 3 Print I,Next I Print“I=“,I 循环执行次数 输出I的值分别为:2
22、5 8 11 出了循环输出为:I=143.4 循环结构第47页/共86页例3.8 编程计算:S=1+2+3+100Dim S%,I%S=0 累加前变量S为0For I=1 to 100 S=S+INext IPrint S=,S 当N=100N=N+1打印SS=0,N=1S=S+N例3-8 算法流程图3.4 循环结构第48页/共86页形式1:(当型循环)Do While|Until 语句块 Exit Do 语句块 Loop3.4.2 DoLoop循环语句 3.4 循环结构第49页/共86页形式2:(直到循环)Do 语句块 Exit Do 语句块Loop While|Until 3.4 循环结构
23、第50页/共86页条 件语句块语句块TFExit Do条 件语句块语句块TFExit Do Do UntilLoop执行过程 DoLoop Until执行过程 3.4 循环结构第51页/共86页说明:(1)当使用While构成循环时,当条件为“真”,则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until 构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句Exit Do的作用是退出它所在的循环结构,它只能用在D
24、O/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。3.4 循环结构第52页/共86页3.4.3 WhileWend语句使用格式如下:While Wend 说明:该语句的功能与Do While.Loop实现的循环完全相同。例3.9:用doLoop语句改写前面的例题3.83.4 循环结构第53页/共86页例3.10 求两个整数的最大公约数、最小公倍数Dim n%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIf mn Then t=m:m=n:n=t r=m mod n Do While(r
25、 0)m=n n=r r=m mod n LoopPrint 最大公约数=,n Print 最小公倍数=,nm/n 算法流程图3.4 循环结构第54页/共86页 3.4.4 循环的嵌套多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:3.4 循环结构第55页/共86页(1)For I=.For J=.Next J .Next I(2)For I=.Do While/Until.Loop .Next I(3)Do Whil
26、e.For J=.Next J .Loop(4)Do While/Until.Do While/Until.Loop .Loop3.4 循环结构第56页/共86页例如:打印九九乘法表.For i=1 To 9 For j=1 To 9 se=i&j&=&i*j Picture1.Print Tab(j-1)*9+1);se;Next j Picture1.Print Next i3.4 循环结构第57页/共86页 例3.11 将一张面值为100元的人民币等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合?编程分析:如果用X,Y,Z来分别代表5元、1元和0.5元的
27、零钞的张数,根据题意只能得到下面两个方程。X+Y+Z=100 5X+Y+0.5Z=100 3.4 循环结构第58页/共86页 For i=1 To 10 For j=1 To 20 Next j Next i For i=1 To 10 Next i For i=1 To 10 Next i 对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.下面是正确的嵌套3.4 循环结构第59页/共86页 For i=1 To 10 For j=1 To 20 Next i Next j
28、 For i=1 To 10 For i=1 To 20 Next i Next i下面是不正确的嵌套3.4 循环结构第60页/共86页对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.3.4 循环结构第61页/共86页3.4.5 几种循环语句比较 3.4 循环结构第62页/共86页3.4.6 循环结构与选择结构的嵌套 在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现
29、在两个或两个以上的分支内。3.4 循环结构第63页/共86页(1)For I=IF Then End IF Next I(6)IF Then For I=End IF Next I(5)Select Case For I=Case Case Next I End Select(3)For I=IF Then Next I End IF(2)IF Then For I=Next I End IF(4)For I=Select Case Case Case End Select Next I3.4 循环结构第64页/共86页3.5.1 Goto 语句 形式:Go To 标号|行号 作用是无条件地转
30、移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列。例如:Lp:goto lp 3.5 其它控制语句 第65页/共86页3.5.2 Exit 语句 Exit 语句用于退出 Do.Loop、For.Next、Function或Sub代码块。对应的使用格式为:Exit Do、Exit For、Exit Function、Exit Sub。分别表示退出DO循环、For循环、函数过程、子过程。例如:下面的例子是使用 Exit 语句退出 For.Next 循环、Do.Loop 循环及子过程。3.5 其它控制语句 第66页/共86页Private Sub Form_Click()Dim
31、I%,Num%Do While True 建立无穷循环。For I=1 To 100 循环 100 次。Num=Int(Rnd*100)生成一个099的随机数。Select Case Num Case 10:Exit For 退出 For.Next 循环。Case 50:Exit Do 退出 Do.Loop 循环。Case 64:Exit Sub 退出子过程。End Select Next I LoopEnd Sub3.5 其它控制语句 第67页/共86页3.5.3 End 语句 形式:End 功能:结束一个程序的运行。在Visual Basic中还有多种形式的End语句,用于结束一个程序块或
32、过程。其形式有:End If End Select End Type End With End Sub End Function等,它们与对应的语句配对使用。3.5 其它控制语句 第68页/共86页3.5.4 暂停语句 Stop语句用来暂停程序的执行,相当于在事件代码中设置断点。语法格式为:Stop说明:1.Stop语句的主要作用是把解释程序置为中断(Break)模式,以便对程序进行检查和调试。可以在程序的任何地方放置Stop语句,当执行Stop语句时,系统将自动打开立即窗口。2.与End语句不同。3.5 其它控制语句 第69页/共86页3.5.5 With.End With 语句 形式:Wi
33、th 对象名 语句块 End With 说明:With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With 控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。下面的例子显示了如何使用 With 语句来给同一个对象的几个属性赋值。3.5 其它控制语句 第70页/共86页 例如,需要对同一对象设置几个属性。途径之一是使用多条语句。Private Sub Form_Load()Command1.Caption=退出(E&xit)Command1.Top=500 Command1.Left=4500 Com
34、mand1.Enabled=TrueEnd Sub3.5 其它控制语句 第71页/共86页使用With.End With 语句,上面程序的代码如下。Private Sub Form_Load()With Command1 .Caption=退出(E&xit).Top=500 .Left=4500 .Enabled=True End WithEnd Sub 3.5 其它控制语句 第72页/共86页3.5.6 On Error语句与Resume 语句 3.5 其它控制语句 1设置错误陷阱用On Error语句设置错误陷阱,捕捉错误,形式如下:(1)On Error GoTo语句标号 发生错误时,转
35、到语句标号所指示的程序块(2)On Error Resume Next 发生错误时,忽略错误行,继续执行下一语句(3)On Error GoTo 0 禁止当前过程中任何已启动的错误第73页/共86页3.5.6 On Error语句与Resume 语句 3.5 其它控制语句 2编写错误处理程序 编写错误处理程序一般要使用到Err 对象,它是一个系统对象,在Visual Basic中,可以通过Err对象来获取错误的消息。当出现Visual Basic错误时,有关错误的信息存储在Err对象中。Err对象每次只维护一个错误的信息。当出现新的错误时,Err对象将更新为新的错误信息。Err对象的默认属性是
36、Number属性。当运行时发生错误时,Err对象的属性被填入明确识别错误的信息以及处理这个错误所使用的信息。第74页/共86页3.5.6 On Error语句与Resume 语句 3.5 其它控制语句 3退出错误处理在错误处理程序中,当遇到 Exit Sub、Exit Function、End Sub、End Function等语句时,将退出错误捕获。在错误处理程序结束后,要恢复原有的运行,可用Resume 语句。语法格式为:(1)Resume 重新执行产生错误的语句(2)Resume Next 重新执行产生错误的语句的下一语句(3)Resume 语句标号 从语句标号初恢复执行第75页/共86
37、页3.5 其它控制语句 例如,下面的Form_Click()过程是一个错误处理过程的典型用法。Private Sub Form_Click()On Error GoTo out Dim x As Single,y As Single x=1/y 引发一个除以零的错误 Exit Subout:MsgBox Err.Number 输出错误信息号 MsgBox Err.Description 输出错误信息 检查是否发生除以零的错误 If Err.Number=11 Then y=y+1 End If ResumeEnd Sub第76页/共86页3.6 应用程序举例3.6.1 素数与哥德巴赫猜想 例3
38、.12 判断一个给定的整数是否为素数。算法思路:素数指除了能被1和自身外,不能被其他整数整除的自然数。判断整数N是不是素数的基本方法是:将N分别除以2,3,N-1,若都不能整除,则N为素数。因为N=Sqr(N)*Sqr(N),所以,当N能被大于等于Sqr(N)的整数整除时,一定存在一个小于等于Sqr(N)的整数,使N能被它整除,因此只要判断N能否被2,3,Sqr(N)整除即可。算法流程图如下:第77页/共86页Dim N%,I%,K%N=Val(InputBox(N=?)K=Int(Sqr(N)For I=2 To K If N Mod I=0 Then Exit ForNext IIf IK
39、 Then Print N;是素数Else Print N;不是素数End If 3.6 应用程序举例算法流程图程序代码:第78页/共86页 例3.13 编一程序验证哥德巴赫猜想:一个大于等于6的偶数可以表示为两个素数之和。例如:6=3+3 8=3+5 10=3+7 算法设计:设N为大于等于6的任一偶数,将其分解为N1和N2两个数,使用N1+N2=N,分别判断N1和N2是否为素数,若都是,则为一组解。若N1不是素数,就不必再检查N2是否素数。先从N1=3开始,直到N1=N/2为止。算法流程图如图4-29所示。将程序代码写到窗体的单击事件中。实现上面算法的程序代码如下:3.6 应用程序举例第79
40、页/共86页Private Sub Form_Click()Dim N%,N1%,N2%,I%,K1%,K2%N=Val(InputBox(输入大于6的偶数)For N1=3 To N 2 Step 2 K1=Int(Sqr(N1)For I=2 To K1 判断N1是否是素数 If N1 Mod I=0 Then Exit For Next I If I K1 Then 如果N1为素数,将N分解为N1+N2 N2=N-N1 K2=Int(Sqr(N2)For I=2 To K2 判断N2是否是素数 If N2 Mod I=0 Then Exit For Next I If I K2 Then
41、 如果N2也为素数,则打印输出 Print N&=&N1&+&N2 End If End If Next N1End Sub3.6 应用程序举例第80页/共86页3.6.2 字符串处理 例3.14 统计文本框中英文单词的个数(设单词由空格、逗号、分号、感叹号、回车符、换行符作为单词之间的分隔符)。编程分析:用变量Last存放上一次取出的字符、Char存放当前所取出字符,变量nw累计单词数,从左边开始的第I个字符的位置用变量I存放、其初值为1。从文本(字符串)的左边开始,取出第I个字符值赋给Char,如果Char是英文字母,同时它的前一个字符Last是为单词分隔符,则表示当前的字母是新单词的开始
42、,累计单词数。将Char值赋给Last、I自增1,重复第2、3步直到文本末尾。3.6 应用程序举例第81页/共86页例3.15 字符的加密和解密加密的思想是:将每个字母c加(或减)一序数k,即用它后的第k个字母代替,变换式公式:c=c+k例如序数k为3,这时 A D,ad,BE,be.当加序数后的字母超过Z或z则 c=c+k26例如:You are good!经上述方法加密后的字符为Brx duh jrrg!3.6 应用程序举例解密为加密的逆过程:第82页/共86页 迭代法在数学上也称“递推法”,凡是由一给定的初值,通过某一算法(公式)可求得新值,再由新值按照同样的算法又可求得另一个新值,这样
43、经过有限次即可求得其解。3.6.3 迭代法 例3.14 用迭代法求某个数的平方根。已知求平方根的迭代公式为:3.6 应用程序举例第83页/共86页算法思想如下:设平方根的解为x,可假定一个初值x0=a/2(估计值),根据迭代公式得到一个新的值x1,这个新值x1比初值x0更接近要求的值x;再以新值作为初值,即:x1x0,重新按原来的方法求x1,重复这一过程直到|x1-x0|(某一给定的精度)。此时可将x1作为问题的解。3.6 应用程序举例第84页/共86页本章小结 1本章介绍了结构化程序设计方法及其算法表示,这对初学程序设计的同学来说可能认识不到它的重性,其实算法是程序设计的灵魂,因为要编写一个好的程序,首先就要设计好的算法。即使一个简单程序,在编写时也要考虑先做什么,再做什么,最后做什么。2面向对象的程序设计并不是要抛弃结构化程序设计方法,而是站在比结构化程序设计更高、更抽象的层次上去解决问题。当它被分解为低级代码模块时,仍需要结构化编程的方法和技巧。程序都是由顺序结构、选择结构和循环结构3种结构的复杂组合。第85页/共86页感谢您的观看!第86页/共86页