350 likes | 504 Views
第五讲: 顺序结构程序设计. 顺序结构程序设计基本概念:. 过程结构: 过程内部代码由三种基本结构组成 即: 顺序结构、选择结构、循环结构 顺序结构: 执行过程的次序从上到下,从左到右 例: Private Sub Command1_Click() Const Pi = 3.14 H = Val(Text1.Text) : R = Val(Text2.Text) Text3.Text = Pi * R ^ 2 * H
E N D
第五讲: 顺序结构程序设计
顺序结构程序设计基本概念: • 过程结构: 过程内部代码由三种基本结构组成 • 即: 顺序结构、选择结构、循环结构 • 顺序结构: 执行过程的次序从上到下,从左到右 • 例: Private Sub Command1_Click() • Const Pi = 3.14 • H = Val(Text1.Text) : R = Val(Text2.Text) • Text3.Text = Pi * R ^ 2 * H • End Sub
4.1 赋值语句 • 1. 格式 • <变量名>=<表达式> • 或: [<对象名>.]<属性名>=<表达式> • 2. 功能 • 计算表达式的值,再将此值赋给变量或对象属性。 3. 说明 (1) <变量名>: 应符合VB变量命名约定。 (2) <表达式>: 常量、变量、表达式。 (3) <对象名>: 缺省时为当前窗体。 (4) 赋值号“=”: 与数学中的等号意义不同。 例: X=X+1 (5) 赋值号左边必须是变量或对象属性。
例: X=1 • MyStr="Good Morning" • Command1.Caption="确定" • X+1=X ' 错误,赋值号左边是表达式 • (3) 变量名或对象属性名的类型应与表达式类型相容。 • 例: Dim A As Integer, B As Single • Dim C As Double, S As String • A = 100 ' 将整型数100赋给整型变量A • S = "123.45" ' 将字符串"123.45"赋给变量S • A = S ' 将数字字符串变量赋值给整型变量, • ' 变量A中存放123 • S = A ' S中存放字符串"123" • B = 12345.67 • A = B ' 高精度变量赋值给低精度变量, • ' 先四舍五入后取整, A中存放12346
C = 123456.789 • B = C ' 高精度变量赋值给低精度变量, • ' 变量B中存放123456.8。有效数字7位 • S = "abc" • A = S ' 错误,类型不匹配 • 例: 执行下列各赋值语句后,A的数据类型是什么? • (设A没有定义数据类型) • A = 6 = 5 • A = 5 + 3 • A = "5+3" • A = "#11/26/99#" • A = #11/26/1999# • A = Not 5 > 8 可以用TypeName函数判断变量的数据类型。 如:Print TypeName(A)
(4) 变量未赋值时,数值型变量值为0,字符串变量 • 值为空串""。 • 【例4-1】设变量A中存放5,变量B中存放8,交换两个变量的值,使变量A中存放8,变量B中存放5。 • 分析: 需要借助第三个变量C • 代码如下: • A = 5 • B = 8 • C = A • A = B • B = C
4.2 数据输入 • 赋值语句;输入框(InputBox);文本框(TextBox) • 4.2.1 用输入框(InputBox)输入数据 • 1. 格式 • InputBox(<提示信息>[,<对话框标题>][,<默认值>]) • 2. 功能 • 提示一对话框,等待用户输入正文或按下按钮, • 并返回包含文本框内容的字符串。 • <提示信息>: 字符串表达式。用Chr(13)、Chr(10)、 • Chr(13) & Chr(10)、vbCrLf可换行。 • <对话框标题>: 字符串表达式。 • <默认值>: 字符串表达式。如果省略,则默认为空。 • 函数返回值: 字符串(在对话框中单击取消则返回"")
例: Private Sub Form_Activate() Dim R As String, AREA As Single R = InputBox("请输入半径", "计算面积", "1") AREA = 3. 14 * Val(R) ^ 2 Print Val(R), AREA End Sub • 单击“确定”,返回文本框中的文本到变量R中 • 单击“取消”,返回一个零长度的字符串
4.2.2 用文本框(TextBox)输入数据 • 1. 文本框的属性 • (1) Text: 返回或设置文本框显示的内容。 • 例: Text1.Text = "欢迎使用Visual Basic" • (2) MultiLine: 决定是否可以显示多行文本。 • (3) PasswordChar: 常用于输入口令。 • 在文本框中键入字符显示为该指定的字符。 • (此时MultiLine属性值应为False) • (4) ScrollBars: 用于确定文本框是否带滚动条以及滚动条的方向。 • (仅当MultiLine属性值为True时才可以带滚动条)
(5) SelLength: 在运行期返回或设置选择的字符数。 • 例: Text1.SelLength=Len(Text1.Text) • 表示选中文本框Text1中所有字符。 • (6) SelStart: 在运行期返回或设置当前选择文本的起始位置。 • 例: Text1.SelStart=0 • 表示选择文本的起始位置从第一个字符开始。 • (7) Locked: 指定运行时文本框内容是否可以编辑。 • False—可以编辑 • True—不可编辑(只读)
Text1 Text2 Text3 Text4(设Locked为True) Command3 Command1 Command2 • 2. 文本框的事件和方法 • 事件: Change 、Click、DblClick、 • GotFocus、LostFocus、KeyPress等 • 方法: SetFocus • 【例4-2】设计如下图所示的界面,运行时,输入某同学三门课的成绩,计算平均成绩。按要求编程。
①单击“计算”按钮求平均成绩 Private Sub Command1_Click() A = Val(Text1.Text) B = Val(Text2.Text) C = Val(Text3.Text) Text4.Text = (A + B + C) / 3 End Sub
②当输入成绩的文本框获得焦点时,选中其中的文本②当输入成绩的文本框获得焦点时,选中其中的文本 Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text2_GotFocus() Text2.SelStart = 0 Text2.SelLength = Len(Text1.Text) End Sub Private Sub Text3_GotFocus() Text3.SelStart = 0 Text3.SelLength = Len(Text1.Text) End Sub
③当输入成绩的文本框内容发生变化时,清除平均值③当输入成绩的文本框内容发生变化时,清除平均值 Private Sub Text1_Change() Text4.Text = "" End Sub Private Sub Text2_Change() Text4.Text = "" End Sub Private Sub Text3_Change() Text4.Text = "" End Sub
④单击“清除”按钮清除所有文本框的内容,并将焦点定位在文本框Text2中。④单击“清除”按钮清除所有文本框的内容,并将焦点定位在文本框Text2中。 Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text1.SetFocus End Sub ⑤单击“退出”按钮结束程序的运行。 Private Sub Command3_Click() End End Sub
【例4-3】在窗体上建立一个文本框,将输入到文本框中的小写字母转换为大写。【例4-3】在窗体上建立一个文本框,将输入到文本框中的小写字母转换为大写。 • Private Sub Text1_KeyPress (KeyAscii As Integer) • Char = Chr(KeyAscii) • KeyAscii = Asc(UCase(Char)) • End Sub
4.2.3 焦点和Tab键序 • 1. 焦点 • 当前可以接收用户输入的对象称为具有焦点。 • 注意: 并非所有控件都可以接收焦点。而且, 只有Enable和Visible属性为True时,才可以接收焦点。 • 2. 事件 • GotFocus 发生在对象得到焦点时 • LostFocus 发生在对象失去焦点时 • 3. 对象何时得到焦点 • • 运行时选择对象(鼠标、Tab键、访问键) • • 在代码中使用SetFocus方法
2. Tab键序 • • 指按Tab键时光标在各个控件之间移动的顺序。 • • 每个窗体都有自己的Tab键序。 • • 默认键序与控件的建立次序一致。 • • TabIndex属性: 决定键序 • 改变TabIndex属性可以改变键序 • • TabStop属性: 决定是否能够使用 TAB 键将焦点移动到当前对象。
4.3 数据输出 • Print方法、消息框(MsgBox) 、文本框、标签 • 4.3.1 用Print方法输出数据 • 1. Print方法 • 格式: [<对象名>.]Print[<表达式表>][{;|,}] • <对象名>: 窗体 如 Form1.Print "Hello" • 图片框 如 Picture1.Print "Hello" • 打印机 如 Printer.Print "Hello" • 立即窗口 如 Debug .Print "Hello" • 省略: 默认为当前窗体。 • <表达式表>: 多个表达式使用逗号或分号隔开。 • 逗号: 以14个字符位置为单位把一个输出行分成若干区段。 • 分号: 后一项紧跟前一项输出。
输出时,数值型数据前有一个符号位(正号不显),后面留一个空格位;字符串原样输出,前后无空格。 • 例: Private Sub Form_Activate() • Print "12345678901234567890" • Print "2+4="; 2 + 4 • Print "2-4=", 2 - 4 • End Sub 例: Private Sub Form_Activate() Print "12345678901234567890" Print "2+4=";2 + 4, Print "2-4="; Print 2 - 4 End Sub
例: Private Sub Form_Load() • Form1.Show • Print "12345678901234567890" • Print ' 产生空行 • Print "2+4="; 2 + 4, • Print ' 取消上面一句末尾逗号的作用 • Print "2-4="; • Print 2 - 4 • End Sub 输入Print时可用?代替,VB将其自动转换成Print
4.3.2 用消息框(MsgBox)输出数据 • 格式: • MsgBox(<提示信息>[,<按钮类型>][,<对话框标题>]) • 功能: 在对话框中显示消息,等待用户单击按钮,并返回一个整数告诉用户单击了哪个按钮。 • <提示信息>: 字符串表达式。 • 用Chr(13)、Chr(10)、 • Chr(13) & Chr(10)、vbCrLf可换行。 • <按钮类型>: 数值型数据。 • 按钮类型+图标类型+默认按钮。见P58 • <对话框标题>: 字符串表达式。 • 返回值: 由在对话框中按下哪种按钮决定。见P59
例: <提示信息> Private Sub Command1_Click() A = MsgBox("提示信息") End Sub 例: <提示信息>换行 Private Sub Command1_Click() A=MsgBox("第一行" &Chr(13) & "第二行") End Sub
例: <对话框标题> Private Sub Command1_Click() A = MsgBox("提示信息", , "标题内容") End Sub 例: 按钮类型—0到5或符号常量 见P58 Private Sub Command1_Click() A = MsgBox("提示信息", 1, "标题内容") End Sub
例: 图标类型—16、32、48、64或符号常量 见P58 Private Sub Command1_Click() A = MsgBox("提示信息", 16, "标题内容") End Sub 例: 默认按钮—0,256,512 见P58 Private Sub Command1_Click() a = MsgBox("提示信息", 2 + 256, "标题内容") Print a End Sub 按回车打印4
Text1 Command1 Text2 • 4.3.3 用文本框(TextBox)输出数据 • 【例4-4】在Text1中输入任一英文字母,在Text2中显示该英文字母及其ASCII码值。要求在文本框Text2中显示出所有输入的英文字母及其ASCII码值
Text1 Command1 Text2 • 4.3.3 用文本框(TextBox)输出数据 • 【例4-4】在Text1中输入任一英文字母,在Text2中显示该英文字母及其ASCII码值。要求在文本框Text2中显示出所有输入的英文字母及其ASCII码值
4.3.4 用标签(Label)输出数据 • 1. 标签的属性 • (1) Caption: 标签的标题。 • (2) Alignment: 确定标签标题的对齐方式。 • (3) AutoSize: 确定标签是否随标题自动调整大小。 • (4) BorderStyle: 确定标签的边框。 • 0 —无边框;1— 有边框。 • (5) BackStyle: 指定背景是透明或不透明。 • 1—不透明;0—透明。
Label1 Command4 Command2 Command1 Command3 • 【例4-5】测试标签的边框样式和透明样式。 • 在窗体上放置一标签,显示“Visual Basic程序设计教程”,放置四个命令按钮,Command1放在Command2上,Command3放在Command4上。运行时,单击相应按钮,界面发生相应变化。
Private Sub Command1_Click() Label1.BorderStyle = 1 Command1.Visible = False Command2.Visible = True End Sub Private Sub Command2_Click() Label1.BorderStyle = 0 Command1.Visible = True Command2.Visible = False End Sub
Private Sub Command1_Click() Label1.BorderStyle = 1 Command1.Visible = False Command2.Visible = True End Sub Private Sub Command2_Click() Label1.BorderStyle = 0 Command1.Visible = True Command2.Visible = False End Sub
2. 标签的事件: Click、DblClick... • 例: Private Sub Label1_DblClick() • Label1.FontSize = Label1.FontSize + 10 • End Sub • 3. 标签的方法:Move • 格式: • [<对象名>.]Move <Left>[,[<top>][,[<width>][,<height>]]] • <left>: 指示对象左边的水平坐标(x-轴)。 • <top>: 指示对象顶边的垂直坐标(y-轴)。 • <width>: 指示对象新的宽度。 • <height>: 指示对象新的高度。 • 例: Private Sub Label1_Click() • Label1.Move Label1.Left + 50 • End Sub
4.4 注释、暂停与程序结束语句 • 1. 注释语句 • 格式: ' | Rem <注释内容> • 功能: 给语句或程序段加上注释,以提高可读性。 • 说明: Rem与 <注释内容>之间至少空一个空格。 • 例: • Private Sub Form_Click() • Rem 本程序用于计算圆的面积 • Dim R As String, AREA As Single ' R为半径 • R=InputBox("请输入半径", , "1") :Rem 输入半径 • AREA = 3.14 * Val(R) ^ 2 • '以下将半径和面积输出到窗体上 • Print Val(R), AREA • End Sub
2. 暂停语句 • 格式: Stop • 功能: 暂停程序的执行。 • 用于程序调试。类似于执行“运行”菜单中的“中断”命令 • 3. 结束语句 • 格式: End • 功能: 结束程序的执行。
赋值语句 输入 文本框 IntputBox函数 • 本章小结: 计算 赋值语句 标签 文本框 输出 Print语句 MsgBox函数