• 第四章 VB程序的控制结构


    轉自:http://wwww.hyit.edu.cn/edu/vb/study/index.htm

    第四章 VB程序的控制结构

    4.1  算法概论

    1.算法的概念

      算法:指用计算机解决某一问题的方法和步骤。

    算法分类 数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、求定积分、解微分方程等。
    非数值算法:用于对非数值信息进行查找、排序等。

      数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、求定积分、解微分方程等。

         非数值算法:用于对非数值信息进行查找、排序等。

    2.算法的特征

     (1)确定性:指算法的每个步骤都应确切无误,没有歧义。
     (2)可行性:指算法的每个步骤必须是计算机能够有效执行、可以实现的,并可得到确定的结果。
     (3)有穷性:指一个算法应该在有限的时间和步骤内可以执行完毕的。
     (4)输入性:指一个算法可以有0或多个输入数据。
     (5)输出性:指一个算法必须有一个或多个输出结果。

    3.算法的评价

      主要评价指标是:算法是否正确、运行的效率、占用系统资源的多少

    4.算法的描述

      一般常用流程框图来描述算法。

    图形符号 名称 代表操作
    输入/输出 数据的输入与输出
    处理 各种形式的数据处理
    判断 判断选择,根据条件满足与否选择不同路径
    起止 流程的起点与终点
    特定过程 一个定义过的过程
    流程线 连接各个框图,表示执行顺序
    连接点 表示与流程图其他部分相连接

    5.基本算法结构

     “结构化程序设计方法”规定算法有三种基本结构: 顺序结构、选择结构循环结构

     

    6.算法示例

     (1)     

     


     欧几里德算法——求两个自然数的最大公约数

      

     (2)顺序查找算法—— N个字符串集合中,查找有无特定的字符串存在

     

     
    4.2  顺序结构

     1.  赋值语句

         赋值语句是任何程序设计中最基本的语句,赋值语句都时顺序执行的。赋值语句的形式为:

          变量名 = 表达式

        它的作用是计算右边表达式的值,然后赋给左边的变量,表达式的类型应该与变量名的类型一致。

     2. 使用说明

      (1)当表达式为数值型而与变量精度不同时,强制转换成左边变量的精度;
      (2)当表达式是数字字符串,左边变量是数值类型,自动转换成数值类型再赋值,但当表达式中有非数字字符或空串,则出错。
       (3)任何非字符类型赋值给字符类型,自动转换为字符类型;
       (4)当逻辑型赋值给数值型时,True转换为 -1False转换为0;反之,非0转换为True0转换为False
       (5)赋值号左边的变量只能是变量,不能是常量、常数符号、表达式,否则报错;
       (6)不能在一句赋值语句中,同时给各变量赋值;
       (7)在条件表达式中出现的 = 是等号,系统会根据 = 号的位置,自动判断是否为赋值号;
       (8)注意N=N+1 是累加中常见的赋值语句,表示将N变量中的值加1后再赋值给N

    N
    执行了N=N+1
    N
    5
    6

    4.3   选择结构(或称分支结构)

    1.1. IF条件语句

     
    (1)If……Then语句(单分支结构 F)
       语句形式:

        1)If <表达式> Then
            语句块
          End If

        2If  <表达式>  Then  <语句>

         说明表达式一般为关系表达式、逻辑表达式,也可以为算术表达式,非0True0False

    语句块可以是一句或多句,若用2)表示,则只能是一句语句,若多句,语句间需用冒号分隔,而且必须在一行上书写。

         例:已知两个数xy,比较它们的大小,使得 x大于y

         方法一:  if  x<y  then
                 t=x
               
    x=y
               
    y=t
             
    end if

        方法二:  if  x<y  then  t=x : x=y : y=t

          注意:将两个变量中的数进行交换时,必须借助于第三个变量才能实现。

    (2)If……Then……Else语句(双分支结构)
      语句形式:                                    
      1If  <表达式>  Then
          <
    语句块1>
       
    Else
         
    <语句块2>
        End If

    2 If  <表达式>  Then  <语句1>  Else  <语句2>

    例: x2 -5     x0
    3x +2    x=0

    (3)If……Then……ElseIf语句(多分支结构)
    语句形式:                              
      If  <
    表达式1>  Then

         <
    语句块1>
        ElseIf  <
    表达式2>  Then

          <
    语句块2>
         
    ……
       
      [ Else 
    语句块 n+1 ]
      End If

    注意

       1)不管有几个分支,程序执行了一个分支后,其余分支不再执行;
       2ElseIf  不能写成Else  If
       3)当多分支中有多个表达式同时满足,则只执行第一个与之匹配的语句块

      :已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。

    (4)     If语句的嵌套

         If语句的嵌套是指if else后面的语句块中又包含If语句。语句形式:

          If  <表达式1>  Then
        
    If  <表达式11>  Then
            ……
         End If
            ……
        End If

     注意:
       1
    )对于嵌套结构,为了增强程序的可读性,应该采用缩进形式书写;
      
    2If语句形式若不在一行上书写,必须与End If配对,多个if嵌套,End If与它最接近的Emd If配对。
      已知xyz三个数,比较它们的大小并排序,使得x>y>z.

    2. Select Case语句(情况语句)   是多分支语句的又一种形式,语句形式:

      Select Case  变量或表达式
          
    Case  表达式列表1

               语句块1
           Case  表达式列表2
           
      语句块2

               ……
          [Case Else

                 语句块n+1]
      
    End Select

     说明:1变量或表达式可以是数值型或字符串表达式

            2表达式列表I 可以是表达式、一组用逗号分隔的枚举值、表达式1 to 表达式2Is关系运算符表达式;如:case  1 to 10     case  "a","w","e","t"  case  2,4,6,8,is>10

            3)并不是所有的多分支结构都可以用情况语句代替的。

      :已知输入某课程的百分制成绩mark,要求显示对应五级制的评定,评定条件如下:

    及格 不及格
    80≤mark<90 70≤mark<80 60≤mark<70 60≤mark<70 60<mark

    3. 条件函数

     (1)if函数

        函数形式: Iif(表达式,当条件为True时的值当条件为False时的值
       
    例:求XY中大的数,并放入变量Tmax中:   Tmax=IifX>Y, X, Y

     (2)Choose函数

        函数形式:Choose(整数表达式,选项列表)
       如果整数表达式的值是1,则选择列表中的第1项,依次类推;如果小于1或大于列表项数时,则返回NULL
      
    例: 根据nub1 -4的值,换算成不同的运算符: OP= Choosenub,“+”,“-”,“×”,“÷”)


     4.3 
    循环结构

    循环是在指定的条件下多次重复执行一组语句。VB中提供了两种类型的循环语句:

    计数循环语句条件型循环语句

    1.  For循环语句(知道循环次数的计数型循环)

      语句形式: For  循环变量 = 初值To 终值  [ Step  步长]
               语句块
          
    [Exit For]
             
    语句块
           
    Next  循环变量

     说明1 循环变量必须为数值型
         2)步长一般为正,初值小于终值;若为负,初值大于终值;缺省步长为1
        
    3)语句块可以是一句或多句语句,称为循环体;
        
    4Exit For 表示当遇到该语句时,退出循环体;
          执行Next的下一句;
                   循环次数=int((终值 - 初值)/步长+1
        
    5)退出循环后,循环变量的值保持退出时的值;
        
    6)在循环体内对循环变量可多次引用,但不要对其赋值,否则影响结果。

    1计算1 N的奇、偶数之和。(N为自然数)     2:打印ASCII码表

    2.  Do……Loop循环(不知道循环次数的条件型循环)

      是用于控制循环次数未知的循环结构,语法形式有两种:

      形式1Do While …… Loop
         
    Do [ While | Until 条件 ]
                语句块
         [ Exit  Do ]
                语句块
        
    Loop

    形式2Do …… Loop While
         Do
           语句块
        [ Exit  Do ]
           语句块
       
    Loop  [ While | Until 条件 ]

     说明
       1)形式1为先判断后执行,有可能一次也不执行;
       2)形式2为先执行后判断,至少执行一次;
       3)关键字While 用于指明条件为真时就执行循环体中的语句,Until刚好相反;
       4)当省略了While|Until 条件字句,即循环结构仅由 Do……Loop关键字构成时,表示无条件循环,这时循环体内应该有Exit Do语句,否则为死循环;
       5)Exit Do 语句表示当遇到该语句时,退出循环,执行Loop的下一语句。

     :我国现有人口13亿,按人口年增长率0.8%计算,多少年后我国人口超过26亿。
      
    计算公式 26=131+0.008n
       图中的例子是按可变增长率和预计总人口数设计的。

    3. 循环的嵌套

    指在循环体内又包含了一个完整的循环结构。循环嵌套对For 循环和Do……Loop循环均适用。

    :打印九九乘法表


    4.4   其它辅助控制语句

    1Go To 语句

      语句形式 Go To 标号 | 行号

     说明:1Go To语句只能转移到同一过程的标号或行号处;标号是一个字符系列,首字符必须为字母,与大小写无关,任何转移到的标号后面必须有冒号 ;行号是一个数字序列;
       
    2)以前BASIC中常用此语句,可读性差;现在要求尽量少用或不用,改用选择结构或循环结构来代替。

    2Exit语句

         用于退出某控制结构的执行,VBExit语句有多种形式,如:
       Exit For
    (退出For循环)
       Exit Do  (退出Do)循环)
       Exit Sub
    (退出子过程)
       Exit Function(退出函数)

    3End 语句

       独立的End语句用于结束一个程序的执行,可以放在任何事件过程中,形式为:End
      VB
    End语句还有多种形式,用于结束一个过程或块,如:
      
    End If    End With   End Type   End Select     End Sub    End Function

    4With语句
      它的作用是可以对某个对象执行一系列的语句,而不用重复指出对象的名称。但不能用一个With语句设置多个不同的对象。属性前面需要带点号“· ”。

      语句形式如下:  With  对象名
           
         语句块

              End With

    With  form1
        . Height=3000

        . Width=4000

        . BackColor=RGB(255,0,0)
     
    End With

    4.5   程序调试

    1. VB的调试工具

    (1)设置自动语法检查
       打开工具菜单 单击选项命令 选择 编辑器 页面 →将 自动语法检测 勾上。

    (2)利用VB调试工具栏

       利用该工具栏可以运行程序、中断运行、在程序中设置间断点、监视变量、单步调试、过程跟踪等操作。

    2. VB的三种模式

    (1)设计模式

       在设计模式下可以进行程序的界面设计、属性设置、代码编写等,标题栏上显示“设计”,在此模式下不能运行程序,也不能使用调试工具。

    (2)运行模式

       执行“运行”菜单中的“启动”命令或单击工具栏上的启动按钮或按F5键,即由设计模式进入运行模式,标题栏显示“运行”,在此阶段可以查看程序代码,但不能修改。若要修改,必须单击工具栏上的“结束”按钮,回到设计模式,也可以选择“中断”按钮,进入中断模式。

    (3)中断模式

      当程序运行时单击了“中断”按钮,或当程序出现运行错误时,都可以进入中断模式,在此模式下,运行的程序被挂起,可以查看代码、修改代码、检查数据。修改结束,单击“继续”按钮可以继续程序的运行,也可以单击“结束”按钮停止程序的执行。

    3. 常见错误

    (1) 编辑时错误

      当用户在代码窗口编辑代码时,VB会对程序进行语法检查,当发现语句没有输完、关键字输错等情况时,系统会弹出对话框,提示出错,并在错误处加亮显示,以便用户修改。

    (2)编译时错误

      是指用户单击了“启动”按钮,VB开始运行程序前,先编译执行的程序段时产生的错误,此错误是由于用户未定义变量、遗漏关键字等原因而产生的。发现错误时系统会停止编译,提示用户修改。

    (3)运行时错误

      VB在编译通过后,运行代码时发生的错误,一般是由于指令代码执行了非法操作引起的,如:数据类型不匹配、试图打开一个不存在的文件等。系统会报错并加亮显示、等候处理。

    (4)逻辑错误

      如果程序运行后得不到所希望的结果,则说明存在逻辑错误。如:运算符使用不正确,语句的次序不对、循环语句的起始、终值不正确。这种错误系统不会报错,需要用户自己分析判断。

    4.程序调试方法

    (1)进入/退出中断状态

      进入中断状态有四种方法:
       1) 程序运行时发生错误自动进入中断
       2) 程序运行中用户按中断键强制进入中断
       3) 用户在程序中预先设置了断点,程序执行到断点处即进入中断状态
       4) 在采用单步调试方式,每运行一个可执行代码后,即进入中断状态。

    (2) 利用调试窗口

      1) 立即窗口
       
       
    这是调式窗口中使用最方便、最常用的窗口。可以在程序中用Debug.Print方法,把输出送到立即窗口,也可以在该窗口中直接使用Print语句或?显示变量的值。

      2)  本地窗口

         该窗口显示当前过程中所有变量的值,当程序的执行从一个过程切换到另一个过程时,该窗口的内容发生改变,它只反映当前过程中可用的变量。

      3)  监视窗口

       该窗口可显示当前的监视表达式,在此之前必须在设计阶段,利用调试菜单的“添加监视命令”或“快速监视”命令添加监视表达式以及设置的监视类型在运行时显示在监视窗口,根据设置的监视类型进行相应的显示。

    (3)插入断点和逐句跟踪

        在调试程序时,通常回设置断点来中断程序的运行,然后逐句跟踪检查相关变量、属性和表达式的值是否在预期的范围内。

      可在中断模式下或设计模式时设置或删除断点,在代码窗口选择怀疑存在问题的地方作为断点,按下F9键,则程序运行到断点处即停下,进入中断模式,在此之前所关心的变量、属性、表达式的值都可以看到。

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    C#和SqlServer中处理时间格式问题
    ReadOnly之后获取文本框的值
    asp.net给Reaper和GridView添加序号
    SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别
    asp.net获取服务器信息
    Repeater嵌套
    开博说明 拓荒者
    Git的深入理解与GitHub托管服务的使用
    Hadoop学习笔记一:单节点安装
    VirtualBox克隆后无法找到网卡的问题
  • 原文地址:https://www.cnblogs.com/Athrun/p/970078.html
Copyright © 2020-2023  润新知