控制语句

控制语句

程序设计中的控制语句有3种,即顺序、分支和循环语句。Swift程序通过控制语句来执行程序流,完成一定的任务。程序流是由若干个语句组成的,语句可以是一条单一的语句,也可以是一个用大括号({})括起来的复合语句。Swift中的控制语句有以下几类:

  • 分支语句:if和switch
  • 循环语句:while、do while、for和for in
  • 跳转语句:break、continue、fallthrough和return

分支语句

分支语句又称为条件语句,条件语句使部分程序可根据某些表达式的值被有选择的执行。Swift编程语言提供了if和switch两种分支语句。

由if语句引导的选择结构有if结构、if else结构和else if结构3种。

if结构

如果条件表达式为true就执行语句组,否则就执行if结构后面的语句。与C和Objective-C语言不同的是,即便语句组是单句,也不能省略大括号。语法结构如下:

if 条件表达式 {

语句组

}

if else结构

所有的语言都有这个结构,而且这个结构的格式基本相同。语句如下:

if 条件表达式 {

语句组1

} else {

语句组2

}

else if结构

结构如下:

if 条件表达式1 {

语句组1

} else if 条件表达式2 {

语句组2

} else if 条件表达式3 {

语句组3

...

} else if 条件表达式n {

语句组n

} else {

语句组n + 1

}

多分支语句switch

switch语句也称开关语句,它提供多分支程序结构。

Swift彻底地颠覆了自C语言以后大家对于swift的认知,这个颠覆表现在两个方面。

一方面,在C、C++、Objective-C、Java甚至是C#语言中,switch语句只能比较离散的单个整数(或可以自动转换为整数)变量, 而Swift中的switch语句可以使用整数、浮点数、字符、字符串和元组等类型,而且它的数值可以是离散的也可以是连续的范围。

另一方面,Swift中的switch语句case分支不需要显式地添加break语句,分支执行完成就会跳出switch语句。

语法结构:

switch 条件表达式 {

case 值1:

语句组1

case 值2, 值3:

语句组2

case 值3:语句组3

...

判断值n:

语句组n

default:

语句组n + 1

}

每个case后面可以跟一个或多个值,多个值之间用逗号分隔。每个switch必须有一个default语句,它放在所有分支后面。每个case中至少要有一条语句。

在swift中使用范围匹配

对于数字类型的比较,switch中的case还可以指定一个范围,如果要比较的值在这个范围内,则执行这个分支。

提示:在定义范围的时候,我们使用闭区间(...)和半闭区间(..<)

  • 80...100:80<= 变量<= 100
  • 60..<80: 60<= 变量 < 80

在switch中比较元组类型

元组作为多个值的表示方式也可以在switch中进行比较。switch使用元组非常灵活,字段可以是普通值,也可以是范围。

在switch中使用元组还可以使用值绑定和where语句。

1.值绑定

使用元素的时候还可以在case分支中将匹配的值绑定到一个临时的常量或变量,这些常量或变量能够在该分支里使用,这被称为值绑定。

2.where语句

在绑定值得情况下,还可以在case中使用where语句,进行条件的过滤,类似于SQL语句中的where子句。

循环语句

循环语句能够使程序代码重复执行。Swift编程语言支持4种循环构造类型:while、do while、for和for in。for 和 while循环是在执行循环体之前测试循环条件,而do while是在执行循环体之后测试循环条件。这就意味着for 和while循环可能连一次循环体都未执行,而do while将至少执行一次循环体。for in 是for循环的变形,它是专门为集合遍历而设计的。

while语句

while语句是一种先判断的循环结构,格式如下:

while 循环条件 {

语句组

}

while循环没有初始化语句,循环次数是不可知的,只要循环条件满足,循环就会一直进行下去。

使用while循环需要注意几点,while循环条件语句中只能写一个表达式,而且是一个布尔型表达式,那么如果循环体中需要循环变量,就必须在while语句之前对循环变量进行初始化。

提示:死循环对于单线程程序而言是一场灾难,但是在多线程程序中,死循环是必需的,死循环会出现在子线程中。

do while语句

do while语句的使用与while语句相似,不过 do while语句是事后判断循环条件结构,语句格式如下:

do {

语句组

} while 循环条件

do while 循环没有初始化语句,循环次数是不可知的,不管循环条件是否满足,都会先执行一次循环体,然后再判断循环条件。如果条件满足则执行循环体,不满足则停止循环。

for语句

for语句是应用最广泛、功能最强的一种循环语句。一般格式如下:

for 初始化; 循环条件; 迭代 {

语句组

}

初始化、循环条件以及迭代部分都可以为空语句(但分号不能省略), 三者均为空的时候,相当于一个无限循环。

在初始化和迭代部分,可以使用逗号语句来进行多个操作。逗号语句是用逗号分隔的语句序列。

for in语句

Swift提供了一种专门用于遍历集合的for 循环——for in循环。使用for in循环不必按照for 的标准套路编写代码,只需要提供一个集合就可以遍历。

跳转语句

跳转语句能够改变程序的执行顺序,可以实现程序的跳转。Swift有4种跳转语句:break、continue、fallthrough和return。其中return语句与函数返回有关。

break语句

break语句可用于上一节介绍的while、do while、for和for in循环结构,它的作用是强行退出循环结构,不执行循环结构中剩余的语句。

提示:break语句也可用于switch分支语句,但switch默认在每一个分支之后隐式地添加了break,我们一定要显式地添加break才可以使程序运行不受影响。

在循环体中使用break语句有两种方式:可以带有标签,也可以不带标签。语法格式如下:

break //不带标签
break label //带标签,label是标签名

定义标签的时候后面跟一个冒号。不带标签的break语句使程序跳出所在层的循环体,而带标签的break语句使程序跳出标签指示的循环体。
添加标签对于多层嵌套循环是很有必要的,适当使用可以提高程序的执行效率。

continue语句

continue语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。

在循环体中使用continue语句有两种方式可以带有标签,也可以不带标签。语法格式如下:

  • continue //不带标签
  • continue label //带标签,label是标签名

fallthrough语句

fallthrough是贯通语句,只能使用在switch语句中。为了防止错误的发生,Swift中的switch语句case分支默认不能贯通,即执行完一个case分支就跳出switch语句。但是凡事都有例外,如果你的算法真的需要多个case分支贯通,也可以使用fallthrough语句。

fallthrough就是为了贯穿case分支而设的。或许这种语句我们用的很少,但作为一门编程语言,还是要照顾用户的少数特殊需求。

你可能感兴趣的:(控制语句)