第5章 Visual Basic控制结构 之 常用算法举例

Slides:



Advertisements
Similar presentations
第2章 Visual Basic 6.0编程基础 (第一部分)
Advertisements

報告人:教育部會計處處長 黃 永 傳 日 期:103 年12 月27 日
浙江省深化高校考试招生制度综合改革试点方案(2017新方案)
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
第四章 控制结构.
初级会计实务 第八章 产品成本核算 主讲人:杨菠.
摇摆的中东地区 永嘉县实验中学 张 杰.
摇摆的中东地区 永嘉县实验中学 张 杰.
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
Access数据库程序设计 总复习.
交通事故處置 當事人責任與損害賠償 屏東縣政府警察局交通隊.
我国的宗教政策 第七课第三框.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
高等医药院校药学类第三轮规划教材——大学计算机基础
算法和程序设计 第4课 分支结构的算法设计 •.
Visual Basic程序设计.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
初识Visual Basic.
算法与程序设计.
Visual Basic程序设计基础 计算机科学学院.
第1章 概述 程序设计语言的发展 Visual Basic 6.0简介 Visual Basic 6.0集成开发环境 设计程序的一般步骤.
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
数学3(必修)—— 算 法 ALGORITHM 苏州大学数学科学学院 徐稼红
流程控制、陣列 台南市聖功女子高級中學 毛全良.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
Visual Basic 程序设计 教师:王 杨 电话:
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
3.5 用递归法解决问题 黄学鸿.
第12章 VBA模块设计.
丙級電腦軟設-VB程式設計 資料來源:林文恭研究室 整理:張福生.
第 8 章 过程.
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
VB程序设计语言 主讲教师:王 杨.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
小结 郭清溥.
经典算法之 冒 泡 排 序.
Visual Basic 程序设计教程.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
程序基础 2019/4/25.
第二章、第三章错题分析.
計算機概論 跨越講義 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 結構化VS物件導向程式設計
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
單元名稱:結構化程式設計 報告人 劉洲溶.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
Print方法和函数 2019/5/19.
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
解析算法与枚举算法.
顺序查找与二分查找复习.
算法与Visual Basic程序基础(二)
程序调试与错误处理.
1.2.3 循环语句.
Presentation transcript:

第5章 Visual Basic控制结构 之 常用算法举例 郭清溥

5.4 程序举例 还记得吗? 2.5.1 用Visual Basic开发应用程序的一般步骤 (1)分析问题得出算法 (2)创建应用程序的界面 (3)设置属性 (4)编写代码 (5)调试运行、生成工程或可执行文件 还记得吗?

5.4 程序举例 5.4.1 累加、累乘 例 8

5.4 程序举例 5.4.1 累加、累乘 例16 任意输入一个字符串,编写程序,将其反向输出 。

5.4 程序举例 ? 5.4.1 累加、累乘 例16 任意输入一个字符串,编写程序,将其反向输出 。 Dim N$, M$, I%, T$ 5.4.1 累加、累乘 例16 任意输入一个字符串,编写程序,将其反向输出 。 Private Sub cmdStart_Click() Dim N$, M$, I%, T$ N = txtN.Text M = "" For I = Len(N) To 1 Step -1 T = Mid(N, I, 1) M = M & T Next I txtM.Text = M End Sub For I = 1 To Len(N) M = T & M ?

5.4 程序举例 5.4.1 累加、累乘 例16 任意输入一个字符串,编写程序,将其反向输出 。 Dim N$, M$, I%, T$ 5.4.1 累加、累乘 例16 任意输入一个字符串,编写程序,将其反向输出 。 Private Sub cmdStart_Click() Dim N$, M$, I%, T$ N = txtN.Text M = "" For I = Len(N) To 1 Step -1 T = Mid(N, I, 1) M = M & T Next I txtM.Text = M End Sub Private Sub cmdStart_Click() Dim N$, M$ N = txtN.Text M = StrReverse(N) txtM.Text = M End Sub 有更简单的方法吗?

5.4 程序举例 5.4.2 输出定位 * ** *** **** ***** A ABC ABCDE ABCDEFG ABCDEFGHI

5.4 程序举例 5.4.2 输出定位 P112 例5-17 输出数字金字塔 。 For I = 0 To 8 5.4.2 输出定位 P112 例5-17 输出数字金字塔 。 For I = 0 To 8 Print Tab(27 - 3 * I); For J = 1 To I Print J; Next J …… Next I

5.4 程序举例 5.4.2 输出定位 P112 例5-17 输出数字金字塔 。 For I = 0 To 8 …… 5.4.2 输出定位 P112 例5-17 输出数字金字塔 。 For I = 0 To 8 …… For J = I + 1 To 1 Step -1 Print J; Next J Print Next I

5.4 程序举例 5.4.2 输出定位 P112 例5-17 输出数字金字塔 。 Private Sub Form_Click() 5.4.2 输出定位 P112 例5-17 输出数字金字塔 。 Private Sub Form_Click() Dim I%, J% For I = 0 To 8 Print Tab(27 - 3 * I); For J = 1 To I Print J; Next J For J = I + 1 To 1 Step -1 Print Next I End Sub

5.4 程序举例 例17 ?

5.4 程序举例 5.4.3 穷举法 例18 编写程序,计算我国古代数学家提出的“百钱百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏几何?” 分析: 我们分别用 X,Y,Z 表示公鸡、母鸡、小鸡的个数 则有: X + Y + Z =100 ① 5X+3Y+Z/3=100 ② 由方程②可知:X的取值范围为[0,20]中的整数。 Y的取值范围为[0,33]中的整数。   因此我们可以用二重循环来解决这个问题

5.4 程序举例 5.4.3 穷举法 例18

5.4 程序举例 5.4.3 穷举法 例18 Dim X%, Y%, Z% For X = 0 To 20 For Y = 0 To 33 5.4.3 穷举法 例18 Dim X%, Y%, Z% For X = 0 To 20 For Y = 0 To 33 Z = 100 - X - Y If 5 * X + 3 * Y + Z / 3 = 100 Then lblX.Caption = lblX.Caption & " " & X lblY.Caption = lblY.Caption & " " & Y lblZ.Caption = lblZ.Caption & " " & Z End If Next Y Next X

5.4 程序举例 5.4.3 穷举法 例19 一个长长的阶梯,如果一次上两阶,最后剩一阶;如果一次上三阶,最后剩两阶;如果一次上五阶,最后剩四阶;如果一次上六阶,最后剩五阶;如果一次上七阶,刚好上完。编写程序,计算这个阶梯至少有多少阶?

5.4 程序举例 5.4.3 穷举法 例19 解法1 设阶梯长 X 阶,则: X Mod 2 = 1 ① 分析: X Mod 3 = 2 ② 5.4.3 穷举法 例19 解法1 设阶梯长 X 阶,则: X Mod 2 = 1 ① X Mod 3 = 2 ② X Mod 5 = 4 ③ X Mod 6 = 5 ④ X Mod 7 = 0 ⑤ 分析: 由 ① 知 X 为奇数; 由 ⑤ 知 X 为 7 的倍数; 则我们可以控制循环由 7 开始,每次增加 14,在循环体中比较 X 是否满足条件②、③、④。

5.4 程序举例 5.4.3 穷举法 例19 解法1

5.4 程序举例 5.4.3 穷举法 例19 解法1 Dim X% X = 7 Do If X Mod 3 = 2 And X Mod 5 = 4 And X Mod 6 = 5 Then lblResult.Caption = lblResult.Caption & X Exit Do Else X = X + 14 End If Loop

5.4 程序举例 5.4.3 穷举法 例19 解法2 假设阶梯有 X 阶,则: X Mod 2 = 1 ① 分析: 5.4.3 穷举法 例19 解法2 假设阶梯有 X 阶,则: X Mod 2 = 1 ① X Mod 3 = 2 ② X Mod 5 = 4 ③ X Mod 6 = 5 ④ X Mod 7 = 0 ⑤ 由 ①、②、③、④ 知 X+1 是2、3、5、6 的倍数, 也就是 X+1 能同时整除2、3、5、6,换句话说就是(X+1)可整除2,3,5,6的最小公倍数30,可用表达式表示为: (X+1) Mod 30 = 0 ⑥ 分析:

5.4 程序举例 5.4.3 穷举法 例19 解法2 分析: 现在条件变为: X Mod 7 = 0 ⑤ 5.4.3 穷举法 例19 解法2 分析: 现在条件变为: X Mod 7 = 0 ⑤ (X+1) Mod 30 = 0 ⑥ 则我们可以控制循环由 29 开始,每次增加 30,在循环体中比较 X 是否满足条件⑤。

5.4 程序举例 5.4.3 穷举法 例19 解法2 Dim X% X = 29 Do If X Mod 7 = 0 Then 5.4.3 穷举法 例19 解法2 Dim X% X = 29 Do If X Mod 7 = 0 Then Label1.Caption = Label1.Caption & X Exit Do Else X = X + 30 End If Loop

5.4 程序举例 5.4.4 递推法 “递推法”又称“迭代法”,就是在知道某些结果的前提下,根据已经给出的(或者是分析总结出的)递推公式,推出所要的结果。

5.4 程序举例 5.4.4 递推法 例20 已知前两个数分别是1,1,从第三个数据开始每个数据都是其前两个数据的和,编写程序,输出该数列的前12个数 。 -- Fabonacci序列

5.4 程序举例 5.4.4 递推法 例20 我们用A、B分别表示前两个数。由于从第三个数开始每个数都是前两个数的和,所以如果仍然用A、B表示第三、四个数,则有: 分析: A B A =A+B B =B+A 第1个数 第2个数 第3个数 第4个数 A = A + B B = B + A

5.4 程序举例 5.4.4 递推法 例20 Dim A%, B%, I% Show A = 1: B = 1 Print A, B 5.4.4 递推法 例20 Dim A%, B%, I% Show A = 1: B = 1 Print A, B For I = 2 To 6 A = A + B B = B + A Next I

5.4 程序举例 5.4.4 递推法 例21 一个猴子摘了一堆桃子。第一天吃了一半,又多吃一个。第二天还是吃了一半,又多吃一个。它每天如此,到第5 天时只剩一个桃子了。编写程序,计算猴子第一天共摘了多少个桃子?

5.4 程序举例 5.4.4 递推法 根据题目描述, 例21 第5天剩1个桃子, T5=1 第4天剩下的桃子数,T4=2×(T5+1) 5.4.4 递推法 例21 根据题目描述, 第5天剩1个桃子, T5=1 第4天剩下的桃子数,T4=2×(T5+1) 第3天剩下的桃子数,T3=2×(T4+1) 第2天剩下的桃子数,T2=2×(T3+1) 第1天剩下的桃子数,T1=2×(T2+1) 因此我们得到:Tn=2×(Tn+1+1) (n=4,3,2,1) 假设程序中我们用T表示每天的桃子数。 用循环控制执行四次:T=2*(T+1) 即可得到要求的结果。 分析:

5.4 程序举例 5.4.4 递推法 例21 Dim T%, I% T = 1 For I = 1 To 4 T = 2 * (T + 1) 5.4.4 递推法 例21 Dim T%, I% T = 1 For I = 1 To 4 T = 2 * (T + 1) Next I lblResult.Caption = "猴子第一天共摘了 " & _ T & " 个桃子"

5.4 程序举例 1 n! 例22 我们利用公式计算工程常量。 ≤Accuracy 分析: 我们 用 E 表示待求的工程常量 用 M 表示第 N+1个数据项的分母(M = N! ) 当 1 / M > Accuracy 为真时重复执行: E = E + 1 /M N = N + 1 M = M * N

5.4 程序举例 我们利用公式计算工程常量。 <Temp 1 n! 例22

5.4 程序举例 例22 Private Sub cmdStart_Click() Dim E#, N%, M&, Accuracy! Accuracy = Val(InputBox("", "输入精确度")) lblPrecision.Caption = "输入的精确度为:" & Accuracy While 1 / M > Accuracy E = E + 1 / M N = N + 1 M = M * N Wend txtE.Text = E End Sub

5.4 程序举例 T (N≥2) 利用部分级数和近似计算Sinx 分析 假定我们用 S 表示待求的SinX;用 N表示求和序列的数据项数;用 T 表示第N项的值: T (N≥2)

5.4 程序举例 利用部分级数和近似计算Sinx Dim n%, s#, t!, term!, x! Term = 0.0000001 x = Val(InputBox("输入X的值")) t = x: n = 1: s = t Do Until Abs(t) < Term n = n + 1 t = -t * x * x / ((2 * n - 2) * (2 * n - 1)) s = s + t Loop Label1.Caption = " SinX =" & s Label2.Caption = "Sin(X)=" & Sin(x)

第5章作业3 P116 习题:一、二

第5章作业3 1. 编写程序,使用循环结构计算2n的值(n由键盘输入)。 2. 编写程序,显示所有的“水仙花数”(所谓水仙花数 是指三位数其各个位上数字的立方和等于该数字本身。 例如,153=13+53+33。因此153是水仙花数)。 3. 编写程序,计算a+aa+aaa+…+aa…aa(n个a)的值 (a和n均由键盘输入)。 例如,当a=3,n=5时,需要计算的式子为: 3+33+333+3333+33333