1.52k likes | 1.71k Views
Visual Basic 程序设计基础. 计算机科学学院. 1. 关系运算与逻辑运算. 2. 选择结构程序设计. 第四章 控制结构程序设计. 选择控件 单分支条件语句 双分支条件语句 多分支条件语句 If 语句嵌套. 4. 关系运算符. 各个关系运算符的优先级是相同的 关系运算符可以对 数值、字符串 、 表达式 进行比较 关系运算的结果为 逻辑值. 思考题. 思考: x=6 ‘ 当 x=6 时,结果为 true 456=“456” ‘ 出错!类型不匹配
E N D
Visual Basic程序设计基础 计算机科学学院
1 关系运算与逻辑运算 2 选择结构程序设计 第四章 控制结构程序设计 • 选择控件 • 单分支条件语句 • 双分支条件语句 • 多分支条件语句 • If语句嵌套 4
关系运算符 • 各个关系运算符的优先级是相同的 • 关系运算符可以对数值、字符串、表达式进行比较 • 关系运算的结果为逻辑值
思考题 思考: • x=6 • ‘当x=6时,结果为true • 456=“456” • ‘出错!类型不匹配 • Sqr(2) ^ 2 = 2 • ‘False, Sqr(2) 是个近似数,有误差,所以不等 两个字符串进行比较:逐一比较每个字符的ASCII, 只有两个字符串中所有字符相同时,两字符串相等
非零为True 零为False 逻辑运算符 • 逻辑运算符可以对数值、表达式进行比较 • 逻辑运算的结果一般为逻辑值, 还可以是数值 Not 3 > 5 ‘true 3 > 5 And 4 >= 2 ‘false Not 3 > 5 Or 3 + 2 < 4 ‘true a <= x And x <= b ‘表示a≤x≤b 表示数学区间〔a,b〕内的x: a <= x And x <= b
00000000 00001100 And 00000000 00000111 00000000 00000100 00000000 00001100 Or 11111111 11111001 11111111 11111101 逻辑运算符 • 12 And 7 运算结果为:4 • 12 Or -7 运算结果为:-3 逻辑值参与逻辑运算,结果为逻辑值 数值数据参与逻辑运算,结果为数值(按位操作)
运算符的优先级 算术运算符>字符串运算符>关系运算符>逻辑运算符 & ^ -(负号) *, / \ Mod +,- 无 优 先 顺 序 Not And Or Xor 由高到低 例:设a=4,b=3,c=2,d=1, 表达式a>b+1Or c<d And b Mod c 的值 ?
1 关系运算与逻辑运算 2 选择结构程序设计 Contents • 选择控件 • 单行结构条件语句 • 块结构条件语句 • IIf函数 • If语句的嵌套 4
1 2 单选按钮 复选框 选择控件
True 为选中 False 为不选 单选按钮 OptionButton • 属性 • Caption : Option1、Option2… • Enabled • Value • 事件 • Click 表明从一组选项中选择一项,只能选中一项。
1-Checked 为选中 0-Unchecked 为不选 2-Grayed为 禁止操作(灰色) 复选框CheckBox 一组复选框,可以同时选中多个,也可以一个都不选 • 属性 • Caption : Check1、Check2… • Value • Alignment • 事件 • Click
框架Frame 框架控件Frame 框架用来对控件进行分组,即把指定的控件放到框架中。必须先画出框架,然后在框架内画出需要成为一组的控件,这样才能使框架内的控件成为一个整体,和框架一起移动。 • Caption : Frame1、Frame2… • Enable: False时,框架中所有对象均被屏蔽 框架上建立对象 1. 先建立框架对象; 2. 选中框架,在工具箱上单击预建立的对象; 3. 在框架上拖动鼠标进行绘制。
If语句 单行结构 条件语句 块结构 条件语句 选择结构 • 根据判断条件的真假来选择执行不同的分支 如何来表示条件? 实现选择结构用什么语句? 关系表达式或逻辑表达式 If语句或select case语句
表达式 F T 语句组1 语句组2 单行结构条件语句 语句的各部分均在同一行上,又称为行IF语句。 双分支选择 IF <条件> Then <语句组1> Else <语句组2> 注意:<条件>表达式值按非零为True,零为False进行判断
单分支选择: False x < y True t = x x = y y = t IF <条件> Then <语句组> 单行结构条件语句 If x<y Then t = x: x = y: y = t
表达式 F T False 语句组1 语句组2 x < y True t = x x = y y = t 块结构条件语句 单分支和双分支选择的块形式 If <条件> Then <语句组1> Else <语句组2> End If If <条件> Then <语句组> End If
条件语句 tan(x+1) + 3x2 (x = 0) y = 计算分段函数 sin x - x3 + x (x ≠ 0) If x<>0Then y = sin(x) – x^3 + x Else y =tan(x+1) + 3 * x^2 End If
a=3:b=2 ifa>b then msgbox “a大于b” Else msgbox “a小于b” End if 条件语句
条件语句 a=3:b=2:c=1 ifa>band a>c then msgbox “a最大” End if 20
条件语句 a=3:b=2:c=1 ifa>band a>c then msgbox “a最大” Else msgbox “a不是最大” End if 21
条件语句 Dim str as string str=“C” If str>=“A”and str<=“Z”then msgbox “str是大写字母” Else msgbox “str不是大写字母” endif
If 条件1 F ElseIf 条件2 F ElseIf T 条件n F Else T Then Then T Then 语句块1 语句块2 语句块n 语句块n+1 块结构条件语句 IF条件语句使用块形式,常用于对多个条件进行判断,提供了更强的结构化与适应性,并且通常也是比较容易阅读、维护及调试。
块结构条件语句 If a>100 then print “a大于100” Elseif a>50 then print “a大于50,小于100” Elseif a>10 then print “a大于10,小于50” Else print “a小于等于10” End if
条件语句 Dim str as string str=“C” If str>=“A”and str<=“Z”then msgbox “str是大写字母” Else if str>=“a”and str<=“z”then msgbox “str是小写字母” Else msgbox “str不是字母” endif
条件语句 • 已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其它字符,并作相应的显示 IfUcase(strC) >= "A" And Ucase(strC) <="Z"Then Print strC + "是字母字符" ElseIfstrC >="0" And strC <= "9" Then Print strC + "是数字字符" Else Print strC + "是其它字符" End If
程序的基本组成 • 程序设计的一般步骤: • 1分析:问题定义 • 2设计:设计解题步骤-算法 • 3选择与创建界面 • 4编码:用程序设计语言描述-写程序 • 5测试与调度:改错 • 6完成文档:整理和组织描述程序的所有资料
开始 dim max as single dim min as single max=val(text1.text) min=val(text2.text) F max<min? T max=min Label3.Caption = "较大值为" & max 结束 If语句 • 任务1 输入两个数,输出较大的数。 • 编写代码: Private Sub Command1_Click() Dim max As Single Dim min As Single max = Val(Text1.Text) min = Val(Text2.Text) If max < min Then max = min End If Label3.Caption = "较大值为" & max End Sub Dim max As Single Dim min As Single max = Val(Text1.Text) min = Val(Text2.Text) If max < min Then max = min Label3.Caption = "较大值为" & max If max < min Then max = min 注意: • 块if语句中的end if能否省略? 注意: • 块if语句中的end if能否省略? • 将块if语句改为单行if语句怎么改?
T F 用户名和口 令正确吗? 显示"欢迎" 消息框 显示"错误" 消息框 If语句 • 任务2 编写一个程序,实现当用户输入的用户名和口令都正确时显示"欢迎登录"的消息对话框,当用户名或口令有错误时显示消息对话框报告错误。(假设用户名为SYL,密码为“123456”)
If语句 • 任务2 编写一个程序,实现当用户输入的用户名和口令都正确时显示"欢迎登录"的消息对话框,当用户名或口令有错误时显示消息对话框报告错误。 • 编写代码: • Private Sub Command1_Click() • Dim user As String • Dim psw As String • user = Text1.Text • psw = Text2.Text • End Sub Ifuser ="SYL" And psw = "123456" Then MsgBox ("欢迎您登录本系统!") Else MsgBox ("您的用户名或口令有误,请重新输入!") End If
If ElseIf 不被4整除 F ElseIf F 不被100整除 T 被400整除 Else F T Then Then T Then 不是闰年 是闰年 是闰年 不是闰年 课堂练习 • 判断某一年是否是闰年。闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除; ②能被400整除
练习 Dim Year%, leap As Boolean Year = Val(InputBox("Input year")) If Year Mod 4 <> 0Then leap = False ElseIfYear Mod 100 <> 0Then leap = True ElseIf Year Mod 400 = 0Then leap = True Else leap = False End If
IIf( )函数 • 变量=IIf( 表达式, 当条件为真的值, 当条件为假的值) Dim intX%, intY%, intMax% intX= 15 intY = 10 intMax = IIf( intX > intY, intX , intY) Print intMax If intX > intY Then intMax = intX Else intMax = intY End If
IIf( )函数 IIf(条件, 表达式1, 表达式2) If user ="SYL" And psw = "123456" Then MsgBox ("正确!") Else MsgBox ("错误!") End If MsgBox IIf(user = "SYL" And psw = "123456", "正确!", "错误!") IIf(user = "SYL" And psw = "123456", MsgBox("正确!"),MsgBox("错误!"))
If语句 • 任务3 编写一个程序,根据用户输入的某个学生的成绩评出优、良好、中等、及格和不及个五个等级。
不及格score<60 及格 60≤score<70 中等 70≤score<80 良好 80≤score<90 优 score≥90 等级 If语句 • 任务3 编写一个程序,根据用户输入的某个学生的成绩评出优、良好、中等、及格和不及个五个等级。判断标准如下:
If语句 T • 编写代码: • Private Sub Command1_Click() • Dim score As Single • Dim s As String • score = Val(Text1.Text) • End Sub If score < 60 Then s = "不及格" ElseIf score < 70 Then s = "及格" ElseIf score < 80 Then s = "中等" ElseIf score < 90 Then s = "良好" Else s = "优" End If Text2.Text = s
If语句 • 任务4 学校对学习成绩优良的同学给予奖励,只要满足以下条件之一就可以获得奖励: • 所考语文、数学和英语总分在285以上; • 每门课的成绩都在90分以上; • 语文和数学的成绩为100分,英语在80分以上。 • 界面设计:
If语句 T • 任务4 学校对学习成绩优良的同学给予奖励。 • 编写代码: • Private Sub Command1_Click() • Dim a As Single, b As Single, c As Single • a = Val(Text1.Text):b = Val(Text2.Text):c = Val(Text3.Text) • If a + b + c >= 285 Then • Label4.Caption = "可以获奖!" • ElseIf a >= 90 And b >= 90 And c >= 90 Then • Label4.Caption = "可以获奖!" • ElseIf a = 100 And b = 100 And c >= 80 Then • Label4.Caption = "可以获奖!" • Else • Label4.Caption = "不可获奖!" • End If • End Sub 能改成下面的代码吗? If a + b + c >= 285 or a >= 90 And b >= 90 And c >= 90 or _ a = 100 And b = 100 And c >= 80 Then Label4.Caption = "不可获奖!" End If
IF语句的嵌套 If a>100 then If b>100 then Print “a,b均大于100” endif Endif
【例】征兵条件:男性18~20岁,1.65米以上;女性16~18岁,1.60米以上,要求:从键盘输入一个人信息,判断是否符号条件【例】征兵条件:男性18~20岁,1.65米以上;女性16~18岁,1.60米以上,要求:从键盘输入一个人信息,判断是否符号条件 If 性别 = “男” Then ‘为男性 If 年龄 >= 18 And 年龄 <= 20 Then If 身高 >= 1.65 Then Print "合格" End If End If Else ‘为女性 If 年龄 >= 16 And 年龄 <= 18 Then If 身高 >= 1.6 Then Print "合格" End If End If End If 例题
IF语句的嵌套 • 比较x,y,z的大小,并进行调整,使得x>y>z • 效果: X > Y > Z • X Y if(x<y) 交换x,y • X > Y Z
y<z False True 交换y和z x<y False True 交换x和y IF语句的嵌套 比较x,y,z的大小,并进行调整 使得x>y>z If x < y Then t = x: x = y: y = t EndIf If y<z Then t = y: y = z: z = t If x < y Then t = x: x = y: y = t End If End If
If语句 • 任务5 编写一个程序,让用户输入三个数判并断该三个数能否组成一个直角三角形。 • 分析: • 本题根据用户输入的三个数,判断它们能否组成一个直角三角形。程序中有三个输入量(即输入的三个数)和一个输出量(即能否组成一个直角三角形)。故可以用三个文本框来接受用户输入的三个数,一个标签框来显示判断结果。 • 界面设计:
Label4. Caption= " " Label4. Caption= " " a ^ 2 = b ^ 2 + c ^ 2 Or b ^ 2 = a ^ 2 + c ^ 2 Or c ^ 2 = a ^ 2 + b ^ 2 a + b > c And a + c > b And b + c > a Label4. Caption= " " T F 三角形? T F 输出判断结果 直角三角形? 输出判断结果 输出判断结果 If语句 T • 任务5 编写一个程序,让用户输入三个数判并断该三个数能否组成一个直角三角形。 • 编写代码: • Private Sub Command1_Click() • Dim a, b, c As Single • a = Val(Text1.Text): b = Val(Text2.Text): c = Val(Text3.Text) • End Sub If a + b > c And a + c > b And b + c > a Then If a ^ 2 = b ^ 2 + c ^ 2 Or b ^ 2 = a ^ 2 + c ^ 2 Or c ^ 2 = a ^ 2 + b ^ 2 Then Label4. Caption= "可以构造一个直角三角形 " Else Label4. Caption= "可以构造一个非直角三角形" End If Else Label4. Caption= "不可以构造一个三角形 " End If
小结 • 单行结构:If <条件>Then <语句组> • 块结构: If <条件> Then <语句组> End If
表达式 F T 语句组1 语句组2 双分支条件语句 • 块结构: If <条件> Then <语句组1> Else <语句组2> End If • 单行结构: If <条件> Then <语句1> Else <语句2>
If 条件1 F ElseIf 条件2 F ElseIf T 条件n F Else T Then Then T Then 语句块1 语句块2 语句块n 语句块n+1 多分支条件语句——块IF语句
If嵌套 • If <条件1> Then If <条件2> Then … If <条件n> Then <语句组n> End If … <语句组2> End If <语句组1> End If
1 3 关系运算与逻辑运算 多分支结构程序设计 2 选择结构程序设计 第四章 控制结构程序设计 4