运算符表达式和流程控制.pptx
运算符、表达式和流程控制,NIIT培训 铸就辉煌IT人生,本章目标,运算符表达式分支语句循环语句递归,运算符,算术运算符:+,*,/,%,+,关系运算符:,=,赋值运算符:=扩展赋值运算符:+=,=,*=,/=字符串连接运算符:+条件运算符:?:,逻辑运算符,逻辑运算符功能!-逻辑非&-逻辑与|-逻辑或-逻辑异或&-短路与|-短路或逻辑运算符功能说明:,短路逻辑运算符,使用短路逻辑运算符&和|可实现“短路”的“与”和“或”运算的功能当根据第一个操作数的值已经能够确定整个表达式的结果时,将跳过对第二个操作数值的评估,直接得出最终结果。,位运算符,位运算符(,&,|,),位运算符(,),:将一个数的各二进制位全部右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值 例如:a=00110111,则 a2=00001101 b=11010011,则 b2=11110100 右移一位相当于除2取商例如:128 1 returns 128/21=64256 4 returns 256/24=16-256 4 returns-256/24=-16:一个数的各二进制位无符号右移若干位,与运算符相同,移出的低位被舍弃,但不同的是最高位都补0。如 a=00110111,则 a2=00001101 b=11010011,则 b2=00110100,位运算符,:用来将一个数的各二进位全部左移若干位。高位左移后溢出舍弃,低位补0。例如:a=00001111,则a2=00111100。在不产生溢出的情况下,左移一位相当于乘2128 1 returns 128*21=25616 2 returns 16*22=64,赋值运算符=,将等号右侧表达式的计算结果赋给等号左侧的变量。赋值操作时遵循值传递原则。=左侧必须是一个已经声明过的变量,而不允许是常量或复合表达式赋值运算符左右两侧的数据类型应保持一致,可以自动进行类型转换的情况除外。,int i=5,j=6;/合法j=i+10;/合法10=i+j;/非法i+j=10;/非法,条件运算符?:,语法格式:?:说明:其中必须为boolean类型,系统将首先计算的值,当其值为true时,则将的值作为整个表达式的最终结果,否则将的值作为整个表达式的最终结果举例:,int score=50;int result=x 60?60:x;String type=score 60?不及格:及格;,自增/自减运算符,+/-也称增量/减量运算符,用于对单个变量进行增1和减1操作。可以单独使用,也可用于复合表达式中;运算符可以位于变量之前,也可用于变量之后:位于变量前面时,先进行变量的增量/减量运算,然后再取用变量的值计算整个表达式的结果;位于变量后面时,先取用变量的值计算整个表达式的结果,然后才进行增量/减量运算,字符串连接运算符+,+除用于算术加法运算外,还可用于对字符串进行连接操作。+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。,表达式,表达式是符合一定语法规则的运算符和操作数的序列。表达式的类型和值对表达式中操作数进行运算得到的结果称为表达式的值表达式的值的数据类型即为表达式的类型表达式的运算顺序首先应按照运算符的优先级从高到低的顺序进行,运算符优先级/结合方向,程序运行流程,按照运行流程来划分,程序可分为三种基本结构顺序性结构、分支结构和循环结构。顺序性结构:按照语句出现的顺序依次执行的程序结构。,分支结构,分支结构也称选择性结构,有条件地执行或跳过特定的语句或语句块,实现有选择的流程控制。,循环结构,在一定的条件下重复执行特定代码。,if-else语句,if-else语句用于实现分支结构,其中的else子句不是必须的,if语句又可细分为三种形式:1.使用if语句实现单路分支结构if()2.使用if-else语句实现双路分支结构语法格式:if()else,3.使用if-else语句实现多路分支结构语法格式:if()else if()else if()else,switch语句,用于实现简单的多路分支结构,语法格式:,switch()case:case:.case:default:,相关规则:表达式expr的返回值必须是下述几种类型之一:int,byte,char,short,枚举类型和封装类类型;case子句中的值constant必须是常量且所有case子句中的值应是不同的;default子句是任选的;break语句用来在执行完一个case分支后使程序跳出switch语句块;,循环语句,循环语句功能:在循环条件满足的情况下,反复执行特定代码。循环语句的四个组成部分初始化部分(init_statement)循环条件部分(test_exp)循环体部分(body_statement)迭代部分(alter_statement)循环语句分类for 循环while 循环do-while 循环for-each循环,for循环,for(;),1.执行初始化表达式;2.计算循环条件表达式的值,如果其值为true,则继续执行第3步,否则结束循环;3.执行循环体语句;4.执行迭代表达式,然后返回到第2步继续执行。,while循环,语法格式:while(),do-while循环,语法格式:dowhile(),for-each循环,功能:逐个处理(遍历)数组或集合中的所有元素。语法格式:for(:),break语句,break语句的作用是终止所在的switch语句或循环语句的运行。语法格式:break;/终止其所在的单层(内层)循环的运行break;/在多层嵌套循环中,终止标签标记的外层循环的运行,continue语句,continue语句用于结束所在的循环语句的本次运行,即跳过其后的循环体语句,开始下一次循环。语法格式:continue;/跳过其所在单层(内层)循环的本次运行。continue;/在嵌套循环中,跳过标签标记的外层循环的本次运行,递归,问题:求给定整数的阶乘,如何实现?解决方案:1.采用循环结构2.采用递归结构,递归基本思想和要素,递归方法解决问题的基本思想是“依此类推”实现原理:1.先求得范围或规模缩小的同种性质问题的结果,然后再利用上一步已得到的结果经过简单操作处理求得问题的最后解答;2.重复前述的步骤,当相同性质的问题被简化到足够简单时,将可直接获得问题的答案,而不会无限重复下去。递归要素:递推公式递归终止条件,练 习,1,给定3个数a,b和c,输出最大的数。2,某电信公司的市内通话费计算标准如下:三分钟内0.2元,三分钟后每增加一分钟增加0.1元,不足一分钟的按一分钟计算。要求编写程序,给定一个通话时间(单位:秒),计算出应收费金额。3,某市的出租车计费标准为:3公里以内10元,3公里以后每加0.5公里加收1元;每等 待2.5分钟加收1元;超过15公里的加收原价的50%为空驶费。要求编写程序,对于 任意给定的里程数(单位:公里)和等待时间(单位:秒)计算出应付车费,车费 直接截去小数位,只取整数。4,编写程序,判断给定的某个年份是否是闰年。闰年的判断规则如下:(1)若某个年份能被4整除但不能被100整除,则是闰年。(2)若某个年份能被400整除,则也是闰年。,5,给定一个百分制的分数,输出相应的等级。90分以上 A级 8089 B级 7079 C级 6069 D级 60分以下 E级6,编写程序求 1+3+5+7+99 的和值。7,编写程序输出1-100之间所有能被7整除的偶数。8,求所有满足如下条件的四位数:千位上的数字大于百位数字,百位数字大于十位数字,十位数字大于个位数字,并且千位数字是其他三位数字的和。9,给定两个任意的正整数,求它们之间的所有完全平方数,完全平方数是指这个数是 某个整数的平方,例如 16,25,36等都是完全平方数。10,给定2个正整数,求它们的最大公约数。,11,编写程序求下列多项式的前50项的和:1-1/3+1/5-1/7+1/9-12,请编写程序输出九九乘法表。13,编写程序输出1-100之间的所有素数。14,在屏幕上输出一个n行的金字塔图案,例如,若n=5,则图案如下:15,求斐波那契数列前n项的和值,斐波那契数列如下:1,1,2,3,5,8,13,21 前两位数是1,从第三位开始每位数都是前两位数之和 16,给定一个整数,把它的各位数字倒排过来形成一个新的整数 例如:给定12345 输出54321;给定 9870 输出789,