-
算法、程序框图、基本算法语句同步练习.doc
2019-12-29 00:19:07同一问题的算法不同结果必然不同 2用二分法求方程的近似根的算法中要用哪种算法结构 A. 顺序结构 B. 条件结构 C. 循环结构 D. 以上都用 3将两个数交换,使,下面语句正确的一组是 4计算机执行下面的程序段后输出的... -
三、三种执行结构
2005-09-22 21:48:00这就要求我们在程序中也能实现这样的操作,于是,通过多年的开发、研究,现在无论哪种语言,都会有三种基本的执行结构,即我们常说的:l 顺序结构l 条件结构l 循环结构下面我将会使用顺序和循环这两种结构来完成...三种执行结构
在前面的代码中,我们的程序会一行一行的往下执行,但在实际工作中,可能会根据不同的条件执行不同的工作,这就要求我们在程序中也能实现这样的操作,于是,通过多年的开发、研究,现在无论哪种语言,都会有三种基本的执行结构,即我们常说的:
l 顺序结构
l 条件结构
l 循环结构
下面我将会使用顺序和循环这两种结构来完成同一种工作。就是计算从1到100累加的和。
1 顺序结构
当没有条件转移时,程序会按顺序一行一行执行代码,如果通过通过这个结构来计算1到100的累加,我们当然不能用1+2+3……这种方法,于是我们只有使用小高斯的计算方法了,代码如下(您可以新建一个按钮Command2来执行此项计算):
Private Sub Command2_Click()
Dim iFrom As Long
Dim iTo As Long
Dim sum As Long
iFrom = 1
iTo = 100
sum = (iFrom + iTo) * (iTo / 2)
MsgBox CStr(sum)
End Sub
我们分别三个整型变量来指定开始数、结束数以及计算结果,计算完成后,使用MsgBox函数将结果显示出来,其中还使用了CStr函数来将结果转成字符串形式。
其实这种方法可以说是毫无意义,在这里,我们只是要显示一下代码的执行顺序,而此类问题最好的也是最明了的解决方案就是使用循环结构。
2 循环结构
下面的代码使用循环结构计算1到100的累加,先看一下代码:
Private Sub Command3_Click()
Dim i As Long
Dim sum As Long
sum = 0
For i = 1 To 100 Step 1
sum = sum + i
Next
MsgBox CStr(sum)
End Sub
下面解释一下代码。
在代码中,我们看到了新的语句:
For 循环控制变量=初值 To 结束值 Step 步长
循环体代码
Next
其中,For、To、Step和Next为VB6的关键字,这个循环结构的含义就是,使用“循环控制变量”来控制循环的次数(代码中是从1到100共100次),当这个控制变量的值超过结束值时则跳出这个循环而继续执行Next关键字后面的代码;其中“步长”决定每次循环控制变量的变化值,如在代码中我们使用的是1,在VB6中,1是步长的默认值,所以这里我们还可以省略步长,如For语句行我们可以简写成“For i = 1 To 100”。
“循环体代码”是在每次循环中都要执行一遍的一条或多条语句(如果没有语句也可以,但有什么意义呢),在本例中,它将会执行100次,即每次循环时都将已计算的值和当前循环到的i的值相加并保存在变量sum中。
循环完毕后,我们同样将结果转换成字符串并使用MsgBox函数显示出来。
在VB6中,除了For…Next循环语句以外,还有一种比较常用的循环语句就Do…Loop语句,下面我将显示使用这个语句是如何完成1到100的累加,你可以将代码放到一个新的按钮响应代码中:
Private Sub Command4_Click()
Dim i As Long
Dim sum As Long
sum = 0
i = 1
Do Until i > 100
sum = sum + i
i = i + 1
Loop
MsgBox CStr(sum)
End Sub
代码中,Do、Until、Loop是VB6中的关键字。我们可以看到在Until后面就是控制循环的条件,在这里我们可以理解为“直到i大于100后,循环将不再执行”,在循环体代码中,我们同样使用sum变量来累积计算相加的结果,而在每次循环后i都要增加1,这样就确保了循环在计算到100后就会停止,而继续执行Loop语句后面的代码。
在控制循环的条件时,我们使用了关键字Until,而在Do…Loop语句中还有一个关键字可以用来控制条件,那就是While,我们可以理解成是当这个条件满足时将执行循环体代码,如上例中的Do语句行可以写成“Do While i<=100”,即是当i小于或等100时将执行循环体内的代码。
另外,关于Until和While关键字,它们不但可以放到Do关键字的后面,而且还可以放在Loop关键字的后面,但这样会出现一点小小的不同,它的区别是:
当放在Do关键字后面时,程序会先进行条件的判断,如果满足则执行循环体代码,而如果在一开始条件就不满足,则循环体内的代码一次也不会执行;
当放在Loop关键字后面时,程序会在执行循环体代码后再进行条件的判断,也就是说循环体代码会最少执行一次。
对于Until和While关键字,在开发中可以根据实际需要灵活使用。
在VB6中,还有一个循环语句,就是While…Wend,它的格式就是:
While 条件
循环体代码
Wend
它的含义就是当条件满足时,则执行循环体代码,如计算1到100累加使用这个语句就可以写成:
Dim i As Long
Dim sum As Long
sum = 0
i = 1
While i <= 100
sum = sum + i
i = i + 1
Wend
MsgBox CStr(sum)
由于这个语句的功能完成可以使用Do…Loop语句来完成,所以在后面我们将只使用For…Next和Do…Loop两种循环结构的语句。
3 条件结构
为了演示条件结构的使用方法,我们将在Form1窗体上添加四个单选控件(OptionButton),分别为Option1、Option2、Option3和Option4,然后分别将它的Caption属性依次设为“加”、“减”、“乘”和“除”。
界面设计完成后,我们将Command1的原响应代码变为注释,然后编写如下代码(这里我只列出新的代码,在后面示例中所列出的代码也都采取此原则):
Private Sub Command1_Click()
Dim n1 As Currency
Dim n2 As Currency
Dim result As Currency
n1 = CCur(Text1.Text)
n2 = CCur(Text2.Text)
If Option1.Value = True Then
result = n1 + n2
ElseIf Option2.Value = True Then
result = n1 - n2
ElseIf Option3.Value = True Then
result = n1 * n2
ElseIf Option4.Value = True Then
result = n1 / n2
Else
MsgBox "没有选择计算方法!"
Exit Sub
End If
Text3.Text = CStr(result)
End Sub
运行程序,在Text1和Text2中分别输入数值,然后单击Command1看看有什么结果?
如果你没有选择运行方法,会出现一个提示;如果你选择了任一一个运行方法,在Text3中则会显示计算结果,在这里暂时请大家输入正确的数值,并且不在在Text2中输入“0”,因为当选择除法时,除数是不能为0的。
下面我们来看看代码中都有哪些新的知识。
首先,在代码中我们又看到了几个新的关键字,它们是If、Then、ElseIf和End If,这几个关键字就是这里的主角——条件结构语句的关键字。它的基本格式是:
If 条件1 Then
代码块1
[ElseIf 条件2 Then]
[代码块2]
……
[Else]
[代码块n]
End If
其中,使用中括号的部分为可选项,也就是在实际使用时可能没有的部分。If语句的含义就是,当条件1满足时将执行代码块1,完成后继续执行End If后面的代码;否则判断条件2(如果没当然就不同判断了),满足时执行代码块2,完成后执行End If后面的代码;依此类推,当判断完所有的ElseIf语句并且没有满足的条件时,程序会执行代码块n(没有则不执行),然后会继续执行End If语句后面的代码。
在上例的代码中,当没有选择运算符时,程序会给出提示后终止事件代码的执行并退出事件响应,这里使用了“Exit Sub”语句来退出所在的响应事件的子程序。关于这个子程序和事件之间的联系在这里就不详细说明了,在后面的学习中我们会慢慢了解这种机制。
这里使用的MsgBox函数,没有带一个变量或函数返回值做为参数,而是直接跟了一个字符串,我们可以看到,在VB6中字符串是要使用双引号包含起来的。
一个最简单的If语句会是以下形式:
If 条件 Then
[代码块]
End If
即,当条件满足时执行代码块。
在VB6中,还有一种条件语句,有时我们称其选择语句,它就是Select…Case语句,为了测试它,请在Form1窗口中添加一新的文本框Text4,然后在Command1的响应事件中编写如下代码:
Private Sub Command1_Click()
Dim n1 As Currency
Dim n2 As Currency
Dim result As Currency
n1 = CCur(Text1.Text)
n2 = CCur(Text2.Text)
Select Case Text4.Text
Case "+"
result = n1 + n2
Case "-"
result = n1 - n2
Case "*"
result = n1 * n2
Case "/"
result = n1 / n2
Case Else
MsgBox "没有输入正确的运行符!"
Text4.SetFocus
Exit Sub
End Select
Text3.Text = CStr(result)
End Sub
运行程序,然后不要忘了在Text1和Text2中分别输入一个数值,这时你可以在Text4中输入“+”、“-”、“*”、“/”或是其它字符,当然也可以空着,这时可以单击Command1按钮,看看运行的结果如何,和If语句相似,如果您输入的不是四则运算中的一个,则给出相应的提示,并使用Text4的SetFocus方法将输入的焦点设置到自己上面,然后退出所在的事件响应子程序。
从代码中,我们可以看到Select…Case语句的基本格式就是:
Select 变量
Case 值1
代码块1
[Case 值2]
[代码块2]
……
[Case Else]
[代码块n]
End Select
在这里,中括号中的内容也是可以省略的,其中Select、Case、Case Else、End Select为关键字,用于表示这种语句的结构。“变量”则为要判断值的变量标识符或一个表达式,然后每一个Case语句后面都是一个可能的值(这里是字符串,所以使用双引号包含起来,如果是数值则不需要双引号),当“变量”的值与Case后面的值相同时,则执行相应的代码块,然后继续执行End Select语句后面的代码;如果没有匹配的值,则执行Case Else后面的代码块n,如果没有则不执行,然后继续执行End Select后面的代码。
在实际应用中,Select…Case和If…Then…End If语句还是有区别的:
判断一个变量的多个值时,一般使用Select…Case语句;
要判断多个变量的值时,一般采用If…Then…End If语句。
下一章,我们将学习如何创建自己方法(自定义子程序和函数)。
-
MFC的程序框架剖析
2015-03-05 09:53:19(2)对于MFC程序,应用程序的实例是由全局对象(每一个MFC程序有且仅有一个从应用程序类CWinApp派生的类, 如CTestApp,它实例化theApp全局对象)来标识的 9、基类构造函数中this指针的指向问题 在构造子类对象时,会... -
大话数据结构
2019-01-10 16:35:222.3两种算法的比较 19 高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决... -
C#数据结构
2013-12-10 11:49:54数据的存储结构包括顺序存储结构和链式存储结构两种。顺序存储结构 (Sequence Storage Structure)是通过数据元素在计算机存储器中的相对位置来表 示出数据元素的逻辑关系,一般把逻辑上相邻的数据元素存储在物理位置... -
大话数据结构 程杰
2018-09-01 10:06:432.3两种算法的比较 19 高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决... -
数据结构实验
2012-04-13 09:55:471.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。 2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。 3.掌握对多函数程序的输入、编辑、... -
大话数据结构三个版本
2018-09-10 09:39:382.3两种算法的比较 19 高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决... -
大话数据结构-程杰
2014-07-13 23:45:522.3 两种算法的比较 19 高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家…… 2.4 算法定义 20 现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个... -
《数据结构 1800题》
2012-12-27 16:52:0312. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。( ) 【华南理工大学 2002 一、5(1分)】 13. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构. ( ) ... -
《大话数据结构》( 程杰 编著)
2018-02-15 10:00:212.3两种算法的比较 19 高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决... -
大话数据结构(中文高清版)
2017-04-19 11:57:092.3 两种算法的比较 19 高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家…… 2.4 算法定义 20 现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个... -
语言程序设计课后习题答案
2012-12-27 17:02:37每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务... -
超级有影响力霸气的Java面试题大全文档
2012-07-18 09:47:04Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应... -
C语言程序设计标准教程
2009-05-22 18:43:58设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: (1)指针变量初始化的方法 int a; int *p=&a; (2)赋值语句的方法 int a; int *p; p=&a; 不允许把一个数赋予指针变量,故下面的赋值是... -
〖程序设计基础〗练习题2及答案
2011-05-30 14:39:312. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float和 __________两种具体类型。 3. 创建类对象的运算符是___________。 4. 当整型变量n的值不能被13除尽时,其值为 false 的Java语言... -
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版
2013-02-03 11:42:532.3.3 TCP/IP连接的基本原理 57 2.4 小结 59 第3章 文件 60 3.1 参数文件 61 3.1.1 什么是参数 62 3.1.2 遗留的init.ORA参数文件 65 3.1.3 服务器参数文件 67 3.1.4 参数文件小结 72 3.2 跟踪文件 73 3.2.1... -
易语言程序免安装版下载
2011-04-07 09:28:50支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。 使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib... -
〖程序设计基础〗练习题3及答案
2011-05-30 14:40:553.结构化程序设计的三种基本流程控制结构是:_____________、 _____________、__________。 4. 若a,b为int型变量且已分别赋值为2,4。表达式!(++a!=b--)的值是_________ 。 5.在Java语言中,将后缀名为_____的源... -
Proteus仿真—40个单片机初学程序.
2009-04-13 13:00:56单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合... -
Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50)--详细书签版
2013-02-06 18:24:20本书第1章强调不要把数据库当成一个黑盒,讨论了开发人员必须了解的数据库的基本特性和功能。第2章提供了一个创建Oracle数据库的绝好例子,从中你将深入地了解数据库和实例的概念。第3章介绍了各种类型的文件,特别... -
java面试宝典2011整理有答案
2011-11-09 13:36:061、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 91 3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库... -
你必须知道的495个C语言问题
2015-10-16 14:14:28数组和指针的基本关系 6.1 我在一个源文件中定义了chara[6],在另一个源文件中声明了externchar*a。为什么不行? 6.2 可是我听说chara[]和char*a是等价的。是这样的吗? 6.3 那么,在C语言中“指针和数组等价”... -
基于AT89S52 单片的频率计
2010-01-04 08:47:37直接采集待测信号,将分两种情况计算待测信号的频率: 如果频率比较高,在一秒内对待测信号就行计数。 如果频率比较低,在待测信号的一个周期内对单片机的工作频率进行计数。 将得到的频率值通过显示译码后直接送入... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:182.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 28 2.15 如何确定域在结构中的字节偏移量? 28 2.16 怎样在运行时用名字访问结构中的域? 29 2.17 C语言中有和Pascal的with等价的语句吗... -
你必须知道的495个C语言问题(高清版)
2010-03-31 16:24:09数组和指针的基本关系 63 6.1 我在一个源文件中定义了char a[6],在另一个源文件中声明了extern char *a。为什么不行? 63 6.2 可是我听说char a[]和char *a是等价的。是这样的吗? 63 6.3 那么,在C语言中... -
小韩第三章:流程控制与数组
2015-05-10 19:59:02无论哪种语言,都会提供两种基本的流程控制结构:分支结构 和 循环结构。。 说真的,写到这里,真的是扯犊子,这OC与C根本没什么区别,要不是组长让写博客,我估计就一句话这就完了。。 那就是本章与C语言中的流程...无论哪种语言,都会提供两种基本的流程控制结构:分支结构 和 循环结构。。
说真的,写到这里,真的是扯犊子,这OC与C根本没什么区别,要不是组长让写博客,我估计就一句话这就完了。。
那就是本章与C语言中的流程控制与数组一样的。
但是,我还是要写出个性,写出逼格!
顺序结构:程序一级一级的往下执行,中间不能有任何的判断和跳转。
分支结构:1.if 条件语句
用于判断的语句,可以使用任意表达式作为分支条件进行控制。(用法和C一样)
2.swith分支语句
由一个控制表达式和多个case标签组成。switch语句往往需要在case标签之后紧跟一个代码块,csae标签作为这个代码块的标识。
例如:switch(x)
{
csae 5:
csae 6:
}
x如果等于5,则执行csae 5 语句,x如果等于6,则执行csae 6 语句。。
循环结构:while循环;
do while循环;
for循环;
这真的没什么说的,循环嘛,,很重要,跟C中也一模一样哈!!
控制循环结构:同C一样,有break,continue,return,goto,用法同C.......
Object C数组与C中数组也没什么区别。。可是要写什么啊,根本就没有OC的新内容啊~~~唉 ,,就当复习C吧。。
韩
2015年5月10日
-
计算机二级C语言考试题预测
2010-06-08 18:29:34使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是 (D) 注:P55-58 A....
-
市场-源码
-
2015年下半年 网络工程师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
SecureCRT 连接 GNS3/Linux 的安全精密工具
-
Jsplumb从入门到实战
-
阿里集团八年容器化演进之路
-
用微服务spring cloud架构打造物联网云平台
-
结合使用电纺丝和微成型来调节雪旺氏细胞行为,制备取向聚己内酯支架
-
有赞容器化实践
-
ELF视频教程
-
UL 153:2020 Portable Electric Luminaires(便携灯具)- 最新完整英文版(204页)
-
项目经理成长之路
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
使用dockerfile-maven-plugin将java项目打包并推送到阿里云私服
-
2014年下半年 信息系统监理师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
区块链应用开发实战(Go语言方向)
-
Unity ILRuntime框架设计
-
2021.2.25日报
-
项目管理工具与方法
-
arwin:Visual C ++项目中的arwin-源码
-
【Python-随到随学】 FLask第一周