编程导论 内容简介
《编程导论》基于麻省理工学院(MIT)的一门课程写成,主要目标是帮助读者掌握并熟练使用各种计算技术。本书涵盖了Python的大部分特性,重点介绍如何使用Python这门语言,共包含编程基础、Python程序设计语言、理解计算的关键概念、计算问题的解决技术等四个方面。本书将Python语言特性和编程方法贯穿全书,目的是帮助读者在学习Python的同时掌握如何使用计算来解决有趣的问题。
本书适合那些对编程知之甚少却需要(或者想要)使用计算方法来解决问题的学生,是学习更高级计算机科学课程的基础。
编程导论 目录
第1章 起步
第2章 Python介绍
2.1 Python的基本元素
2.1.1 对象、表达式和数值类型
2.1.2 变量和赋值
2.1.3 IDLE
2.2 分支程序
2.3 字符串和输出
2.4 循环
第3章 一些简单的数值类程序
3.1 穷举法
3.2 for循环
3.3 近似解和二分查找
3.4 关于浮点数
3.5 牛顿-拉夫逊方法
第4章 函数、作用域和规范抽象
4.1 函数和作用域
4.1.1 函数定义
4.1.2 关键字参数和默认值
4.1.3 作用域
4.2 规范
4.3 递归
4.3.1 斐波那契数
4.3.2 文和分治
4.4 全局变量
4.5 模块
4.6 文件
第5章 结构化类型、可变性和高阶函数
5.1 元组
5.2 列表和可变性
5.2.1 克隆
5.2.2 列表解析
5.3 数对象
5.4 字符串、元组和列表
5.5 字典
第6章 测试和调试
6.1 测试
6.1.1 黑盒测试
6.1.2 白盒测试
6.1.3 执行测试
6.2 调试
6.2.1 学习调试
6.2.2 设计实验
6.2.3 如果遇到阻碍
6.2.4 找到“目标”错误之后
第7章 异常和断言
7.1 处理异常
7.2 把异常当作控制流来使用
7.3 断言
第8章 类和面向对象编程
8.1 抽象的数据类型和类
8.1.1 使用抽象的数据类型来设计程序
8.1.2 使用类来记录学生和教师
8.2 继承
8.2.1 多层继承
8.2.2 替代法则
8.3 封装和信息隐藏
8.4 进阶实例:抵押贷款
第9章 算法复杂度简介
9.1 思考计算复杂度
9.2 渐近表示
9.3 一些重要的复杂度
9.3.1 常数复杂度
9.3.2 对数复杂度
9.3.3 线性复杂度
9.3.4 对数线性复杂度
9.3.5 多项式复杂度
9.3.6 指数复杂度
9.3.7 复杂度对比
第10章 一些简单的算法和数据结构
10.1 搜索算法
10.1.1 线性搜索和间接访问元素
10.1.2 二分查找和利用假设
10.2 排序算法
10.2.1 归并排序
10.2.2 把函数当做参数
10.2.3 Python中的排序
10.3 散列表
第11章 绘图以及类的扩展内容
11.1 使用PyLab绘图
11.2 扩展实例:绘制抵押贷款
第12章 随机算法、概率以及统计
12.1 随机程序
12.2 统计推断和模拟
12.3 分布
12.3.1 正态分布和置信水平
12.3.2 均匀分布
12.3.3 指数分布和几何分布
12.3.4 本福德分布
12.4 强队的获胜概率
12.5 散列和碰撞
第13章 随机游动和数据可视化
13.1 醉汉游动
13.2 有偏随机游动
13.3 危机重重的田地
第14章 蒙特卡罗模拟
14.1 帕斯卡的问题
14.2 过还是不过
14.3 使用查表提高性能
14.4 寻找π
14.5 模拟模型的结束语
第15章 理解实验数据
15.1 弹簧的行为
15.2 弹丸的行为
15.2.1 决定系数
15.2.2 使用计算模型
15.3 拟合指数分布
15.4 当理论缺失时
第16章 谎言和统计
16.1 垃圾输入只能产生垃圾输出
16.2 图表会骗人
16.3 与此谬误
16.4 统计方法并不能代替数据
16.5 抽样偏差
16.6 语境问题
16.7 当心外推法
16.8 得克萨斯神枪手谬误
16.9 百分比会说谎
16.10 小心谨慎
第17章 背包和图的最优化问题
17.1 背包问题
17.1.1 贪婪算法
17.1.2 0/1背包问题的最优解法
17.2 图的最优化问题
17.2.1 一些典型的图论问题
17.2.2 疾病传播和最小割
17.2.3 最短路径、深度优先搜索和广度优先搜索
第18章 动态规划
18.1 斐波那契数列
18.2 动态规划和0/1背包问题
18.3 动态规划和分治
第19章 机器学习简介
19.1 特征向量
19.2 距离度量
19.3 聚类
19.4 类型示例和聚类
19.5 K-means聚类
19.6 人造案例
19.7 稍微真实一些的示例
19.8 小结
附录 Python 2.7 快速参考
编程导论 精彩文摘
第2章 Python介绍
虽然每种编程语言都不同(尽管区别并没有设计者所说的那么大),但在某些方面它们是相关的。
低级还是高级:指是否在机器层面使用指令和数据对象编程(例如,将64位数据从一个位置移动到另一个位置),或者是否使用由语言设计者提供的更加抽象的操作来编程(例如,在屏幕上弹出一个菜单)。
通用还是指定应用领域:指编程语言的原始操作符应用领域是很广泛还是专门针对某一领域。例如,Adobe Flash的设计目的是快速为网页添加动画和交互,你绝对不想用它来构建一个股票投资组合分析系统。
解释还是编译:指的是直接由解释器运行编程人员写的指令序列,还是先把这个序列用编译器转换成机器级别的原始操作符。编程人员写的代码称为源代码。(在计算机发展的早期,人们需要使用非常接近机器码的语言来编写源代码,从而让它可以直接被计算机硬件解释。)这两种方法各有优势。使用解释型语言编写的代码通常更容易调试,因为解释器可以提供和源代码联系更紧密的错误信息。而编译型语言通常可以让程序运行得更快并使用更少的空间。
在本书中,我们使用Python。然而,这并不是一本关于Python的书。虽然本书的确会指导读者学习Python,但更重要的是可以让读者学会如何编写可以解决问题的程序。这项技能可以应用在各种编程语言上。
本文来自不茫然未来投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。