精华内容
下载资源
问答
  • 同一问题算法不同结果必然不同 2用二分法求方程近似根算法中要用哪种算法结构 A. 顺序结构 B. 条件结构 C. 循环结构 D. 以上都用 3将个数交换,使,下面语句正确一组是 4计算机执行下面的程序段后输出...
  • 三、三执行结构

    千次阅读 2005-09-22 21:48:00
    这就要求我们在程序中也能实现这样操作,于是,通过多年开发、研究,现在无论种语言,都会三种基本的执行结构,即我们常说: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中,除了ForNext循环语句以外,还有一种比较常用的循环语句就DoLoop语句,下面我将显示使用这个语句是如何完成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,而在DoLoop语句中还有一个关键字可以用来控制条件,那就是While,我们可以理解成是当这个条件满足时将执行循环体代码,如上例中的Do语句行可以写成“Do While i<=100”,即是当i小于或等100时将执行循环体内的代码。

     

    另外,关于Until和While关键字,它们不但可以放到Do关键字的后面,而且还可以放在Loop关键字的后面,但这样会出现一点小小的不同,它的区别是:

    当放在Do关键字后面时,程序会先进行条件的判断,如果满足则执行循环体代码,而如果在一开始条件就不满足,则循环体内的代码一次也不会执行;

    当放在Loop关键字后面时,程序会在执行循环体代码后再进行条件的判断,也就是说循环体代码会最少执行一次。

    对于Until和While关键字,在开发中可以根据实际需要灵活使用。

     

    VB6中,还有一个循环语句,就是WhileWend,它的格式就是:

    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)

    由于这个语句的功能完成可以使用DoLoop语句来完成,所以在后面我们将只使用ForNext和DoLoop两种循环结构的语句。

     

    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中,还有一种条件语句,有时我们称其选择语句,它就是SelectCase语句,为了测试它,请在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方法将输入的焦点设置到自己上面,然后退出所在的事件响应子程序。

    从代码中,我们可以看到SelectCase语句的基本格式就是:

    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后面的代码。

     

    在实际应用中,SelectCase和IfThenEnd If语句还是有区别的:

    判断一个变量的多个值时,一般使用SelectCase语句;

    要判断多个变量的值时,一般采用IfThenEnd If语句。

     

    下一章,我们将学习如何创建自己方法(自定义子程序和函数)。

    展开全文
  • MFC的程序框架剖析

    2015-03-05 09:53:19
    (2)对于MFC程序,应用程序的实例是由全局对象(每一个MFC程序且仅一个从应用程序类CWinApp派生的类, 如CTestApp,它实例化theApp全局对象)来标识的 9、基类构造函数中this指针的指向问题 在构造子类对象时,会...
  • 大话数据结构

    2019-01-10 16:35:22
    2.3两种算法比较 19 高斯在上小学一天,老师要求每个学生都计算1+2+…+100结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决...
  • C#数据结构

    2013-12-10 11:49:54
    数据存储结构包括顺序存储结构和链式存储结构两种。顺序存储结构 (Sequence Storage Structure)是通过数据元素在计算机存储器中相对位置来表 示出数据元素逻辑关系,一般把逻辑上相邻数据元素存储在物理位置...
  • 大话数据结构 程杰

    2018-09-01 10:06:43
    2.3两种算法比较 19 高斯在上小学一天,老师要求每个学生都计算1+2+…+100结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决...
  • 数据结构实验

    2012-04-13 09:55:47
    1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。 2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。 3.掌握对多函数程序的输入、编辑、...
  • 2.3两种算法比较 19 高斯在上小学一天,老师要求每个学生都计算1+2+…+100结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决...
  • 大话数据结构-程杰

    2014-07-13 23:45:52
    2.3 两种算法比较 19 高斯在上小学一天,老师要求每个学生都计算1+2+…+100结果,谁先算出来谁先回家…… 2.4 算法定义 20 现实世界中算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    12. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。( ) 【华南理工大学 2002 一、5(1分)】 13. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构. ( ) ...
  • 2.3两种算法比较 19 高斯在上小学一天,老师要求每个学生都计算1+2+…+100结果,谁先算出来谁先回家…… 2.4算法定义 20 现实世界中算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决...
  • 2.3 两种算法比较 19 高斯在上小学一天,老师要求每个学生都计算1+2+…+100结果,谁先算出来谁先回家…… 2.4 算法定义 20 现实世界中算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个...
  • 每一模块内部均是由顺序、选择和循环种基本结构组成;其模块化实现具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之方法,从而有效地将一个较复杂的程序系统设计任务...
  • Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同是 Stateful Session Bean 可以记录呼叫者状态,因此通常来说,一个使用者会一个相对应...
  • 指向整型变量指针变量p,如要把整型变量a 地址赋予p可以以下两种方式: (1)指针变量初始化方法 int a; int *p=&a; (2)赋值语句方法 int a; int *p; p=&a; 不允许把一个数赋予指针变量,故下面赋值是...
  • 2. Java语言中浮点型数据根据数据存储长度和数值精度不同,进一步分为float和 __________两种具体类型。 3. 创建类对象运算符是___________。 4. 当整型变量n值不能被13除尽时,其值为 false Java语言...
  • 2.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...
  •  支持静态链接其它编程语言(如C/C++、汇编等)编译生成静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...
  • 3.结构程序设计种基本流程控制结构是:_____________、 _____________、__________。 4. 若a,b为int型变量且已分别赋值为2,4。表达式!(++a!=b--)值是_________ 。 5.在Java语言中,将后缀名为_____源...
  • Proteus仿真—40个单片机初学程序.

    热门讨论 2009-04-13 13:00:56
    单片机对开关状态检测相对于单片机来说,是从单片机P3.0端口输入信号,而输入信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合...
  • 本书第1章强调不要把数据库当成一个黑盒,讨论了开发人员必须了解的数据库的基本特性和功能。第2章提供了一个创建Oracle数据库的绝好例子,从中你将深入地了解数据库和实例的概念。第3章介绍了各种类型的文件,特别...
  • 1、用两种方式根据部门号从高到低,工资从低到高列出每个员工信息。 91 2、列出各个部门中工资高于本部门平均工资员工数和部门号,并按部门号排序 91 3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库...
  • 数组和指针的基本关系 6.1 我在一个源文件中定义了chara[6],在另一个源文件中声明了externchar*a。为什么不行? 6.2 可是我听说chara[]和char*a是等价的。是这样的吗? 6.3 那么,在C语言中“指针和数组等价”...
  • 直接采集待测信号,将分两种情况计算待测信号频率: 如果频率比较高,在一秒内对待测信号就行计数。 如果频率比较低,在待测信号一个周期内对单片机工作频率进行计数。 将得到频率值通过显示译码后直接送入...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    2.14 为什么sizeof返回值大于结构大小期望值,是不是尾部填充? 28 2.15 如何确定域在结构字节偏移量? 28 2.16 怎样在运行时用名字访问结构域? 29 2.17 C语言中和Pascalwith等价语句吗...
  • 数组和指针的基本关系 63 6.1 我在一个源文件中定义了char a[6],在另一个源文件中声明了extern char *a。为什么不行? 63 6.2 可是我听说char a[]和char *a是等价的。是这样的吗? 63 6.3 那么,在C语言中...
  • 无论种语言,都会提供两种基本的流程控制结构:分支结构循环结构。。 说真,写到这里,真是扯犊子,这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日

    展开全文
  • 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是 (D) 注:P55-58 A....

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

循环程序的基本结构有哪两种