1、04 比较和逻辑运算比较和逻辑运算 程序设计基础 2 home back first prev next last 本节目标本节目标 比较运算符比较运算符 逻辑运算符逻辑运算符 程序的控制结构程序的控制结构 顺序结构顺序结构 循环结构循环结构 分支结构分支结构 3 home back first prev next last 比较两个数大小比较两个数大小 用户输入两个数,计算并输出两个数中的较用户输入两个数,计算并输出两个数中的较 大者。大者。 4 home back first prev next last 布尔量布尔量 只有两个截然相反取值的情况在数学及电子只有两个截然相反取值的情况在数学
2、及电子 技术中称为布尔量或逻辑量,布尔量的取值技术中称为布尔量或逻辑量,布尔量的取值 称为布尔值。称为布尔值。 布尔值只有两种可能的取值,常见表示方式布尔值只有两种可能的取值,常见表示方式 True/False,真,真/假,成立假,成立/不成立,不成立,0/1 布尔值之间的运算称为逻辑运算布尔值之间的运算称为逻辑运算 日常生活中,便存在很多使用布尔量的例子,日常生活中,便存在很多使用布尔量的例子, 如判断题,只有对或错如判断题,只有对或错 5 home back first prev next last 比较运算符比较运算符 比较运算符有三个,如右图比较运算符有三个,如右图 可比较两个数的大小
3、,每个数可以是常量或变可比较两个数的大小,每个数可以是常量或变 量量 比较结果为布尔量:要么为真,要么为假比较结果为布尔量:要么为真,要么为假 不仅数字可以比较,字符串也可以比较,按字不仅数字可以比较,字符串也可以比较,按字 典顺序,排在前面的小于排在后面的,如典顺序,排在前面的小于排在后面的,如B大大 于于A 6 home back first prev next last 逻辑运算符逻辑运算符 逻辑运算符有三个逻辑运算符有三个 “与”运算“与”运算 两个条件都为真,结果为真,否则结果为假两个条件都为真,结果为真,否则结果为假 “或”运算“或”运算 两个条件只要有一个为真,结果为真,否则结果
4、为两个条件只要有一个为真,结果为真,否则结果为 假假 “非”运算,也叫“取反”“非”运算,也叫“取反” 条件为真,取反后为假;条件为假,取反后为真;条件为真,取反后为假;条件为假,取反后为真; 7 home back first prev next last 条件条件 比较运算和逻辑运算的结果都是布尔量比较运算和逻辑运算的结果都是布尔量 布尔量可以作为判断的条件,用在控制结构布尔量可以作为判断的条件,用在控制结构 中中,改变程序的执行顺序改变程序的执行顺序 当条件满足时,执行这组操作,当条件不满足当条件满足时,执行这组操作,当条件不满足 时,执行另外一组操作时,执行另外一组操作 8 home
5、back first prev next last 程序的控制结构程序的控制结构 5-1 顺序结构顺序结构 顺序结构的程序设计是最简单的,只要按照解顺序结构的程序设计是最简单的,只要按照解 决问题的顺序写出相应的语句就行,它的执行决问题的顺序写出相应的语句就行,它的执行 顺序是自上而下,依次执行。顺序是自上而下,依次执行。 9 home back first prev next last 程序的控制结构程序的控制结构 5-2 循环结构循环结构 循环结构可以减少源程序重复书写的工作量,循环结构可以减少源程序重复书写的工作量, 用来描述重复执行某段算法的问题,这是程序用来描述重复执行某段算法的问题
6、,这是程序 设计中最能发挥计算机特长的程序结构设计中最能发挥计算机特长的程序结构 。 10 home back first prev next last 程序的控制结构程序的控制结构 5-3 分支结构分支结构 对于要先做判断再选择的问题就要使用分支结对于要先做判断再选择的问题就要使用分支结 构。构。 分支结构的执行是依据一定的条件选择执行路分支结构的执行是依据一定的条件选择执行路 径,而不是严格按照语句出现的物理顺序。径,而不是严格按照语句出现的物理顺序。 11 home back first prev next last 程序的控制结构程序的控制结构 5-4 分支结构分支结构 分支结构的程序
7、设计方法的关键在于构造合适分支结构的程序设计方法的关键在于构造合适 的分支条件和分析程序流程,根据不同的程序的分支条件和分析程序流程,根据不同的程序 流程选择适当的分支语句。流程选择适当的分支语句。 分支结构适合于带有逻辑或关系比较等条件判分支结构适合于带有逻辑或关系比较等条件判 断的计算,设计这类程序时往往都要先绘制其断的计算,设计这类程序时往往都要先绘制其 程序流程图,然后根据程序流程写出源程序,程序流程图,然后根据程序流程写出源程序, 这样做把程序设计分析与语言分开,使得问题这样做把程序设计分析与语言分开,使得问题 简单化,易于理解。简单化,易于理解。 介绍流程图画法和读法介绍流程图画法
8、和读法 12 home back first prev next last 程序的控制结构程序的控制结构 5-5 顺序结构、分支结构和循环结构并不彼此孤顺序结构、分支结构和循环结构并不彼此孤 立的,在循环中可以有分支、顺序结构,分立的,在循环中可以有分支、顺序结构,分 支中也可以有循环、顺序结构支中也可以有循环、顺序结构 在实际编程过程中常将这三种结构相互结合在实际编程过程中常将这三种结构相互结合 以实现各种算法,设计出相应程序以实现各种算法,设计出相应程序 13 home back first prev next last 平年闰年算法平年闰年算法 4-1 年份如果不能够被年份如果不能够被4
9、整除,肯定是平年。年份如果整除,肯定是平年。年份如果 能够被能够被4整除,通常就是闰年。但是有个例外,就整除,通常就是闰年。但是有个例外,就 是如果年份也能够被是如果年份也能够被100整除,就不再是闰年。年整除,就不再是闰年。年 份能够被份能够被100整除,通常是平年,但也有个例外,整除,通常是平年,但也有个例外, 就是如果年份还可以被就是如果年份还可以被400整除,那么年份就又是整除,那么年份就又是 闰年了。简单的说就是四年一闰,百年不闰,四闰年了。简单的说就是四年一闰,百年不闰,四 百年再闰。百年再闰。 编一个程序,判断输入的年份是平年还是闰年。编一个程序,判断输入的年份是平年还是闰年。
10、如果你的程序说:如果你的程序说:2000年是闰年、年是闰年、2004年是闰年,年是闰年, 1900年是平年,你的程序才有可能是正确的。年是平年,你的程序才有可能是正确的。 14 home back first prev next last 平年闰年算法平年闰年算法 4-2 15 home back first prev next last 平年闰年算法平年闰年算法 4-3 16 home back first prev next last 平年闰年算法平年闰年算法 4-4 17 home back first prev next last 注意事项注意事项 考虑全面,不要遗漏任何分支考虑全面,
11、不要遗漏任何分支 分类标准统一,严格,不要有重叠和交叉分类标准统一,严格,不要有重叠和交叉 分类判断时要有一个清晰的思路和方向,比分类判断时要有一个清晰的思路和方向,比 如从如从4整除、整除、100整除到整除到400整除,或者从整除,或者从400 整除、整除、100整除到整除到4整除整除 可用排除法,一类一类去排除。可用排除法,一类一类去排除。 18 home back first prev next last 常见问题常见问题 4-1 遗漏分支处理遗漏分支处理 19 home back first prev next last 常见问题常见问题 4-2 重复判断:一个数如果既被重复判断:一个
12、数如果既被4整除又被整除又被100整整 除,程序先输出平年,再输出闰年除,程序先输出平年,再输出闰年 20 home back first prev next last 常见问题常见问题 4-3 思路混乱思路混乱 第一个条件不成立的原因可能是不被第一个条件不成立的原因可能是不被4整除,也可能是不被整除,也可能是不被400整整 除,还得继续判断。不被除,还得继续判断。不被400整除的情况又比较多,此种思路比较整除的情况又比较多,此种思路比较 混乱,易于出错混乱,易于出错 能被能被400整除,就肯定可以被整除,就肯定可以被4整除,所以“可以被整除,所以“可以被4整除”是多余整除”是多余 的,徒增复杂性的,徒增复杂性 21 home back first prev next last 常见问题常见问题 4-4 类型不对,图块不能结合类型不对,图块不能结合 条件需要布尔量,而余数是和数字,类型不对,条件需要布尔量,而余数是和数字,类型不对, 应放入比较运算符中应放入比较运算符中 整除判断方法不对整除判断方法不对 22 home back first prev next last 总结总结 比较运算符比较运算符 逻辑运算符逻辑运算符 程序的控制结构程序的控制结构 顺序结构顺序结构 循环结构循环结构 分支结构分支结构 程序注释程序注释