第3章程序控制结构

上传人:汽*** 文档编号:579798190 上传时间:2024-08-27 格式:PPT 页数:49 大小:560.04KB
返回 下载 相关 举报
第3章程序控制结构_第1页
第1页 / 共49页
第3章程序控制结构_第2页
第2页 / 共49页
第3章程序控制结构_第3页
第3页 / 共49页
第3章程序控制结构_第4页
第4页 / 共49页
第3章程序控制结构_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《第3章程序控制结构》由会员分享,可在线阅读,更多相关《第3章程序控制结构(49页珍藏版)》请在金锄头文库上搜索。

1、第3 章程序控制结构3.1 3.1 输入输出语句输入输出语句 3.2 3.2 顺序结构顺序结构 3.3 3.3 选择结构选择结构 3.4 3.4 循环结构循环结构 3.5 3.5 辅助控制语句辅助控制语句 3.6 3.6 常用算法举例常用算法举例 输入输入:信息从计算机外传输到计算机内存。信息从计算机外传输到计算机内存。输入方式有:输入方式有: 键盘、鼠标、外存储设备、文件、键盘、鼠标、外存储设备、文件、InputBoxInputBox。 一般通过一个内存变量来接收所输入的数据一般通过一个内存变量来接收所输入的数据 。输出:信息从计算机内存传输到计算机主机外。输出:信息从计算机内存传输到计算机

2、主机外。输出去向有:输出去向有: 显示器屏幕(程序界面显示器屏幕(程序界面, ,消息对话框消息对话框MsgBoxMsgBox ) 打印机打印机 文件文件8/27/20242引例引例. 若书写下列语句:若书写下列语句: xInputBox(请输入一个数请输入一个数,给给x赋值赋值,666,100,200)则执行上述语句时会出现下面所示的对话框:则执行上述语句时会出现下面所示的对话框:若用户直接单击若用户直接单击“确定确定”按钮,则按钮,则x将得到值将得到值666;若用户输入;若用户输入888替换掉原默认替换掉原默认值,再单击值,再单击“确定确定”按钮,则按钮,则x将得到值将得到值888。Inpu

3、tBox函数的一般使用格式如下:函数的一般使用格式如下:xInputBox(提示内容提示内容 ,标题标题 ,函数的默认值函数的默认值 ,x ,y)其中:提示内容其中:提示内容 必填参数,是将出现在对话框的字符。必填参数,是将出现在对话框的字符。 标题标题将出现在对话框标题栏的字符。将出现在对话框标题栏的字符。 函数的默认值函数的默认值 默认出现的输入内容。默认出现的输入内容。 X和和y对话框出现的位置(左上角点的水平、垂直坐标)。对话框出现的位置(左上角点的水平、垂直坐标)。3.1.1 InputBox函数函数8/27/20243引例引例. 若书写下列语句:若书写下列语句:xInputBox(

4、请输入密码字符请输入密码字符)If Len(x)6 Then 当当x中的值少于中的值少于6个字符时,则执行下面语句个字符时,则执行下面语句 y=MsgBox(错误:您输入的字符串不足错误:您输入的字符串不足6位位,VbOkOnly,密码消息密码消息)End If 执行上述语句时若在输入框中输入少于执行上述语句时若在输入框中输入少于6个字符的内容,则会出现下面图个字符的内容,则会出现下面图所示的消息框;而输入所示的消息框;而输入6个以上字符则不出现下面的消息框。个以上字符则不出现下面的消息框。注意:消息框中出现的提示内容、标题栏内容、按钮的形式。注意:消息框中出现的提示内容、标题栏内容、按钮的形

5、式。MsgBox例3.1.2 MsgBox函数和函数和MsgBox过程过程8/27/202443.1.2 MsgBox函数和函数和MsgBox过程过程 函数形式:变量名函数形式:变量名 = MsgBox( 提示提示 ,按钮按钮,标题标题 )过程形式过程形式: MsgBox 提示提示 ,按钮按钮 ,标题标题 按钮值如下按钮值如下: 函数返回所选按钮整数值函数返回所选按钮整数值:8/27/20245例例3-1 编一程序,当用户单击图编一程序,当用户单击图3-3的的Command1按钮时程序按钮时程序弹出输入框,要求用户输入信息;当用户输入信息并确定后弹出输入框,要求用户输入信息;当用户输入信息并确

6、定后,接接着弹出含有着弹出含有“是是”和和“否否”按钮的消息框按钮的消息框(标题为默认内容标题为默认内容)。若用户单击若用户单击“是是”按钮则程序继续运行;若单击按钮则程序继续运行;若单击“否否”按钮则按钮则程序退出。程序退出。 程序如下:程序如下:Private Sub Command1_Click() x = InputBox(请输入信息请输入信息) y = MsgBox(x, vbYesNo) If y = 7 Then 如果用户单击如果用户单击“否否”按钮,那么按钮,那么 End 结束程序结束程序 End IfEnd Sub当用户在前一个输入框中输入当用户在前一个输入框中输入“AAA”

7、AAA”时,弹出的消息时,弹出的消息框框InputBox和和MsgBox的综合应用的综合应用8/27/202463.1.3 Print方法方法Print方法的作用是在一些对象上输出信息方法的作用是在一些对象上输出信息,其一般使用格式如下:其一般使用格式如下: 对象对象.Print Spc(n) | Tab(n) 表达式列表表达式列表 结束符结束符其中:其中: 对象:对象: 可选参数。可以是窗体、图片框名称或打印机对象。可选参数。可以是窗体、图片框名称或打印机对象。 Space(n):可选参数。表示输出:可选参数。表示输出n个空格字符。个空格字符。 Tab(n):可选参数;用来将插入点定位在绝对

8、列号:可选参数;用来将插入点定位在绝对列号n上。上。 表达式列表:可选参数;是要打印的数值或字符串表达式。表达式列表:可选参数;是要打印的数值或字符串表达式。 结束符:可选参数;指定下一个字符的插入点位置。结束符:可选参数;指定下一个字符的插入点位置。 如:如:Picture1.Print Tab(10); abc ;12; 功能:定位在当前光标的第十列显示功能:定位在当前光标的第十列显示abc和和12,最后的分号表示,最后的分号表示下个字符紧凑显示下个字符紧凑显示8/27/20247Print 方法的例题方法的例题例例3-2 Print方法的使用例。本程序执行后,输出的结果如图所方法的使用例

9、。本程序执行后,输出的结果如图所示。示。Private Sub Form_Click() x = 50 : y = 库存书库存书 Print ABC1; Print ABC2, Picture1.Print Picture1.Print 1234567890 Picture1.Print Tab(3); 111; y; =; x; 本本 Picture1.Print Spc(3); 222; y; =; x; 本本End Sub8/27/202483.1.4 格式输出格式输出输出数据的格式由输出数据的格式由Format函数确定函数确定,Format的一般格式如下:的一般格式如下: Format

10、(表达式(表达式,格式字符串)格式字符串)其中:其中:1)表达式:是要格式化的数值、日期或字符串类型表达式。)表达式:是要格式化的数值、日期或字符串类型表达式。2)格式字符串:是一个加双引号的字符串,它说明前面的表达)格式字符串:是一个加双引号的字符串,它说明前面的表达式按什么格式输出。式按什么格式输出。如:如: Format(5459.4, #,#0.00) 返回 5,459.40格式字符串有三类:数值格式、日期格式和字符串格式。分别参格式字符串有三类:数值格式、日期格式和字符串格式。分别参见表见表3-3、表、表3-4和表和表3-5。 8/27/202491)数值格式)数值格式8/27/20

11、24102)日期格式)日期格式8/27/2024113)字符串格式)字符串格式8/27/202412Format格式的例题格式的例题举例举例:Dim MyTime, MyDate, MyStrMyTime = #17:04:23#MyDate = #January 27, 1993#MyStr = Format(MyTime, h:m:s) 返回返回 17:4:23MyStr = Format(MyTime, hh:mm:ss AMPM) 返回返回 05:04:23 PMMyStr = Format(MyDate, dddd, mmm d yyyy) 返回返回Wednesday,Jan 27

12、1993MyStr = Format(5459.4, #,#0.00) 返回返回 5,459.40MyStr = Format(334.9, #0.00) 返回返回 334.90MyStr = Format(5, 0.00%) 返回返回 500.00%MyStr = Format(HELLO, ) 返回返回 THIS IS IT 8/27/2024133.1.5 打印机输出打印机输出1. 打印机对象打印机对象VB6提供的打印机对象(提供的打印机对象(Printer)允许用户使用安装在)允许用户使用安装在Windows中的打印机。使用打印机对象的中的打印机。使用打印机对象的Print方法可以把以

13、方法可以把以往输出到屏幕的内容输出到打印机。往输出到屏幕的内容输出到打印机。(1)打印机对象的常用属性)打印机对象的常用属性FontCount:打印机可用的字体总数。:打印机可用的字体总数。FontName:字体名称。其值是字符串表达式,如:字体名称。其值是字符串表达式,如:宋体宋体。FontSize:字体大小。其值是数值表达式,用磅为单位。:字体大小。其值是数值表达式,用磅为单位。PrintQuality:打印质量。设置或返回打印机的分辨率,是整:打印质量。设置或返回打印机的分辨率,是整型数(型数(-1-4对应分辨率从低到高)。如设置草稿质量:对应分辨率从低到高)。如设置草稿质量:Print

14、er.PrintQuality-1。8/27/202414(2)打印机对象的常用方法)打印机对象的常用方法Print:打印。向打印机输出文本或数据。:打印。向打印机输出文本或数据。Pset、Line、Circle:分别为画点、画线、画园。:分别为画点、画线、画园。PaintPicture:打印图形。:打印图形。EndDoc:文档结束。:文档结束。NewPage:用以结束:用以结束Printer对象中的当前页并前进到下一页。对象中的当前页并前进到下一页。KillDoc:删除文档。立即终止当前的打印。:删除文档。立即终止当前的打印。3)语句示例:)语句示例:Printer.Print VB编程编程

15、“Printer.NewPagePi3.1415926Printer.Print Pi=;PiPrinter.EndDoc8/27/2024153.1.5 打印机输出打印机输出2. 打印打印VB代码代码 在工程窗口内选择要打印哪个窗体或模块中的代码,接着打开在工程窗口内选择要打印哪个窗体或模块中的代码,接着打开“文件文件”菜单中的菜单中的“打印打印”命令,出现如图命令,出现如图3-5所示的所示的“打印打印”对话框。在对话框。在“范范围围”栏内选择栏内选择“当前模块当前模块”;在;在“打印内容打印内容”栏内选择栏内选择“代码代码”。 3. 打印打印VB窗体窗体 方法一、在图方法一、在图3-5对话

16、框选择对话框选择“窗体图像窗体图像”即可。即可。 方法二、方法二、 使用窗体的使用窗体的PrintForm方法,其语法为:方法,其语法为: 窗体名窗体名. PrintForm图3-5 打印对话框8/27/2024163.1.6 字型字型Font对象包含格式化文本所需要的信息。对象包含格式化文本所需要的信息。 经常用显示文本的对象的经常用显示文本的对象的Font属性来标识属性来标识Font对象。对象。对象的对象的Font属性包括属性包括6类子属性。类子属性。设定字体各类属性的语句设定字体各类属性的语句(对当前对象设置可省略对象名对当前对象设置可省略对象名):设置字体类型语句:设置字体类型语句:对

17、象名对象名.FontName =字体类型字体类型设置字符尺寸语句:设置字符尺寸语句:对象名对象名.FontSize =数值数值设置是否加粗语句:设置是否加粗语句:对象名对象名.FontBold =True / False设置是否倾斜语句:设置是否倾斜语句:对象名对象名.FontItalic =True / False设置是否加删除线:设置是否加删除线:对象名对象名.FontStrikethru =True / False设置是否加下划线:设置是否加下划线:对象名对象名.FontUnderline =True / False 8/27/2024171. X的原值为的原值为7X7X53. X的新值

18、变成了的新值变成了5X572. 执行赋值语句执行赋值语句X51. X的原值为的原值为7X7X83. X的新值变成了的新值变成了8又如:又如:X=X1 (此语句的作用如下图所示):此语句的作用如下图所示):XX172. 执行赋值语句执行赋值语句XX13.2 顺序结构顺序结构 顺序结构是程序三种基本结构中的一种最常见、最简单的情景。顺顺序结构是程序三种基本结构中的一种最常见、最简单的情景。顺序结构一般有赋值语句、输出数据语句和输入数据语句这几个类型。序结构一般有赋值语句、输出数据语句和输入数据语句这几个类型。3.2.1 赋值语句赋值语句赋值语句的功能就是将一种数据送到某个内存变量存储单员。赋值语句

19、的功能就是将一种数据送到某个内存变量存储单员。 格式:变量名数据格式:变量名数据例如:例如:X=5 (此语句的作用如下图所示):此语句的作用如下图所示):8/27/2024183.2.2 输出数据输出数据 输出数据是通过输出语句将常量、变量的值、对象属性的值或表达式输出数据是通过输出语句将常量、变量的值、对象属性的值或表达式的值向容器控件、显示器、打印机、磁盘文件输送。的值向容器控件、显示器、打印机、磁盘文件输送。 (1)常见的输出语句类型:)常见的输出语句类型: MsgBox消息框;消息框; Print方法;方法; 写文件的语句(见第写文件的语句(见第10章)。章)。(2)输出的数据表达形式

20、:)输出的数据表达形式: 常量(如:常量(如:5、True、“Book”);); 变量;变量; 对象属性的值(如:对象属性的值(如:Text1.Text); 表达式表达式(如:如:2*x+1); 函数(如:函数(如:Sqr(16)等。等。(3)输出的位置:)输出的位置: 容器控件(如窗体、图片框等);容器控件(如窗体、图片框等); 显示器;显示器; 打印机;打印机; 磁盘文件。磁盘文件。 8/27/2024193.2.3 顺序结构的特征顺序结构的特征 组成顺序结构的基本语句是一些输入、输出语句。组成顺序结构的基本语句是一些输入、输出语句。 写顺序结构程序时,须明白:写顺序结构程序时,须明白:先

21、作什么?后做什么?先作什么?后做什么?例例3-3 编一个转换华氏温度与摄氏温度的程序,转换公式是:编一个转换华氏温度与摄氏温度的程序,转换公式是: F=9/5*C+32 (1) 将摄氏温度转换为华氏温度,将摄氏温度转换为华氏温度,F为华氏温度值为华氏温度值 C=5/9*(F32) (2) 将华氏温度转换为摄氏温度,将华氏温度转换为摄氏温度,C为摄氏温度值为摄氏温度值要求:单击要求:单击“转华氏转华氏”按钮,则将摄氏温度转换为华氏温度;按钮,则将摄氏温度转换为华氏温度; 单击单击“转摄氏转摄氏”按钮,则将华氏温度转换为摄氏温度。按钮,则将华氏温度转换为摄氏温度。例例3-3 温度转换程序界面温度转

22、换程序界面Text1Text2Command1Command28/27/2024203.3.1 单分支选择单分支选择 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 选择结构选择结构块块IF行行IF8/27/2024213.3.2 二分支选择二分支选择 If T

23、hen Else End If If Then Else 举例:举例:1)用单分支结构来实现两分支)用单分支结构来实现两分支: y=cos(x)x3+3*x If x0 Then y=sin(x)+sqrt(x*x+1)2)用双分支结构实现)用双分支结构实现: If x0 Then y=sin(x)+sqrt(x*x+1)Else y=cos(x)x3+3*xEnd If例题:计算分段函数例题:计算分段函数块块IF行行IF8/27/202422 若若IF结构中的结构中的或或至少有一个又是一个完整的至少有一个又是一个完整的IF结构。就属于结构。就属于IF结构的嵌套情况。结构的嵌套情况。 比如:给

24、定三个数比如:给定三个数a、b、c,判断其能否构成一个三角形的三边?。若,判断其能否构成一个三角形的三边?。若“能能”,则,则进一步判断能否构成直角三角形。进一步判断能否构成直角三角形。可写如下程序段解决此问题:可写如下程序段解决此问题:a=InputBox(请输入变量请输入变量a的值的值) 给定变量给定变量a的数值的数值b=InputBox(请输入变量请输入变量b的值的值) 给定变量给定变量b的数值的数值c=InputBox(请输入变量请输入变量c的值的值) 给定变量给定变量c的数值的数值If (a+bc) And (b+ca) And (c+ab) Then 外层外层If的分支一的分支一

25、IF (a2+b2=c2)Or (b2+c2=a2) Or (c2+a2=b2) Then Print a、b、c能构成直角三角形能构成直角三角形 Else Print a、b、c能构成一般三角形能构成一般三角形 End IfElse 外层外层If分支二分支二 Print a、b、c不能构成三角形不能构成三角形End If3.3.3 IF结构的嵌套结构的嵌套内层内层If8/27/2024233.3.4 多分支选择多分支选择 1.用用If实现多分支选择实现多分支选择 格式如下:格式如下: If Then ElseIf Then Else 语句块语句块 n+1 End If 不管有几个分支,依次判

26、断,当某条件满足,执行相应的语句块,其余分不管有几个分支,依次判断,当某条件满足,执行相应的语句块,其余分支不再执行;若条件都不满足,且有支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么子句,则执行该语句块,否则什么也不执行。也不执行。 注意:注意:ElseIf不能写成不能写成 Else If。8/27/202424If 多分支语句例题多分支语句例题例3-4 已知百分制成绩mark,显示对应的五级制成绩, 哪些正确,哪些错误? 方法一方法一If mark=90 Then Print “优优“ElseIf mark=80 Then Print “良良“ElseIf mark

27、=70 Then Print 中中“ElseIf mark=60 Then Print “及格及格“Else Print “不及格不及格“EndIf方法二方法二If mark60 Then Print 不及格不及格ElseIf mark70 Then Print 及格及格ElseIf mark80 Then Print 中中ElseIf mark=60 Then Print “及格及格“ElseIf mark=70 Then Print “中中“ElseIf mark=80 Then Print “良良“ElseIf mark=90 Then Print “优优Else Print “不及格不

28、及格“Endif8/27/2024252. 用用Select Case实现多分支选择实现多分支选择形式:形式: Select Case Case Case Case Else End Select:是与:是与同类型的下面四种形式之一:同类型的下面四种形式之一: 表达式表达式 例例: “A” 一组枚举表达式一组枚举表达式(用逗号分隔用逗号分隔) 例例: 2,4,6,8 表达式表达式1 To 表达式表达式2 例例: 60 To 100 Is 关系运算符表达式关系运算符表达式 例例: Is = A And Ucase (strC) = 0 And strC y,x,y)如如 Tmax=IIf(56,

29、5,6) Tmax=IIf(65,6,5)2)Choose函数形式是:函数形式是: Choose(数字类型变量,值为(数字类型变量,值为1的返回值,值为的返回值,值为2的返回值的返回值)例如,例如,Nop是是1-4的值,转换成的值,转换成 + 、-、运算符的语句如下:运算符的语句如下: Op= Choose(Nop,+,-,) 当当Nop值为值为1,返回字符串,返回字符串“+”给变量给变量Op; Nop值为值为2,返回字,返回字符串符串“-”给变量给变量Op ;依次类推。当;依次类推。当Nop是是1-4的非整数,系统自动取的非整数,系统自动取Nop的整数办法在判断;若的整数办法在判断;若Nop

30、不在不在1-4之间,函数返回之间,函数返回Null值。值。8/27/202429选择分支例题选择分支例题例例3-6 下列程序运行时,若键入下列程序运行时,若键入2,则该程序的运行结果是,则该程序的运行结果是 。Private Sub Command1_Click() x = InputBox(请输入一个数请输入一个数) Select Case x Case Is 3 Print (5 * x + 1) / (6 * x-3) End SelectEnd Sub8/27/202430常见错误常见错误1)在选择结构中缺少配对的结束语句在选择结构中缺少配对的结束语句 对多行式的对多行式的If块语句中

31、,应有配对的块语句中,应有配对的 End If语句结束。语句结束。2)多边选择多边选择ElseIf关键字的书写和条件表达式的表示关键字的书写和条件表达式的表示 ElseIf 不要写成不要写成Else If; 多个条件表达式次序问题。多个条件表达式次序问题。3. Select Case语句的使用语句的使用 Select Case 后不能出现多个变量;后不能出现多个变量;Case子句后不子句后不能出现变量。能出现变量。8/27/2024313.4.1 ForNext循环循环 形式形式 For 循环变量初值循环变量初值 to 终值终值 Step 步长步长 语句块语句块 Exit For 语句块语句块

32、 Next 循环变量循环变量 步长步长 循环次数循环次数例例: For i=2 To 13 Step 3 循环执行次数循环执行次数 Print i , 输出输出I 的值分别为的值分别为: Next I 2 5 8 11 Print : Print “ i =“, i 出了循环后输出出了循环后输出 i 值为值为: i=14循环体循环体 0 0 初值初值 终值终值 =1 =1 时时, ,可省略可省略0 终值终值=0 =0 无限循环(死循环)无限循环(死循环)3.4 循环结构循环结构8/27/202432循环的步步剖析(循环的步步剖析(For语句)语句)代码:代码:s0For i=2 To 13 S

33、tep 3 s=s+i Next IPrint s=;s Print i =; i执行过程中执行过程中s和和i值的变化值的变化 s i循环前循环前 0 2第第1次循环后次循环后 2 5第第2次循环后次循环后 7 8第第3次循环后次循环后 15 11第第4次循环后次循环后 26 14 条件不符合,退出循环条件不符合,退出循环显示:显示:s26i 148/27/2024333.4.1 ForNext循环的简单应用循环的简单应用简单应用:简单应用:例例3-7 对对110000区间的奇数从最小数开始逐个累加求和,检测区间的奇数从最小数开始逐个累加求和,检测总和首次超过总和首次超过32767时就终止循环

34、。并输出:时就终止循环。并输出:1 )最后所加的那)最后所加的那个数;个数;2)一共加了多少个数;)一共加了多少个数;3)实际总和。)实际总和。例例3-8 依次打印依次打印ASCII码值从码值从48到到66的所有字符,并对照打印出的所有字符,并对照打印出每个字符的每个字符的ASCII码值。码值。例例3-9 任意输入一串字符,由计算机找出其中有多少个英文字母任意输入一串字符,由计算机找出其中有多少个英文字母A(大小写都算)。(大小写都算)。8/27/2024343.4.2 Do循环循环Do语句用于控制循环次数未知的循语句用于控制循环次数未知的循环结构。有两种语法形式:环结构。有两种语法形式:形式

35、形式1: Do While|Until 语句块语句块 Exit Do 语句块语句块 Loop形式形式2:Do 语句块语句块 Exit Do 语句块语句块Loop While|Until 8/27/202435Do While 循环例题循环例题例例3-10 十进制整数转换为二进制整数程序。从文本框输入一个十进制整数十进制整数转换为二进制整数程序。从文本框输入一个十进制整数m,将,将m转换为二进制数,再将该二进制数以字符串形式输出。转换为二进制数,再将该二进制数以字符串形式输出。程序如下:程序如下:Private Sub Command1_Click() Dim m As Integer m代表十

36、进制数代表十进制数 Dim n1 As String n1存放一位二进制数的字符值存放一位二进制数的字符值 Dim n As String n存放一个二进制数组成的字符串存放一个二进制数组成的字符串 m = Val(Text1) n = 初始化初始化n为空字符串为空字符串 Do While m 0 只要当前部分商只要当前部分商m(被除数)不为(被除数)不为0就进入循环就进入循环 r = m Mod 2 得到一位二进制数得到一位二进制数 n1 = Trim(Str(r) 将所得的二进制数位转化成一位字符将所得的二进制数位转化成一位字符 n = n1 & n 将所得一位字符连接到字符串将所得一位字

37、符连接到字符串n中中 m = m 2 由当前的部分商计算新的部分商由当前的部分商计算新的部分商 Loop 返回循环句首返回循环句首Do继续判断继续判断 Print Text1; 的二进制数形式为的二进制数形式为; nEnd Sub8/27/202436例例3.11 用辗转相除法求两自然数用辗转相除法求两自然数m,n的最大公约数和最小公倍数。的最大公约数和最小公倍数。分析:求最大公约数的算法思想:分析:求最大公约数的算法思想:(1)对于已知两数对于已知两数m,n,使得,使得mn;(2) m除以除以n得余数得余数r;(3)若若r=0,则,则n为最大公约数结束;否则执行为最大公约数结束;否则执行(4

38、);(4)mn,nr,再重复执行,再重复执行(2)。例例 求求 m=14 ,n=6 的最大公约数的最大公约数. m=InputBox(“请输入请输入m”)n=InputBox(“请输入请输入n”)Do While (n 0) r=m m=n n=r mod nLoopPrint 最大公约数最大公约数=, m m=m-n mnn=n-m nm m、n为公约数为公约数 m=n参考算法:辗转相减法参考算法:辗转相减法Do While m n If m n Then m = m - n Else n = n - m End If Loop变化表变化表m n14 68 62 62 42 2经典算法:辗转

39、相除求公约数经典算法:辗转相除求公约数m n r14 6 146 2 672 0 2 8/27/202437 一个循环体内又包含了一个完整的循环结构称为循环的嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套.例例3.12 打印九九乘法表打印九九乘法表.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.PrintNext i思考:打印上三角或下三角程序如何改动?要打印下三角思考:打印上三角或下三角程序如何改动?要打印下

40、三角?3.4.3 循环的嵌套循环的嵌套8/27/202438For ii =1 To 10 For jj=1 To 20 Next iiNext jjFor ii =1 To 10 For ii=1 To 20 Next iiNext iiFor ii =1 To 10 For jj=1 To 20 Next jjNext iiFor ii =1 To 10 Next iiFor ii =1 To 10 Next ii 循环嵌套注意事项循环嵌套注意事项对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2)外循

41、环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环,反之则可以。不能从循环体外转向循环体内,也不能从外循环转向内循环,反之则可以。 正正确确错错误误8/27/2024393.5 辅助控制语句辅助控制语句 I3.5.1 GoTo型控制型控制1. GoTo语句语句使用使用GoTo语句将无条件地转移到指定的语句去执行。语句将无条件地转移到指定的语句去执行。GoTo语句的语句的 格式如下:格式如下: GoTo |作用:无条件地转移到标号或行号指定的那行语句作用:无条件地转移到标号或行号指定的那行语句. 如:如:goto lin

42、eA 标号是一个字符序列标号是一个字符序列,行号是一个数字序列行号是一个数字序列. 如:如:goto 122. On-GoTo语句语句On-GoTo语句类似于情况语句,用于多分支程序设计。格式为:语句类似于情况语句,用于多分支程序设计。格式为:On GoTo 示例:示例: On m GoTo 11,22,Start,Loop1 m为为1,2,3,4时跳转到相应位置时跳转到相应位置3.5.2 Exit语句语句 多种:多种: Exit For、Exit Do、Exit Sub、Exit Function等。等。作用:退出某种控制结构的执行。作用:退出某种控制结构的执行。8/27/2024403.5

43、.3 End语句语句 多种多种: End、 End If、 End Select、 End With、 End Type、 End Sub、 End Function等。等。 作用作用:End结束一个程序的运行;其余表示某个结构的结束。结束一个程序的运行;其余表示某个结构的结束。3.5.4 With语句语句 形式如下:形式如下: With 对象对象 语句块语句块 End With 作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。 With Label1 .Height = 2000 .Width = 2000 .FontS

44、ize=22 .Caption = This is MyLabel End With注意:注意:(1) 用用With语句只能对同一个对象使用,即语句只能对同一个对象使用,即With结构里面的语句都是对同一对象执行的,不能用结构里面的语句都是对同一对象执行的,不能用一个一个With结构来设置多个不同对象;结构来设置多个不同对象; (2) With结构里面的语句块省略了对象名,但不能省略点号(结构里面的语句块省略了对象名,但不能省略点号(“.”)。)。 等价于等价于辅助控制语句辅助控制语句 I ILabel1.Height = 2000Label1.Width = 2000Label1.FontS

45、ize=22Label1.Caption = This is MyLabel8/27/2024413.6 常用算法举例常用算法举例 算法是对某个问题求解过程的描述。算法是对某个问题求解过程的描述。3.6.1 累加、连乘累加、连乘1. 累加累加求求1100中中5或或7的倍数的和的倍数的和 : Sum = 0 For i = 1 To 100 If i Mod 5 = 0 Or i Mod 7 = 0 Then Sum = Sum + i End If Next i Print Sum思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产思考:若把循环体前面置各变量初值的语句放在循环体

46、内,程序运行时会产生什么情况?生什么情况?例例3-13 先求先求120中所有能被中所有能被5整除的数之和,然后将范围扩大到求整除的数之和,然后将范围扩大到求1200中中所有能被所有能被5整除的数之和。整除的数之和。 8/27/2024423.6.1.2 连乘连乘2. 连乘连乘 如:求如:求310中所有自然数的乘积:中所有自然数的乘积: t = 1For i =3 To 10 t = t * iNext iPrint t例例3-14 求求20的双阶乘的双阶乘20!(即(即t20182)。)。Private Sub Command1_Click() Dim T As Double 连乘结果较大,要

47、用连乘结果较大,要用Double型变量存放型变量存放 Dim n As Integer, MaxN As Integer MaxN = InputBox(输入输入MaxN) T = 1 For n = 2 To MaxN Step 2 T = T * n Next n Print MaxN; ! = ; TEnd Sub 8/27/2024433.6.2 求素数求素数 素数是大于等于素数是大于等于2的正整数,它只能被的正整数,它只能被1和自己整除。判别某数和自己整除。判别某数m是否为是否为素数最简单的方法是:对于素数最简单的方法是:对于m,从,从i=2,3,m-1中判别中判别m能否被能否被i整

48、除,整除,只要有一个只要有一个i能整除能整除m ,就说明,就说明m不是素数;否则不是素数;否则m是素数。是素数。例例3-15 求求100以内的所有素数。以内的所有素数。Private Sub Command1_Click() 单击命令按钮运行该事件函数单击命令按钮运行该事件函数 Dim i As Integer, m As Integer, flag As Boolean For m = 2 To 100 对对100以内的每个数逐个判断以内的每个数逐个判断 flag = True tag值内值内True时标志时标志m为素数为素数 For i = 2 To m 1 内循环对一个具体数内循环对一个

49、具体数m进行判断进行判断 If (m Mod i) = 0 Then flag = False m能被能被i整除,该整除,该m不是素数不是素数 Next i If flag Then Print m m不能被不能被i=2m-1整除,整除,m是素数,显示是素数,显示 Next mEnd Sub 8/27/2024443.6.3 最大、最小值问题最大、最小值问题 在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与存放最大值的变量比较,较小的值,则取第一个数

50、为最大值的初值;然后将每一个数与存放最大值的变量比较,若该数大于最大值,则用该数替换最大值变量中的内容;依次逐一比较。若该数大于最大值,则用该数替换最大值变量中的内容;依次逐一比较。例例3-16 随机产生随机产生10个个100200之间的整数,求最大值。之间的整数,求最大值。Private Sub Command1_Click() Max = 100 For i = 1 To 10 x = Int(Rnd * 101 + 100) 随机产生随机产生1个个100200之间的整数之间的整数 Print x; If x Max Then Max = x Next i Print 最大值最大值=; M

51、axEnd Sub 最小值问题原理类似,但先假设一个较大的数为最小值的初值。最小值问题原理类似,但先假设一个较大的数为最小值的初值。例例3-17 任意输入一串字符,求其中任意输入一串字符,求其中Ascii码最小的字符。码最小的字符。 8/27/2024453.6.4 穷举法穷举法 “穷举法穷举法”也称为也称为“枚举法枚举法”或或“试凑法试凑法”, 即将可能出现的各种即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。情况一一测试,判断是否满足条件,一般采用循环来实现。 例例3-18 百元买百鸡问题。假定小鸡每只百元买百鸡问题。假定小鸡每只5角角,公鸡每只公鸡每只2元,母鸡每只

52、元,母鸡每只3元。现在有元。现在有100元钱要求买元钱要求买100只鸡,编程列出所有可能的购鸡方案。只鸡,编程列出所有可能的购鸡方案。设母鸡、公鸡、小鸡各为设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:只,根据题目要求,列出方程为: x+y+y=100 3x+2y+0.5z=100 三个未知数,两个方程,此题有若干个解。三个未知数,两个方程,此题有若干个解。解决此类问题采用解决此类问题采用“试凑法试凑法”,把每一种情况都考虑到。,把每一种情况都考虑到。 方法一:最简单三个未知数利用三重循环来实现。方法一:最简单三个未知数利用三重循环来实现。 方法二:从三个未知数的关系,利用两重

53、循环来实现。方法二:从三个未知数的关系,利用两重循环来实现。8/27/2024463.6.5 递推法递推法 “递推法递推法”又称为又称为“迭代法迭代法”,其基本思想是把一个复杂的计算过程转化为简,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从老值的基础上递推出新值,并由新值代替老值。单过程的多次重复。每次重复都从老值的基础上递推出新值,并由新值代替老值。 例例3-19 猴子吃桃子。小猴在一天摘了若干个桃子,当天吃掉一半多一个;第猴子吃桃子。小猴在一天摘了若干个桃子,当天吃掉一半多一个;第二天接着吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半零一个二天接着吃了剩下

54、的桃子的一半多一个;以后每天都吃尚存桃子的一半零一个,到第到第7天早上要吃时只剩下一个了天早上要吃时只剩下一个了,问小猴那天共摘了多少个桃子?问小猴那天共摘了多少个桃子? 分析:这是一个分析:这是一个“递推递推”问题,先从最后一天推出倒数第二天的桃子,再从问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子倒数第二天的桃子推出倒数第三天的桃子。设第设第n天的桃子为天的桃子为xn,那么它与前一天桃子数,那么它与前一天桃子数Xn-1的关系是:的关系是:8/27/202447循环中的常见错误循环中的常见错误1.不循环或死循环的问题不循环或死循环的问题 主要是循环条件、循环

55、初值、循环终值、循环步长的设置有问主要是循环条件、循环初值、循环终值、循环步长的设置有问题。题。2.循环结构中缺少配对的结束语句循环结构中缺少配对的结束语句 For 少少 配对的配对的Next 3.循环嵌套时循环嵌套时,内外循环交叉内外循环交叉4.累加、连乘时,存放累加、连乘结果的变量赋初值问题累加、连乘时,存放累加、连乘结果的变量赋初值问题1)一重循环一重循环 在一重循环中在一重循环中,存放累加、连乘结果的变量初值设置应在循环存放累加、连乘结果的变量初值设置应在循环语句前。语句前。2)多重循环多重循环 这要视具体问题分别对待。这要视具体问题分别对待。8/27/2024488/27/202449

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号