美文网首页
3-选择结构

3-选择结构

作者: 遨游于学海 | 来源:发表于2023-01-22 14:19 被阅读0次

    在大多数的程序设计语言中,都支持结构化程序设计。结构化程序设计,是指将程序分成三类结构:顺序结构、选择结构和循环结构。
    顺序结构,即指按照顺序从上往下一步一步地运行代码;选择结构,即指根据不同的条件选择不同的代码进行运行;循环结构,即指按照一定的条件重复运行一段代码。
    选择结构中,if语句是其中之一,还有两种分别是select语句和条件表达式。

    布尔类型与条件

    在if语句中,根据是否符合条件来决定是否运行一段代码。而是否符合条件,我们会用布尔值来表达。布尔值只有两种取值true或false,即真或假,布尔值为真,则代表符合条件,布尔值为假则代表不符合条件。布尔值是布尔类型的,即boolean类型的。

    比较运算符

    使用比较运算符,我们可以获得一个布尔值。比较运算符有>、<、==、===、>=和<=等。例如5>2是真的,所以我们会获得一个为true的布尔值。重点在于等值判断,这里只能使用==或者===,不能使用单个等号。单个等号是用于赋值的,双等号和三等号是用来进行比较的。==和===的区别在于前者不判断类型,只判断表面的值是否相同,例如number类型的123和字符串类型的123相比较,此时会返回true;而后者会判断类型,上例此时就会返回false。

    if语句的三种用法

    if(条件){
    // 语句块
    }
    

    此时,当条件为真时,运行大括号中的代码,否则不运行语句块中的内容。

    if(条件){
    // 语句块1
    }else{
    // 语句块2
    }
    

    此时,若条件为真,则运行语句块1,否则运行语句块2.

    if(条件1){
    // 语句块1
    }else if(条件2){
    // 语句块2
    }else{
    // 语句块3
    }
    

    此时,如果条件1为真则运行语句块1,否则判断条件2是否为真,若条件2为真,则运行语句块2,否则运行语句块3.其中,else if语句可以有很多个。
    需要注意的是,在一组if语句中,会从上往下判断哪一个条件是符合的,只要符合其中一个条件,接下去的条件都不会再判断了。
    语句块是被大括号包括起来的一组代码。大括号也可以单独写一行。当语句块中只有一句语句时,大括号可以省略。
    【例3-1】判断一个整数是奇数还是偶数。

    let num=parseInt(prompt());
    if(num%2==0){
    console.log(num,"是偶数");
    }else{
    console.log(num,"是奇数");
    }
    

    上例,第一行,调用prompt函数获得输入值,然后将它类型转换之后赋值给变量num。第二行开始,根据整数的特性判断变量num的奇偶性。
    由于奇数除以2的余数必然是1,偶数除以2的余数必然是0,所以我们可以用整数模2是否为0来判断该整数到底是奇数还是偶数。

    条件表达式

    条件表达式,语法如下:

    条件?语句1:语句2;
    

    当条件为真时,运行语句1,否则运行语句2.
    因此,【例3-1】可以改写为:

    let num=parseInt(prompt());
    num%2==0?console.log(num,"是偶数"):console.log(num,"是奇数");
    

    if语句和条件表达式的一个区别在于if语句不能作为参数,而条件表达式可以作为参数。因此也可以这样写:

    let num=parseInt(prompt());
    console.log(num,num%2==0?"是偶数":"是奇数");
    

    逻辑运算与逻辑运算符

    有一些条件较为复杂,这时就需要就需要进行逻辑运算了。在逻辑运算中,运算符是逻辑运算符,运算数是布尔值。
    逻辑运算符主要有逻辑与(&&,合取)、逻辑或(||,析取)、逻辑非(!)。
    逻辑运算的运算数都是布尔值。逻辑与,只有左右两边都为真时,才为真,否则为假,例如5>2 && 7>3,即true && true,结果为true,但是如果是5>2 && 7<3,则为true && false,结果为false;逻辑或,只要有一边为真,结果就为真;逻辑非,与前面不同,它是一个一元运算符,即!true==false、!false==true。
    在运算时,总是先进行算术运算,然后进行比较运算,最后再进行逻辑运算。
    【例3-2】输入一个整数num,若num是偶数且num大于3,则输出num>3。

    let num=parseInt(prompt());
    if(num%2==0 && num>3){
    console.log("num>3");
    }
    

    浮点数精度问题

    无论是整数还是小数,在JS中都是按照IEEE754的标准作为浮点数进行存储的,和一些强类型编程语言不同,在这些语言中一般将整数作为定点数、小数作为浮点数存储。因此,JS中的数字称为number类型。
    在条件语句中,如果比较数字,只有两边的值在底层是相等的,才可能相等。在IEEE754标准下,小整数运算不会有精度问题,但是小数的运算就会产生精度问题,因此小数的比较不能直接使用双等于号。

    select语句

    当一个值可能匹配多个相等的值时,可以使用select语句。格式如下:

    select(变量){
    case 值1: // 语句块1
    case 值2: // 语句块2
    default: // 语句块3
    }
    

    其中,case可以有多个,default可以省略,default不一定放在最后。它的意思是,如果变量的值等于值1,那么就从语句块1开始运行,然后无论是否等于值2,都会运行运行语句块2,一直运行到语句结束;如果变量的值等于值2,那么它会从语句块2开始一直运行到语句结束;如果所有case的值都不等于变量的值,那么就会从default语句开始运行(当然是在有default语句的情况下)。
    当然如果只想要执行其中的一个case,我们可以在相应case的语句块中,在最后写上一句break;,我们就可以让它运行完相应case的语句块之后,跳出switch结构,不再运行其它的case。

    相关文章

      网友评论

          本文标题:3-选择结构

          本文链接:https://www.haomeiwen.com/subject/nlqeertx.html