第5章 Visual Basic控制结构 之 循环结构

Slides:



Advertisements
Similar presentations
因数与倍数 2 、 5 的倍数的特征
Advertisements

3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
第四单元 100 以内数的认识
第四章 控制结构.
程序的循环结构(一).
棋盘上的麦粒 循环结构——FOR循环.
循环模式 流程图的画法: 条件 y 循环体 伪代码: n Do while 条件 循环体 loop 每个循环模式的结构都是一个入口,一个出口.
第六章 循环控制.
10.2 立方根.
上課囉 職場甘苦談 小資男孩向錢衝 育碁數位科技 呂宗益/副理.
四种命题 2 垂直.
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
C语言程序设计教程 (第4版) 第5章 循环结构 李丽娟 2013年2月.
Visual Basic 第六章 循环程序结构
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
C#程序设计基础 $5 流程控制.
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第5章 数组 Visual Basic程序设计.
第 四 章 循环结构 while语句 do {} while 语句 break和continue语句
算法与程序设计.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
数学3(必修)—— 算 法 ALGORITHM 苏州大学数学科学学院 徐稼红
流程控制、陣列 台南市聖功女子高級中學 毛全良.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
走进编程 程序的顺序结构(二).
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
第12章 VBA模块设计.
第六章 循环结构程序设计 概述 while 语句 do-while 语句 for 语句 循环的嵌套 几种循环的比较
新觀念的 VB6 教本 第 6 章 資料型別.
第5章 Visual Basic控制结构 之 常用算法举例
ENVI-IDL可视化程序设计 楚雄师范学院地理科学与旅游管理学院 杨云源 QQ:
第二章 Java语言基础.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
江西财经大学信息管理学院 《数据库应用》课程组2007
第4章 PHP流程控制语句.
小结 郭清溥.
Visual Basic 程序设计教程.
第5章 循环结构 本章要点: For循环 While循环 Do循环.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
第二章、第三章错题分析.
我国现有13.70亿人口,按人口年增长率0.57%计算,多少年后我国人口超过18亿?
用计算器开方.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
1.2 有理数 第1课时 有理数 伏家营中学 付宝华.
信号量(Semaphore).
《计算机应用基础》 第9章 程序设计基础(二).
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
3.16 枚举算法及其程序实现 ——数组的作用.
第4课时 绝对值.
1.2基本算法语句 1.2.3循环语句.
输入语句 输出语句 赋值语句 条件语句 循环语句
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
五 循环结构程序设计 厦大附中信息技术.
算法与Visual Basic程序基础(二)
鸡兔同笼(续) ——选择结构.
§4.5 最大公因式的矩阵求法( Ⅱ ).
顺序结构程序设计 ——关于“字符串”和数值.
1.2.3 循环语句.
第二次课后作业答案 函数式编程和逻辑式编程
Presentation transcript:

第5章 Visual Basic控制结构 之 循环结构 郭清溥

5.3 循环结构 循环是客观世界普遍存在的一种客观现象。 在我们所处理的问题中,常常遇到这样一些情况,它们的计算和处理方法完全一样,只是要求重复计算多次,而每次使用的数据都按照一定的规则在改变。这就是“循环”。 程序设计中的循环,是指在程序设计中,从某处开始有规律地反复执行某一操作块(或程序块)的现象,并称重复执行的该操作块(或程序块)为循环体。

5.3 循环结构 问题1. 输入10个数求其和 I=0 : S=0 I=0 : S=0 输入 M I=10 S=S+M 输入 M I=I+1 问题1. 输入10个数求其和 I < 10 S=S+M I=I+1 I=0 : S=0 …… True False 输入 M True I=10 …… False I=0 : S=0 S=S+M I=I+1 输入 M

5.3 循环结构 得到N的值 问题2. 计算2 n K=0 : S=1 K<N 直接计算 2n 2^n S=S*2 K=K+1 …… True False 问题2. 计算2 n 直接计算 2n 2^n

5.3 循环结构 5.3.1 固定次数的循环 格式 For <循环变量>=<初值> To <终值> [Step <步长值>] <循环体> [Exit For] Next <循体变量>

5.3 循环结构 5.3.1 固定次数的循环 <循环变量>是一个数值变量,作用是:对循环进行控制,根据它的值决定是否终止循环。 For <循环变量>=<初值> To <终值> [Step <步长值>] <循环体> [Exit For] Next <循体变量> <循环变量>是一个数值变量,作用是:对循环进行控制,根据它的值决定是否终止循环。 <初值>是循环开始的值,<终值>是循环结束的值,它们可以是变量、常量、表达式; <步长>是每执行一次循环体后变量获得的增量,可以是正数、负数,可以是整数或小数,但不能为0 ,步长值为+1时可以缺省。

5.3 循环结构 5.3.1 固定次数的循环 功能 当循环变量不超过终值时,将一次增加一个步长值地重复执行循环体。 For <循环变量>=<初值> To <终值> [Step <步长值>] <循环体> [Exit For] Next <循体变量> 功能 当循环变量不超过终值时,将一次增加一个步长值地重复执行循环体。 其具体执行过程是:执行到For语句时,循环变量先得到“初值”,然后与“终值”比较。如果循环变量未“超过”终值,那么就执行循环体。执行到Next语句时,循环变量累加一个步长值。之后再与终值比较。若还未“超过”终值,则重复上述过程,直到循环变量“超过”终值。

5.3 循环结构 5.3.1 固定次数的循环 流程图 循环变量=初值 循环变量未超过终值? 循环体 循环变量累加一个步长 Next的下一语句 False True 循环体 循环变量累加一个步长 Next的下一语句

5.3 循环结构 5.3.1 固定次数的循环 说明 (1) For 和 Next 必须配对使用。 For <循环变量>=<初值> To <终值> [Step <步长值>] <循环体> [Exit For] Next <循体变量> 说明 (1) For 和 Next 必须配对使用。 (2) 当步长值 > 0 时,“超过”就是“>”; 当步长值 < 0 时,“超过”就是“<”。 (3) 循环变量应尽量使用整型变量,以免出现误差。 (4) 循环结束后,循环变量的值不变。即保持当前值。

5.3 循环结构 5.3.1 固定次数的循环 例8 编写程序,利用固定次数循环计算 分析: 这是一个典型的固定循环次数的问题。  为了简单直观起见,假设程序中我们 用S表示待求的和 用K表示累加的数据 用N表示累加的终值

5.3 循环结构 5.3.1 固定次数的循环 例 8 Dim N%, S&, K% N = Val(InputBox("", "输入 N 的值")) S = 0 For K = 1 To N Step 1 S = S + K Next K lblResult.Caption = "前 " & N & " 个数的和为:" & S Step 1可以缺省

5.3 循环结构 5.3.1 固定次数的循环 例9 相传古代印度国王舍罕要褒奖他聪明能干的宰相(国际象棋发明者)达依尔。国王问达依尔需要什么,达依尔说:国王只要在国际象棋的棋盘上第一格放一粒麦子,第二格放两粒麦子,第三格放四粒麦子,以后都按此比例每一格都是前一格的两倍,一直放到第64格为止,我将感激不尽!国王一听马上便答应下来,结果,他让扛过来的麦子,不一会儿就用完了。国王很纳闷,这到底是怎么回事呢?我们下面编程序,让计算机来算一算这笔帐,假定1.42×108粒小麦/m3,计算一下这么多小麦有多大的体积。

5.3 循环结构 根据题目的描述,我们知道: 第一格放1粒麦子,1=20 第二格放2粒麦子,2=21 第三格放4粒麦子,4=22 5.3.1 固定次数的循环 例9 根据题目的描述,我们知道: 第一格放1粒麦子,1=20 第二格放2粒麦子,2=21 第三格放4粒麦子,4=22 第四格放8粒麦子,4=23 …… 第64格应该有263粒麦子。 分析:

5.3 循环结构 5.3.1 固定次数的循环 例9 这实际上是计算: 分析: 为了简单直观起见,假设程序中我们 用S表示待求的和 用I表示累加的数据

5.3 循环结构 5.3.1 固定次数的循环 K代表第I项的累加值 这实际上是计算: 例9 Dim I%, S# ,K# Const T = 142000000# S = 0 For I = 0 To 63 S = S + 2 ^ I Next I lblTotal.Caption = lblTotal.Caption & " " & S lblVolume.Caption = lblVolume.Caption _ & " " & S / T & " 立方米" ,K# S = 1: K = 1 For I = 1 To 63 K = 2 * K S = S + K Next I

5.3 循环结构 5.3.1 固定次数的循环 例10 编写程序,判断输入的整数是否是素数。 假设程序中我们用Num表示待判断的整数。依据素数的定义,我们不难得出判断Num 是不是素数的方法:将 Num 看作被除数,用 2~Num-1作为除数,一一判断,只有当从2~Num-1 之间的所有整数除 Num 后都不为整数时,Num 才为素数。 实际上,由定理保证,只要当从2 ~ 之间的所有整数除 Num后都不为整数,那么 Num 即为素数。 分析:

5.3 循环结构 5.3.1 固定次数的循环 例10 编写程序,判断输入的整数是否是素数。 程序中设置了一个逻辑型变量“Sign”,其初始值为“True”。循环体中的选择语句用来判断 Num 能否整除循环变量 I 。如果能整除,则 Num 不为素数。此时,令Sign取值“False”。当确认了 Num 不为素数以后,循环就不需要再继续下去了。因此,程序中可以使用Exit For语句退出循环。 循环结束后,对 Sign 进行判断,如果 Sign 的值为“True”,则在标签控件“lblResult”的“Caption”中显示“是素数”;否则就显示“不是素数”。 分析:

5.3 循环结构 5.3.1 固定次数的循环 例10 编写程序,判断输入的整数是否是素数。

5.3 循环结构 转下页 5.3.1 固定次数的循环 例10 编写程序,判断输入的整数是否是素数。 Dim I&, Num& Dim Sign As Boolean Sign = True Num = Val(txtNum.Text) For I = 2 To Sqr(Num) If Num / I = Int(Num / I) Then Sign = False Exit For End If Next I 程序中设置了一个逻辑型变量“Sign”,其初始值为“True”。 当确认Num 不为素数时,令Sign取值“False”。使用Exit For语句退出循环。 转下页

5.3 循环结构 接上页 5.3.1 固定次数的循环 例10 编写程序,判断输入的整数是否是素数。 If Sign Then lblResult.Caption = "是素数" Else lblResult.Caption = "不是素数" End If 接上页

5.3 循环结构 5.3.2 条件循环 格式 While <条件> <循环体> Wend 功能   <循环体> Wend 功能 当“条件”成立时,顺序执行循环体。当“条件”不成立时,脱离循环,程序转到Wend后继续执行。

5.3 循环结构 5.3.2 条件循环 说明 (1) While和Wend必须配对使用。 (2) 为使程序正确执行,循环中必须有改变条 件的语句。 (3) 要想执行循环体,必须先执行While。

5.3 循环结构 5.3.2 条件循环 例11 有一张面积足够大的纸,如果可能,你将它不断的对折。编写程序,计算对折多少次以后可以超过珠穆朗玛峰(8844430mm)的高度? 分析: 我们用 H 表示纸张的厚度,对折一次其厚度就扩大一倍,即H=H*2,用N记录对折的次数 ,用条件控制,看折多少次以后可以超过8844430。

5.3 循环结构 5.3.2 条件循环 例11 有一张面积足够大的纸,如果可能,你将它不断的对折。编写程序,计算对折多少次以后可以超过珠穆朗玛峰(8844430mm)的高度?

5.3 循环结构 5.3.2 条件循环 例11 Private Sub cmdStart_Click() Dim H#, N% N = 0 H = Val(InputBox("输入纸的厚度(mm)")) lblPaper.Caption = "纸的厚度:" & H & "mm" While H <= 8844430 H = H * 2 N = N + 1 Wend lblH.Caption = "对折" & N & "次后的厚度为:" & H & "mm" End Sub

重复前一步直到将整个数据处理完毕(N=0) 5.3 循环结构 5.3.2 条件循环 例12 任给一自然数,编写程序,求其反序数 。 分析: 我们用N表示输入的自然数,用M表示其反序数 用N 与 10 求模,得出个位,该位计入M; 用N 除以10取整,去掉个位,然后再与10求模,得出新数据的个位,该位与M乘以10以后作和; 重复前一步直到将整个数据处理完毕(N=0)

5.3 循环结构 5.3.2 条件循环 例12 任给一自然数,编写程序,求其反序数 。

5.3 循环结构 5.3.2 条件循环 例12 任给一自然数,编写程序,求其反序数 。 这样修改条件 While N 结果会如何? Private Sub cmdStart_Click() Dim N&, M&, T% N = Val(txtN.Text) M = 0 While N <> 0 T = N Mod 10 M = M * 10 + T N = Int(N / 10) Wend txtM.Text = M End Sub 这样修改条件 结果会如何? While N

5.3 循环结构 5.3.2 条件循环 例12 任给一自然数,编写程序,求其反序数 。 能按字符处理吗? Private Sub cmdStart_Click() Dim N&, M&, T% N = Val(txtN.Text) M = 0 While N <> 0 T = N Mod 10 M = M * 10 + T N = Int(N / 10) Wend txtM.Text = M End Sub 能按字符处理吗?

5.3 循环结构 5.3.3 不固定次数的循环 先比较条件 1. 格式 格式1: Do [While|Until <条件>] <循环体> [Exit Do] Loop 格式2: Do <循环体> [Exit Do] Loop [While|Until <条件>] 后比较条件

5.3 循环结构 5.3.3 不固定次数的循环 功能 “While”,表示“当”条件成立时执行循环 (类似While-Wend循环)(当型循环); “Until”,则表示“直到”条件成立才不 执行循环 (条件为假时执行循环)(直到型循环)。

5.3 循环结构 5.3.3 不固定次数的循环 该循环的常用格式为 Do <循环体1> If <条件> Then Exit Do <循环体2> Loop 该格式中必须有一个语句决定是否退出Do循环

… 5.3 循环结构 5.3.3 不固定次数的循环 例13 编写程序, 求两个正整数的最大公约数。 我们用辗转相除的方法求出两个数A,B的最大公约数。辗转相除的方法就是求A除以B的余数,当这个余数为0时,除数即为最大公约数。 分析: 如果R≠0, A B B R … 直到R=0 则B为所求

5.3 循环结构 <>0 <>0 <>0 = 0 例如:A=72, B=28 A B R 72 28 5.3.3 不固定次数的循环 例13 编写程序, 求两个正整数的最大公约数。 例如:A=72, B=28 A 72 B 28 R 16 <>0 Mod 28 Mod 16 12 <>0 Mod 12 4 <>0 16 12 Mod 4 = 0

5.3 循环结构 5.3.3 不固定次数的循环 例13 编写程序, 求两个正整数的最大公约数。

5.3 循环结构 5.3.3 不固定次数的循环 例13 编写程序, 求两个正整数的最大公约数。 Dim A%, B%, R% A = Val(txtA.Text) B = Val(txtB.Text) Do R = A Mod B If R = 0 Then Exit Do A = B B = R Loop lblResult.Caption = "A、B 两数的最大公约数是:" & B

当条件循环中需要有中途退出时可以使用Do While语句 5.3 循环结构 5.3.3 不固定次数的循环 当条件循环中需要有中途退出时可以使用Do While语句 Do While <条件> <循环体1> If <条件> Then Exit Do <循环体2> Loop

5.3 循环结构 5.3.4 循环结构的嵌套 循环结构做为循环体的一部分出现时,就被叫做循环的嵌套。它实际上是循环结构中又包含了循环结构。这种嵌套可以是步长型循环的自身嵌套,可以是当型循环的自身嵌套,还可以是当型循环嵌套步长型循环或者步长型循环嵌套当型循环等。 包含循环结构的循环叫外循环,被包含的循环叫内循环。使用循环嵌套时一定要注意,内外循环不能交叉,各层循环的循环变量名不能相同。

5.3 循环结构 [ [ [ [ [ [ × √ 5.3.4 循环结构的嵌套 不能交叉 FOR A FOR B FOR C …… 5.3.4 循环结构的嵌套 不能交叉 [ FOR A FOR B FOR C …… NEXT C NEXT B NEXT A [ FOR A FOR B FOR C …… NEXT B NEXT A NEXT C [ [ [ [ × √

* ** *** **** ***** 5.3 循环结构 第 1 行 1 个“*”, 第 2 行 2 个“*”, …… 5.3.4 循环结构的嵌套 例14 利用循环语句编写程序,输出如下图形 : 分析: * ** *** **** ***** 第 1 行 1 个“*”, 第 2 行 2 个“*”, …… 第 5 行 5 个“*”, 第 I 行 ? 个“*” I

5.3 循环结构 5.3.4 循环结构的嵌套 例14 利用循环语句编写程序,输出如下图形 : 我们用外层 I 循环控制行数。 5.3.4 循环结构的嵌套 例14 利用循环语句编写程序,输出如下图形 : 我们用外层 I 循环控制行数。 内层 J 循环控制每行的符号“*”的个数。 有前面的分析我们知道,第 I 行 I 个“*”,也就是说,内层循环的终值与外层循环的当前值一致。同时每一行上的第一个“*“都从第一个位置开始显示。 分析:

* ** *** **** ***** 5.3 循环结构 5.3.4 循环结构的嵌套 例14 利用循环语句编写程序,输出如下图形 : 解法1 5.3.4 循环结构的嵌套 例14 利用循环语句编写程序,输出如下图形 : 解法1 …… For I = 1 To 5 For J = 1 To I Print "*" ; Next J Print Next I * ** *** **** *****

* ** *** **** ***** 5.3 循环结构 5.3.4 循环结构的嵌套 例14 利用循环语句编写程序,输出如下图形 : 解法2 5.3.4 循环结构的嵌套 例14 利用循环语句编写程序,输出如下图形 : 解法2 * ** *** **** ***** …… For I = 1 To 5 Print String(I, "*") Next I

5.3 循环结构 第1行首个“*”的位置 5, 第2行首个“*”的位置 4, 第3行首个“*”的位置 3, 第4行首个“*”的位置 2, 5.3.4 循环结构的嵌套 例15 利用循环语句编写程序,输出如下图形 : 第1行首个“*”的位置 5, 分析: 第2行首个“*”的位置 4, 第3行首个“*”的位置 3, 第4行首个“*”的位置 2, 第5行首个“*”的位置 1, 第I行首个“*”的位置 ? 6-I

5.3 循环结构 第 1 行 1 个“*”, 第 2 行 3 个“*”, 第 3 行 5 个“*”, 第 4 行 7 个“*”, 5.3.4 循环结构的嵌套 例15 利用循环语句编写程序,输出如下图形 : 分析: 第 1 行 1 个“*”, 第 2 行 3 个“*”, 第 3 行 5 个“*”, 第 4 行 7 个“*”, 第 5 行 9 个“*”, 第 I 行 ? 个“*” 2*I-1

5.3 循环结构 5.3.4 循环结构的嵌套 例15 利用循环语句编写程序,输出如下图形 : 解法1 …… For I = 1 To 5 5.3.4 循环结构的嵌套 例15 解法1 利用循环语句编写程序,输出如下图形 : …… For I = 1 To 5 Print Tab(6-I); For J = 1 To 2*I-1 Print "*"; Next J Print Next I

5.3 循环结构 5.3.4 循环结构的嵌套 例15 解法2 利用循环语句编写程序,输出如下图形 : …… For I = 1 To 5 5.3.4 循环结构的嵌套 例15 解法2 利用循环语句编写程序,输出如下图形 : …… For I = 1 To 5 Print Tab(6-I);String(2*I-1, "*") Next I

5.3 循环结构 5.3.4 循环结构的嵌套 利用循环语句编写程序,输出如下图形 : ?

5.3 循环结构 ? A BBB CCCCC DDDDDDD EEEEEEEEE M GGG CCCCC HHHHHHH QQQQQQQQQ 5.3.4 循环结构的嵌套 利用循环语句编写程序,输出如下图形 : A BBB CCCCC DDDDDDD EEEEEEEEE M GGG CCCCC HHHHHHH QQQQQQQQQ A ABC ABCDE ABCDEFG ABCDEFGHI ? ?

5.3 循环结构 While For 三种循环语句的比较 For循环语句用于循环次数已知的情况,根据指定的次数重复执行For 和Next之间的循环体。 For

5.3 循环结构 三种循环语句的比较 DO Do循环实际上是不固定次数的条件循环,但它的形式非常灵活,既可以指定循环开始的条件,也可以指定循环结束的条件;既可以先判断条件,也可以后判断条件 Do循环常常使用Do—Loop格式。 Go!

第5章作业2 P116 习题:一、二 P121 习题:三 1. 2. 3.