描述
开 本: 32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302458562
本书既可作为计算机专业和非计算机专业本科生移动开发课程的配套教材,也可作为iOS开发工程师和iOS开发爱好者的参考书籍。
目录
预备知识/1
0.1Xcode特性1
0.2Xcode使用2
0.3playground4
第1章基本数据类型/8
1.1常量和变量8
1.2整型和浮点型12
1.3布尔型13
1.4元组型14
1.5可选型15
1.6异常处理18
第2章运算符/20
2.1赋值运算符20
2.2算术运算符21
2.3关系运算符22
2.4逻辑运算符23
2.5其他运算符25
第3章字符串/27
3.1空字符串27
3.2字符串操作28
3.3字符串比较29
第4章集合/31
4.1数组31
4.2集合34
4.3字典36
第5章控制流/40
5.1for循环40
5.2while循环41
5.3if条件语句42
5.4switch条件语句43
5.5控制转移语句46
第6章函数/48
6.1定义和调用48
6.2函数形参49
6.3函数类型52
6.4嵌套函数54
第7章闭包/56
7.1闭包表达式56
7.2尾随闭包58
第8章枚举类型/60
8.1定义60
8.2关联值61
8.3原始值63
第9章结构体和类/65
9.1共同点65
9.2不同点67
第10章属性/69
10.1存储属性69
10.2计算属性71
10.3属性观察器72
10.4类型属性73
第11章方法/75
11.1实例方法75
11.2类型方法77
11.3下标78
第12章继承性/80
12.1基类和子类80
12.2重载83
第13章构造与析构/86
13.1构造器定义86
13.2自定义构造器87
13.3构造器代理90
13.4析构器93
第14章错误处理/96
14.1错误定义96
14.2错误处理97
第15章可选链/100
15.1强制拆封100
15.2可选链应用101
第16章访问控制/104
16.1定义104
16.2应用105
第17章类型操作符/107
17.1类型检查108
17.2类型转换109
第18章扩展/111
18.1扩展计算型属性112
18.2扩展构造器112
18.3扩展方法113
18.4扩展下标114
第19章协议/115
19.1定义115
19.2继承性119
第20章内存管理/121
20.1工作原理121
20.2强引用循环122
20.3闭包中的强引用循环127
第21章高级运算符/129
21.1位运算符129
21.2溢出运算符131
21.3运算符函数132
第22章泛型/135
第23章苹果应用/137
23.1一个简单的应用137
23.2MVC架构147
23.3应用运行状态149
第24章计算器/151
24.1界面设计151
24.2动作处理156
24.3运算逻辑163
24.4小结173
第25章编程练习及参考答案/175
练习1: Fibonacci数列175
练习2:
求质数177
练习3:
求水仙花数178
练习4:
统计字符串中各类字符个数179
练习5:
给定项数的数字的和180
练习6:
自由落体反弹问题182
练习7:
求无重复的三位数183
练习8:
阶梯奖金计算184
练习9:
求完全平方数186
练习10:
求一年中的第几天187
练习11: 3个数比大小188
练习12:
打印九九乘法表189
练习13:
猴子吃桃问题190
练习14:
求分数数列的和191
练习15:
求1~n的阶乘的和193
练习16:
用递归法求阶乘194
练习17:
倒推年龄195
练习18:
倒序打印一个正整数196
练习19:
回文问题197
练习20:
整数排序198
练习21:
求5×5矩阵对角线之和200
练习22:
折半查找201
练习23:
围圈报数203
练习24:
求分数的和204
练习25:
字符串排序206
练习26:
猴子分桃问题207
练习27:
考试成绩统计209
练习28:
求子串出现次数211
练习29:
数字加密问题212
练习30:
被9整除问题214
本书全面介绍了Swift 2.0中的所有重要特色,但舍弃了部分不适合初学者的冷僻知识点,使次接触Swift的读者能够迅速抓住重点,掌握精髓。除了在Swift语言方面尽可能做到全面系统以外,本书通过预备知识部分帮助读者迅速掌握Xcode基本功能和熟练运用playground编写代码,为配合后面编写小的实例打下必要的基础。介绍完Swift语言内容,紧随其后的是由浅入深、逐步分解问题的一个应用实例,帮助读者运用已学的Swift语言知识来解决实际问题,使读者体会到Swift语言在实际iOS App开发中的作用。后通过30个经典的编程练习来帮助读者巩固已学的Swift语言知识。全书共分为6个部分: 第1部分为预备知识,即读者在学习Swift语言知识前必须掌握的基础内容,主要包括Xcode特性、Xcode使用方法以及playground介绍。playground是Swift语言实践的主要工具。第2部分为语法基础,共7章(第1章至第7章),介绍Swift语法中的基础内容。第1章介绍基本的数据类型,包括常量和变量、整型和浮点型、布尔型、元组型、可选型及异常处理等内容。第2章介绍各种常用的运算符,包括赋值运算符、算术运算符、关系运算符、逻辑运算符及其他运算符。第3章介绍字符串的相关知识,包括空字符串、字符串操作及字符串比较等。第4章介绍几种集合类型的定义和操作,包括数组、集合和字典。第5章介绍几种控制流的语法和使用方法,包括for循环、while循环、if条件语句、switch条件语句及控制转移语句。第6章主要介绍函数的相关知识,包括函数的定义和调用方法、函数的形参、函数作为一种类型来使用的方法、嵌套函数。第7章主要介绍闭包的相关知识,包括闭包表达式和尾随闭包。第3部分为面向对象编程基础,共7章(第8章至第14章),介绍Swift语言面向对象的基础知识。第8章介绍枚举类型,包括枚举类型的定义、枚举类型的关联值及原始值的定义和用法。第9章介绍结构体和类的定义,比较了两者的共同点和不同点,以及各自的应用场景。第10章介绍属性的相关知识,包括存储属性、计算属性、属性观察器以及类型属性。第11章介绍方法的相关知识,重点介绍实例方法和类型方法,还介绍比较特殊的方法下标。第12章介绍继承性的概念,包括基类和子类的概念以及如何进行重载。第13章介绍构造器和析构器,包括构造器的定义、自定义构造器、构造器代理以及析构器。第14章简要介绍错误处理的相关知识,包括错误的定义及如何进行错误处理。第4部分为面向对象高级编程,共8章(第15章至第22章),介绍Swift语言面向对象的高级知识。第15章介绍可选链,包括强制拆封的概念以及可选链的应用场景。第16章介绍访问控制的相关定义和应用场景。第17章介绍类型操作符的相关知识,包括类型检查和类型转换。第18章介绍扩展的概念,包括扩展计算型属性、扩展构造器、扩展方法及扩展下标。第19章介绍协议的相关知识,包括协议的定义和协议的继承性。第20章介绍内存管理的相关知识,包括内存管理的工作原理、强引用循环的概念及消除的方法、闭包中的强引用循环等。第21章介绍高级运算符,包括位运算符、溢出运算符及运算符函数。第22章简要介绍泛型的概念和实例。第5部分为应用实例,共两章,即第23章和第24章,通过一个完整的苹果应用计算器的例子,在一个简单的实际工程项目中综合运用前面学习的Swift语言知识。第23章以计算器应用为例简要介绍苹果应用的相关知识,包括如何建立一个简单的应用、iOS App的MVC架构以及应用的运行状态的切换。第24章介绍如何编程实现计算器应用,包括界面设计、动作处理和运算逻辑等部分。第6部分为编程练习及参考答案,给出30个经典编程练习题,讲解每一题的编程思路,并给出代码、相关代码说明及系统运行结果。由于编者水平有限,书中难免有考虑不周的地方和不足之处,敬请使用本书的老师、同学及广大读者批评指正。
编者2016年10月前言
第5章控制流本章主要介绍Swift中的各种循环控制语句,包括for语句、while及repeatwhile语句、if条件语句、switch条件语句及控制流中的跳转语句。5.1for循环在前面的章节已经接触到forin循环了,这里将进行深入系统的讨论。for循环是指按照指定次数重复执行一系列语句的操作。for循环有两种形式,即forin循环和for条件递增循环。forin循环主要用来遍历一个特定范围内的所有元素,例如一个集合、一个数字范围、一个字符串或者一个数组。图5.1forin遍历闭区间如图5.1所示,遍历了1~6的闭区间里的所有整数,这里的整型变量i不需要显式声明,它是在循环的声明语句中被隐式声明的。每次循环的时候,i被赋值为1~6的数,在循环体内可以被引用。当不需要知道每次循环时变量的值时,可以使用下画线“_”来代替变量名。如图5.2所示,这里需要注意的是,当用下画线来代替变量后,实际上forin循环已经变成了重复一定的次数执行循环体内的语句,而不需要循环范围中遍历的值参与循环体的执行。Chapter 5第5章控制流
图5.2下画线代替变量名forin循环遍历数组、字典、集合的实例可参考前面相关的章节,这里不再作重复介绍。for条件递增循环主要用来重复执行一系列语句直到特定条件达成,一般的做法是: 每次循环后增加计数器的值,当计数器的值达到特定值后结束循环。for条件递增循环的格式为forinitialization;condition;increment {statements}该循环语句的执行过程是: 步进行条件控制变量的初始化,即执行initialization部分的语句。第二步,执行条件判断语句condition,结果为布尔值。当结果为false时,循环结束,继续执行for循环以外的后续语句;当结果为true时,执行循环体内的语句statements。第三步,执行递增语句,即increment语句,完成后跳回第二步继续执行。实例如图5.3所示。图5.3for条件递增循环实例5.2while循环while循环就是重复执行一系列语句,直到条件语句值为false。while循环在循环执行一系列语句前先进行条件语句的判断,若为false则结束循环,若为true则继续执行循环体内语句。Swift还提供了while循环的一种变体,即repeatwhile循环,它首先执行循环体内的一系列语句,然后进行条件语句的判断,若为false则结束循环,若为true则继续执行循环体内的语句。while循环的格式为while condition {statements}repeatwhile循环的格式为repeat {statements} while condition如图5.4所示,while循环和repeatwhile循环的判断条件相同,都是i<5,执行的结果也一致。图5.4while循环和repeatwhile循环5.3if条件语句if条件语句在前面的章节已经多次使用了,相信读者已经非常熟悉了。if条件语句的格式为ifcondition{statements} else {statements}其中,else语句还可以继续嵌套新的ifelse语句,嵌套的数量没有限制。例如: ifcondition1{statements} else if condition2{statements} else {statements}嵌套的if条件语句的实例如图5.5所示,其中定义了一个字符串变量weather,用来保存当前的季节信息,赋初值为autumn。通过层层嵌套ifelse语句,分别判断weather为四季中的哪一个,并打印相应的季节提示信息。图5.5嵌套的if条件语句5.4switch条件语句switch条件语句将一个值与若干个可能匹配的模式进行比较。执行个匹配成功的模式所对应的代码。图5.6中的ifelse嵌套语句在情况比较多的时候可以用switch语句来替代,在形式上会简化很多,可读性也有很大提高。switch语句的格式如下: switchsomeValue {casevalue1:statementsFor1casevalue2, value3:statementsFor23default:statementsForDefault}图5.6switch条件语句switch语句中包含了多个case,每个case对应一个匹配的条件或模式,也对应一个特定的执行语句。这里需要注意的是,switch语句中所列出的各种匹配模式必须是完备的,也就是说各种case情况必须包含someValue的所有可能值。当只想对部分特定情况进行比较和处理时,可以用default语句来处理其他没有出现在case中的可能情况(或值)。需要特别注意的是,switch语句在执行过程中,当次与某个case条件匹配,执行该case中对应的语句后,就直接跳出并执行switch块的后续语句,而不会继续与其他case条件进行比较。这一点是与C语言的差别。在C语言中,会显式地使用break跳出switch块。如图5.6所示,首先定义了一个枚举类型month,包括12个月份的英文单词。然后定了一个month类型的变量curMonth,表示当前的月份,然后赋值为month.February,表示当前月份为2月。switch语句对curMonth进行条件匹配,分别列出了4个匹配值。个条件为month.January,第二个条件为month.February,第三个条件为3个值: month.April、month.May、month.June。只要和其中一个值相等即匹配成功。第四个条件为默认值,如果和前面的3个条件都不匹配,则自动执行默认条件相应的语句。switch语句中case部分的条件也可以是一个范围。如图5.7所示,将上面的例子修改一下,用整型来表示月份。case语句分别对1~3月和4~6月进行比较。图5.7switch语句对整型数值范围进行值的匹配switch语句也可以对元组进行值的匹配。如图5.8所示,classInfo是一个课程信息的元组,包括开课年份和课程名称两个信息。通过switch语句对元组classInfo中的信息进行比较,根据不同情况,打印出相应的课程信息。图5.8switch语句对元组进行值的匹配switch语句中的case可以进行值绑定,即,将某个case匹配的值绑定到一个临时变量或者常量上,然后在该case的执行语句中就可以引用绑定的变量或常量了。如图5.9所示,在case中分别将开课年份和课程名称的值绑定到常量x和y上,并在case块的执行语句中引用这两个常量。在值绑定的基础上,case的匹配语句可以引入where语句来构造更加复杂的比较语句。如图5.10所示,where语句对特定条件进行筛选,匹配时才会执行后续语句。图5.9case的值绑定图5.10在case中引入where进行条件筛选5.5控制转移语句控制转移语句就是改变原有代码的执行顺序,实现代码的跳转。这里主要介绍两个常用的控制转移语句: continue语句、break语句。其他的控制转移语句读者可根据需要查找Swift官方文档。continue语句在循环语句中使用,当执行continue语句时,本次循环结束,继续下一次循环的执行。如图5.11所示,在forin循环语句中,当i=4的时候执行continue语句,直接结束本次循环,并继续下一个循环,即本次循环中的打印语句将不会执行。图5.11continue语句break语句可以用于循环语句中,也可以用于其他的控制流语句中。当执行break语句时,直接终止当前控制流,并跳到控制流以外的后续语句处继续执行。它和continue语句在循环语句中应用时的差别是,break语句终止全部后续的循环语句,而continue只是结束当次循环语句的执行。如图5.12所示,当i=4的时候,终止后续所有的循环执行语句,直接跳出循环。因此,循环只执行了3次。图5.12break语句
评论
还没有评论。