Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月
第3章 顺序结构程序设计 1 数据输出 1.直接输出到窗体 使用Print方法 : 其语法格式为 第3章 顺序结构程序设计 1 数据输出 1.直接输出到窗体 使用Print方法 : 其语法格式为 [〈对象名称〉.] Print [〈表达式列表〉] [{, | ;}] 【例3-1】使用Print方法在窗体中直接输出字符串或数值表达式的值,如图3-1所示。 设计步骤如下。 (1) 建立应用程序用户界面。 选择“新建”工程,进入到窗体设计器,并在窗体中增加一个命令按钮Command1,如图3-2所示。 (2) 设置对象属性,见表3-1。
图3-1 使用Print方法 图3-2 建立程序界面 表3-1 属性设置 对 象 属 性 属性值 说 明 Command1 Caption 表3-1 属性设置 对 象 属 性 属性值 说 明 Command1 Caption 欢迎 按钮的标题
(3) 设计代码 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() Print Print "2 * 3 + 4 ="; 2 * 3 + 4 ' 使用“;”分割符 Print "欢迎学习" Print , "Visual" ' 使用“,”分割符 Print , , "Baisc" ' 使用两个“,”分割符 Print " 欢迎学习", ' 在行末使用“,”分割符 Print "Visual"; " Baisc“ End Sub
2.与Print方法有关的函数 Tab函数 其格式为:Tab(〈n〉) 例如:Print Tab(10);"姓名";Tab(30);"年龄" (2) Spc函数。 其格式为:Spc(〈n〉) 例如:Print "ABC";Spc(5);"DEF" ' 输出:ABC DFE
【例3-2】在上例中使用Tab函数与Spc函数。 只需改写命令按钮的Click事件代码: Private Sub Command1_Click() Print Print Tab(5); "2 * 3 + 4 ="; 2 * 3 + 4 Print Tab(6); "欢迎学习"; Tab(17); "Visual Baisc" Print Tab(7); "欢迎学习"; Spc(3); "Visual"; Spc(2); "Baisc" End Sub
3.使用位置属性 【例3-3】下面程序按指定尺寸、颜色和外观,把文本输出到窗体的中间。 设计步骤如下: (1) 建立应用程序用户界面与对象属性的设置参见例3-1。 (2) 编写命令按钮的Click事件代码: Private Sub Command1_Click() Dim a As String, textW As Integer, textH As Integer FontName = "隶书" ' 输出文本的字体 FontSize = 60 ' 输出字体的大小
ForeColor = QBColor(15) ' 输出文本的前景色,即字体的颜色 BackColor = QBColor(8) ' 输出文本的背景色,即窗体的颜色 a = "你好" ' 输出文本的内容 textW = TextWidth(a) / 2 ' 文本的宽度TextWidth(a) textH = TextHeight(a) – Command1.Height / 2 CurrentX = ScaleWidth / 2 – textW ' 设置输出的水平位置 CurrentY = ScaleHeight / 2 – textH ' 设置输出的垂直位置 Print a ' 输出文本 End Sub
4. 清除方法CLS 【例3-4】在上例中使用Cls方法清除窗体中由Print方法所生成的文本,如图3-5所 只需在上例中增加命令按钮Command2(清除),并且编写其Click事件代码: Private Sub Command2_Click() Cls End Sub
【例3-5】使用Print方法在图片框中输出字符串或数值表达式的值。 设计步骤如下: 输出文本到图片框 【例3-5】使用Print方法在图片框中输出字符串或数值表达式的值。 设计步骤如下: (1) 建立应用程序用户界面。选择“新建”工程,进入窗体设计器,在窗体中增加一个图片框Picture1和一个命令按钮Command1。 (2) 设置对象属性 对 象 属 性 属性值 说 明 Picture1 BackColor (白色) 图片框的背景色 Command1 Caption 欢迎 按钮的标题
(3) 设计代码。 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() Picture1.Print Picture1.Print Tab(2); "2 * 3 + 4 ="; 2 * 3 + 4 Picture1.Print Tab(3); "欢迎学习"; Tab(17); "Visual Baisc" Picture1.Print Tab(4); "欢迎学习"; Spc(3); "Visual"; Spc(2); "Baisc" End Sub
【例3-6】在图片框中使用位置函数。 设计步骤如下。 (1) 建立应用程序用户界面与对象属性 (2) 编写命令按钮的Click事件代码: Private Sub Command1_Click() Dim a As String, textW As Integer, textH As Integer Picture1.FontName = "隶书" Picture1.FontSize = 40 Picture1.ForeColor = QBColor(15) Picture1.BackColor = QBColor(8)
a = "你好" textW = Picture1.TextWidth(a) / 2 ' 文本的宽度TextWidth(a) textH = Picture1.TextHeight(a) / 2 Picture1.CurrentX = Picture1.Width / 2 – textW ' 窗体的宽度属性ScaleWidth Picture1.CurrentY = Picture1.Height / 2 – textH ' 设置垂直位置为从顶部往下50twips Picture1.Print a End Sub
3. 使用“标签”控件的输出 【例3-7】有框和无框的标签 设计步骤如下。 (1) 建立应用程序用户界面。选择“新建”工程,进入窗体设计器,增加一个命令按钮Command1、两个标签Label1和Label2。如图3-9左。 (2) 设置对象属性,见表3-3。如图3-9右。 (3) 编写程序代码。 编写命令按钮Command1的单击(Click)事件代码: Private Sub Command1_Click() Label1.Caption = "运行时改变标签的标题" End Sub
图3-9 建立界面与设置属性 表3-3 属性设置 对象 属性 属性值 说明 Label2 &H800000 Command1 Label1 图3-9 建立界面与设置属性 表3-3 属性设置 对象 属性 属性值 说明 Command1 Caption 改变(&G) 按钮的标题 Label1 设计时设置的标签内容 标签的内容 Alignment 2 – Center 标签的内容居中显示 Label2 BorderStyle 1– Fixed Single 有边框的标签 BackColor &H800000 标签的背景改为白色
【例3-8】在上例中修改标签的属性,使之自动改变尺寸以适应其内容 只需在上例中修改Label2的属性设置,并且修改Command1的Click事件代码: Private Sub Command1_Click() Label1.Caption = "运行时改变标签的标题" Label2.Caption = " 对于一个较长的或在运行时可能变化的标题,标签控件提供了两" & _ "种属性:AutoSize和WordWrap来改变控件尺寸以适应较长或较短的标题。" End Sub
2 基本语句 赋值语句LET 赋值语句的一般格式为:[Let]〈名称〉=〈表达式〉 【例3-9】交换两个变量中的数据。 设计步骤如下: 建立应用程序用户界面。选择“新建”工程,进入窗体设计器,增加一个命令按钮Command1、4个标签Label1~Label4。如图3-14左 (2) 设置对象属性, (3) 编写程序代码。 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() t = Label3.Caption Label3.Caption = Label4.Caption Label4.Caption = t End Sub
2.卸载对象与结束程序 Unload语句 Unload语句的语法格式为:Unload 对象名 【例3-10】在例3-9中使用命令关闭程序窗体。 设计步骤如下: 只需在上例中增加一个命令按钮Command2(关闭),并且编写Command2的Click事件代码: Private Sub Command2_Click() Unload Me End Sub
3. 注释与暂停 注释语句 语法格式为: Rem〈注释内容〉或'〈注释内容 例如:s = pi * r ^ 2 '计算圆的面积 v = 4 / 3 * pi * r ^ 3 : Rem 计算球的体积 2. 暂停语句 其语法格式为:Stop
3 数据输入 1. 使用文本框控件 【例3-11】输入球体的半径,然后计算并输出球体的体积和表面积。 分析:设球的半径为r,球体积和球表面积分别为:v和f,依题义可得计算公式: 、 设计步骤如下: (1) 建立应用程序用户界面。 选择“新建”工程,进入窗体设计器,增加两个命令按钮Command1~Command2、3个标签Label1~Label3和3个文本框Text1~Text3。
编写程序代码。 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() Dim r As Single, v As Single, f As Single Const pi = 3.14159 r = Val(Text1.Text) v = 4 / 3 * pi * r ^ 3 : f = 4 * pi * r ^ 2 Text2.Text = v : Text3.Text = f End Sub 编写命令按钮Command2的Click事件代码: Private Sub Command2_Click() Unload Me
【例3-12】设某职工应发工资x元,试求 各种票额钞票总张数最少的付款方案。 分析:可以从最大的票额(100元)开 始,算出所需的张数,然后在剩下的部分 算出较小票额的张数,直到最小票额(1 元)。 设计步骤如下: (1) 建立应用程序用户界面。 选择“新建”工程,进入窗体设计器, 增加一个命令按钮Command1、14个标签 Label1~Label14、7个文本框Text1~Text7。 (2) 设置对象属性。
编写程序代码。 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() x = Val(Text1.Text) ' x为实发工资数 y = x \ 100 : Text2.Text = y ' 求百元票张数并显示 x = x – 100 * y ' 求剩余款项 y = x \ 50 : Text3.Text = y ' 求五十元票张数并显示 x = x – 50 * y ' 求剩余款项 y = x \ 10 : Text4.Text = y ' 求十元票张数并显示 x = x – 10 * y ' 求剩余款项 y = x \ 5 : Text5.Text = y ' 求五元票张数并显示
x = x – 5 * y ' 求剩余款项 y = x \ 2 : Text6.Text = y ' 求二元票张数并显示 x = x – 2 * y : Text7.Text = x ' 求一元票张数并显示 End Sub 编写文本框Text1的Change事件代码: Private Sub Text1_Change() Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Text7.Text = "“
使用焦点 在程序运行的时候,用户可以按下列方法改变焦点: l 用鼠标单击对象。 l 按Tab键或〈Shift〉+〈Tab〉在当前窗体的各对象之间巡回移动焦点。 按热键选择对象。
使用对话框 4 1.显示信息——信息对话框(MsgBox) 【例3-14】使用信息对话框输出各种票额钞票张数的付款方案 只需将例3-12的窗体中多余的文本框和标签删去,并改写命令按钮的Click事件代码 Private Sub Command1_Click() x = val(Text1.Text) ' x为实发工资数 Y1 = x \ 100 ' 求百元票张数 x = x Mod 100 ' 求剩余款项 Y2 = x \ 50 ' 求五十元票张数
x = x Mod 50 ' 求剩余款项 Y3 = x \ 10 ' 求十元票张数 x = x Mod 10 ' 求剩余款项 Y4 = x \ 5 ' 求五元票张数 x = x Mod 5 ' 求剩余款项 Y5 = x \ 2 ' 求二元票张数 x = x Mod 2 ' 求一元票张数
Text1.SetFocus a = "===========================" & Chr(13) a = a & Format(Y1 & "张 百元票,", "@@@@@@@@@@") & _ Format(Y2 & "张 50元票", "@@@@@@@@@@") & Chr(13) a = a & Format(Y3 & "张 10元票,", "@@@@@@@@@@@") & _ Format(Y4 & "张 5元票", "@@@@@@@@@@") & Chr(13) a = a & Format(Y5 & "张 2元票,", "@@@@@@@@@@@") & _ Format(x & "张 1元票", "@@@@@@@@@@") & Chr(13) a = a & "===========================" & Chr(13) a = a & "共计" & Text1.Text & "元" c = MsgBox(a, 0, "应发工资") End Sub
2.输入数据——输入框(InputBox) 其语法格式为: 变量 = InputBox(〈信息内容〉[,〈对话框标题〉][,〈默认内容〉]) 【例3-15】编制华氏温度和摄氏温度相互转换的程序。利用输入框输入温度. 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 选择“新建”工程,进入窗体设计器,增加两个命令按钮Command1~Command2和一个标签Label1。其属性的设置参见图3-26
图3-26 温度的转换
(2) 编写事件代码。 编写“摄氏转华氏”命令按钮Command1的Click事件代码: Private Sub Command1_Click() c = Val(InputBox("请输入摄氏温度值:", "摄氏转华氏", 0)) f = 32 + 9 * c / 5 Label1.Caption = "摄氏" & c & "度 = 华氏" & Format(f, "####.##") & "度" End Sub
编写“华氏转摄氏”命令按钮Command2的 Click事件代码: Private Sub Command2_Click() f = Val(InputBox("请输入华氏温度值:", "华 氏转摄氏", 0)) c = 5 * (f – 32) / 9 Label1.Caption = "华氏" & f & "度 = 摄氏" & Format(c, "####.##") & "度" End Sub
【例3-16】“鸡兔同笼”问题。鸡有2只脚,兔有4只脚,如果已知鸡和兔的总头数为h,总脚数为f。问笼中鸡和兔各有多少只?如图3-27所示。 图3-27 “鸡兔同笼”问题
分析:设笼中有鸡x只,兔y只,由条件可 得方程组{x+y=h 解方程组得 设计步骤如下: (1) 建立程序界面与设置对象属性。 选择“新建”工程,进入窗体设计器, 首先增加3个标签Label1~label3和一个命 令按钮Command1。其属性设置参见图3- 27。
(2) 编写程序代码。 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() Dim h As Integer, f As Integer h = Val(InputBox("鸡和兔的总头数", "请输入", 0)) f = Val(InputBox("鸡和兔的总脚数(偶数)", "请输入", 0)) x = (4 * h – f) / 2 y = (f – 2 * h) / 2 Label2.Caption = " 设笼中鸡和兔的总头数为" & h & ", 总脚数为" & f & "。" Label3.Caption = " 则笼中鸡有" & x & "只,兔有" & y & "只。" End Sub
习题三 以下各章习题均要求先写出流程图,然后根据流程图写出程序。 3.1 顺序结构的特点是什么?请举一个生活中符合顺序结构的例子,并且用流程图描述之。 3.2 下列哪组语句可以将变量A、B的值互换? (1) A = B : B = A (2) A = A + B : B = A – B : A = A – B (3) A = C : C = B : B = A (4) A = (A + B) / 2 : B = (A – B ) / 2
3.3 理解Top、Left与BackStyle属性。 利用标签制作阴影文字效果。如图3-29(左)所示程序启动后,在窗体上显示出不带阴影的文字“喜迎千禧年”。单击“效果1”按钮后文字出现黑色的阴影,如图3-29(中)所示。单击“效果2”按钮后文字阴影的间距加大,如图3-29(右)所示。 图3-29 阴影文字效果
3.4 向一个RC串联电路充电,电容上的电压为: U0为直流电源的电压。求在t = 1s时(R = 500kΩ,C = 10μf )U / U0的值。 3.5 理解大小写转换函数。 在文本框中输入英文字母,按“转大写”按钮,文本变为大写,按“转小写”按钮,文本变为小写。 3.6 在文本框中输入3种商品的单价、购买数量,计算并输出所用的总金额。 3.7 在文本框中输入小时、分、秒,化成共有多少秒,然后输出之。
3.8 在文本框中输入弧度值,将弧度换算为角度值(度、分、秒)的形式,然后输出。 如弧度值为1.474919573,化为角度的方法为 (1) 先将弧度值变成十进制, 1.474919573×(180/π) = 84.50666665 (2) 去掉整数部分84,余0.50666665。 (3) 用0.50666665×60 = 30.399999。 (4) 去掉30,余0.399999。 (5) 用0.399999×60 = 23.99994 ≈ 24" (6) 最后将84、30、24拼接成84°30' 24"。)
3.9 在文本框中输入长、宽、高,求长方体的表面积,并输出 3.10 在习题3.4中使用对话框函数Msgbox()输出计算的结果。 3.11 在习题3.5中使用对话框函数Msgbox()输出转换结果。 3.12 在习题3.7中使用对话框函数InputBox()输入时间的小时、分钟、秒钟数。 3.13 编程序输出在指定范围内的3个随机数,范围在文本框中输入。