程序设计与实践(VB.NET)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

项目三 流程控制

作为一种编程语言,Visual Basic.NET采用结构化程序的设计方法。结构化程序设计的基本思想是将一个应用程序划分为若干个基本结构,通过整合这些简单而众多的基本机构而完成整个程序的编写。结构化程序设计提供了三种基本的控制结构,即顺序结构、分支结构和循环结构,任何问题都可以使用这三种结构的组合加以解决。

相关语法及设计理念

一、顺序结构

在程序设计中,顺序结构是程序设计中最简单的结构。程序自上而下逐行执行,一条语句执行完之后继续执行下一条语句,直到程序的末尾。顺序结构是程序设计中最常用的结构。

顺序结构流程图如图3-1所示。在顺序结构程序设计中用到的典型语句有:赋值语句、输入语句和输出语句。

图3-1 顺序结构流程图

1.赋值语句

赋值语句的一般形式为:

[Let] 变量名=表达式

其中:“Let”表示赋值,通常省略。“=”称为赋值号。“表达式”可以是任何类型的表达式,一般其类型应与变量的类型一致。

赋值语句的作用是:计算赋值号右侧表达式的值,然后将计算结果赋给左侧的变量或属性。

例1

    Dim x,a,b,c As Integer
    x=123                   '给变量x赋值
    a = x \ 100             '求百位数1
    b = x \ 10 Mod 10       '求十位数2
    c = x Mod 10            '求个位数3

例2

    TextBox1.Text="Hello"   '给文本框的Text属性赋值

提示

① 一个赋值语句只能对一个变量赋值。

② 不能把非数值字符串的值赋值给数值型变量。

③ 赋值号左边只能是变量,不能是常量、符号常量、表达式。

④ 赋值号两边同为数值型,将右边的表达式值转换成左边变量的类型后赋值。

⑤ 要在一行中给多个变量赋值,可以用冒号将语句隔开,如:

x = 1:y = 1:z = 1

⑥ “=”在赋值语句中作为赋值号,而在表达式中作为关系运算符。

例3

    Sum = Sum + x               '与循环结构结合使用,起到累加作用
    i = i + 1                   '与循环结构结合使用,起到计数器作用
    t = x:x = y :y = t         '交换两个变量中的值
    对象名.属性名 = 属性值         '在程序中设置对象属性

假设a是字符型变量,x和y是整型变量。下列语句是不合法的赋值语句:

    x+y=a              (等号左边是表达式)
    x="Visual Basic.NET"   (数据类型不匹配)
    x=y=1              (不能同时对多个变量赋值)

2.复合赋值语句

在VB.NET中增加了复合赋值运算符及复合赋值语句,复合赋值语句的形式为:

变量名 复合赋值运算符 = 表达式

其中,复合赋值运算符有:+=、-=、*=、\=、/=、^=、&=。

作用:计算赋值号右边表达式的值,然后与赋值号左边的变量进行相应的运算,最后赋值给赋值号左边的变量。

复合赋值语句常用于以下几个方面。

(1)累加

sum += s等价于sum = sum+s

表示将变量s的值与变量sum的值相加,结果赋值给变量sum。通常与循环结构结合使用,起到累加的作用。

(2)连乘

n *= i等价于n = n * i

表示将变量i的值与变量n的值相乘,结果赋值给变量n。通常与循环结构结合使用,起到连乘的作用,如:求阶乘。

(3)显示多行信息

复合赋值语句使用得最多的是“&=”运算符。要显示多行信息,一般是利用文本框、标签,通过“&=”来实现显示。例如:

Label1.Text = "大家好!" & vbCrlf & "欢迎选修VB.NET"

表示另起一行,“&=”表示在Label控件中的内容后面连上字符串内容,并在Label控件中显示。这种方法在数据显示中经常用到,也可以用于文本框TextBox,其效果如图3-2所示。

图3-2 使用vbCrlf实现分行显示

多使用这种复合运算符可以提高程序的编译效率,可以使得代码更加简洁。

3.输入语句

Visual Basic.NET的输入有着十分丰富的内容和形式,在Visual Basic.NET中,一般使用文本框、输入框(InputBox函数)等实现输入操作。如:

    a = TextBox1.Text
    x = InputBox("输入x:")

InputBox是提供从键盘输入数据的函数。它可以产生一个对话框,这个对话框作为输入数据的界面,等待用户输入数据,并返回所输入的内容。

InputBox函数的作用是:打开一个对话框,等待用户输入内容,当用户单击“确定”按钮或按回车键时,函数返回字符串类型的输入值。

其一般形式为:

InputBox(提示信息[,对话框标题][,默认内容][,x坐标位置][,y坐标位置])

其中:

提示信息:必选项。它是字符串表达式,在对话框中作为信息显示,用来提示用户输入。

对话框标题:可选项。它是字符串表达式,显示对话框标题。如果省略,则把应用程序名放入标题栏中。

默认内容:可选项。它是字符串表达式,显示文本框中。在没有其他输入时作为默认值。如果省略,则文本框为空。

x坐标位置、y坐标位置:可选项。它是数值表达式,坐标确定对话框左上角在屏幕上的位置,屏幕左上角为坐标原点。

提示

① InputBox的返回值是一个字符串。如果需要将输入的数值参加算术运算,则必须在进行运算前用Val函数把它转换为数值类型。

② 每执行一次InputBox函数只能输入一个值,如果需要输入多个值,则必须多次调用InputBox函数。这时,通常与循环语句、数组结合使用。

③ 对话框显示的信息,若要分多行显示,必须加回车换行符,即VB系统常量vbCrLf。

4.输出语句

用Visual Basic.NET解决问题后,应将执行的结果显示给用户,这就需要进行数据的输出操作。在Visual Basic中,一般使用文本框、标签、MsgBox函数、MsgBox方法、Write方法、WriteLine方法等实现输出操作。Write和WriteLine方法将在后面介绍。

MsgBox用于输出数据,它会在屏幕上显示一个对话框。它可以向用户传递信息,并可通过用户在对话框上的选择接收用户所做的响应,作为程序继续执行的依据。

(1)MsgBox函数

MsgBox函数作用:打开一个信息框,在对话框中显示提示信息,等待用户选择一个按钮,并返回相应的整型值。MsgBoxResult的枚举值及含义见表3-1。

表3-1 MsgBox函数返回值MsgBoxResult的含义

MsgBox函数的一般形式为:

MsgBox(提示信息[,按钮][,标题])

其中:

提示信息:必选项。它是字符串表达式,作为在对话框中的信息显示。

按钮:可选项。它是一个枚举类型的MsgBoxStyle值,决定信息框按钮的数目、形式及出现在信息框上的图标类型,其设置见表3-2。

表3-2 “按钮”设置值及含义

标题:可选项。它是字符串表达式,作为对话框的标题。如果省略,则把应用程序名放入标题栏中。

提示:MsgBox函数作为函数调用,返回用户在对话框中所选的按钮值,通常用来作为继续执行程序的依据,根据该返回值决定其后的操作。

例如,下列程序当单击“数据验证”按钮时,在消息框中提供“是”和“否”两个按钮供用户选择,并显示询问信息图标。单击“是”表示正确,同时显示正确信息框,单击“否”表示不正确,并结束程序运行,界面如图3-3所示。程序代码如下。

图3-3 信息对话框

    Public Class Form1
      Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As
        System.EventArgs)Handles Button1.Click
        Dim IAs Integer
        i = MsgBox("确认数据是否正确?",MsgBoxStyle.YesNo + MsgBoxStyle.Question,
                  "数据验证")
        If i =  MsgBoxResult.Yes Then
          MsgBox("数据正确",,"数据验证")
        Else
          End
        End If
      End Sub
    End Class

提示

① 以下语句等价:

i = MsgBox("确认数据是否正确?", MsgBoxStyle.YesNo+MsgBoxStyle.Question, "数据验证")

i = MsgBox("确认数据是否正确?",vbYesNo+vbQuestion, "数据验证")

i = MsgBox("确认数据是否正确?", 4+32, "数据验证")

i = MsgBox("确认数据是否正确?", 36, "数据验证")

② 语句行:

If i = MsgBoxResult.Yes Then

等价于:

If i = 6 Then

为了使程序清晰易懂,推荐使用示例代码中给出的表示方法。

(2)MsgBox方法

MsgBox方法的一般形式为:

MsgBox(提示信息[,按钮][,标题])

其参数的意义与MsgBox函数相同。

MsgBox语句的作用是:打开一个信息框对话框,在对话框中显示消息,等待用户选择一个按钮,但不返回值。