内容简介
《计算机科学丛书:Python计算与编程实践·多媒体方法(原书第2版)》是一本别出心裁的程序设计入门教程,以Python数字多媒体编程为主线,依次讲解了图像、声音、文本和电影的处理,其中穿插介绍了大量的计算机程序设计基础知识。方法独到,示例通俗易懂,条理清晰,将趣味性和实用性融于讲解之中。
《计算机科学丛书:Python计算与编程实践·多媒体方法(原书第2版)》适合用做计算机专业导论课或非计算机专业编程课程的教材,也可用做软件开发人员学习计算机数字多媒体处理知识和Python语言的专业参考书。
目录
出版者的话
译者序
第2版前言
第1版前言
第一部分 导论
第1章 计算机科学与媒体计算导论
1.1 计算机科学是关于什么的
1.2 编程语言
1.3 计算机理解什么
1.4 媒体计算:为什么要把媒体数字化
1.5 大众的计算机科学
1.5.1 计算机科学与交流有关
1.5.2 计算机科学与过程有关
习题
第2章 编程导论
2.1 编程与命名有关
2.2 Python编程
2.3 JES编程
2.4 JES媒体计算
2.4.1 显示图片
2.4.2 播放声音
2.4.3 数值命名
2.5 构建程序
习题
第3章 使用循环修改图片
3.1 图片的编码
3.2 处理图片
3.3 改变颜色值
3.3.1 在图片上运用循环
3.3.2 增/减红(绿、蓝)
3.3.3 测试程序:它真的能运行吗
3.3.4 一次修改一种颜色
3.4 制作日落效果
3.5 亮化和暗化
3.6 制作底片
3.7 转换到灰度
习题
第4章 修改区域中的像素
4.1 复制像素
4.2 图片镜像
4.3 复制和转换图片
4.3.1 复制
4.3.2 制作拼贴图
4.3.3 通用复制
4.3.4 旋转
4.3.5 缩放
习题
第5章 高级图片技术
5.1 颜色替换:消除红眼、深褐色调和
色调分离
5.1.1 消除红眼
5.1.2 深褐色调和色调分离:使用条件式
选择颜色
5.2 合并像素:图片模糊化
5.3 比较像素:边缘检测
5.4 图片融合
5.5 背景消减
5.6 色键
5.7 在图像上绘图
5.7.1 使用绘图命令
5.7.2 向量和位图表示
5.8 指定绘图过程的程序
习题
第二部分 声音
第6章 使用循环修改声音
6.1 声音是如何编码的
6.1.1 声音的物理学
6.1.2 探索声音的样子
6.1.3 声音编码
6.1.4 二进制数和二进制补码
6.1.5 存储数字化的声音
6.2 处理声音
6.2.1 打开声音并处理样本数据
6.2.2 使用JES媒体工具
6.2.3 循环
6.3 改变音量
6.3.1 增大音量
6.3.2 真的行吗
6.3.3 减小音量
6.3.4 理解声音函数
6.4 声音规格化
习题
第7章 修改一段样本区域
7.1 用不同方法处理不同声音片段
7.2 剪接声音
7.3 通用剪辑和复制
7.4 声音倒置
7.5 镜像
习题
第8章 通过合并片段制作声音
8.1 用加法组合声音
8.2 混合声音
8.3 制造回声
8.3.1 制造多重回声
8.3.2 制作和弦
8.4 采样键盘工作原理
8.5 加法合成
8.5.1 制作正弦波
8.5.2 把正弦波叠加起来
8.5.3 检查结果
8.5.4 方波
8.5.5 三角波
8.6 现代音乐合成
8.6.1 MP3
8.6.2 MIDI
习题
第9章 构建更大的程序
9.1 自顶向下设计程序
9.1.1 自顶向下设计示例
9.1.2 设计顶层函数
9.1.3 编写子函数
9.2 自底向上设计程序
9.3 测试程序
9.4 调试技巧
9.4.1 找出担心的语句
9.4.2 查看变量
9.4.3 调试冒险游戏
9.5 算法和设计
9.6 在JES之外运行程序
习题
第三部分 文本、文件、网络、数据库和单媒体
第10章 创建和修改文本
10.1 文本作为单媒体
10.2 字符串:构造和处理字符串
10.3 处理部分字符串
10.3.1 字符串方法:对象和点号语法简介
10.3.2 列表:强大的结构化文本
10.3.3 字符串没有字体
10.4 文件:存放字符串和其他数据的地方
10.4.1 打开文件和操作文件
10.4.2 制作套用信函
10.4.3 编写程序
10.5 Python标准库
10.5.1 再谈导入和私有模块
10.5.2 另一个有趣模块:Random
10.5.3 Python标准库的例子
习题
第11章 高级文本技术:Web和信息
11.1 网络:从Web获取文本
11.2 通过文本转换不同媒体
11.3 在图片中隐藏信息
习题
第12章 产生Web文本
12.1 HTML:Web的表示方法
12.2 编写程序产生HTML
12.3 数据库:存放文本的地方
12.3.1 关系型数据库
12.3.2 基于散列表的关系型数据库示例
12.3.3 使用SQL
12.3.4 使用数据库构建Web页面
习题
第四部分 电影
第13章 制作和修改电影
13.1 产生动画
13.2 使用视频源
13.3 自底向上制作视频效果
习题
第五部分 计算机科学议题
第14章 速度
14.1 关注计算机科学
14.2 什么使程序速度更快
14.2.1 什么是计算机真正理解的
14.2.2 编译器和解释器
14.2.3 什么限制了计算机的速度
14.2.4 让查找更快
14.2.5 永不终止和无法编写出的算法
14.2.6 为什么Photoshop比JES更快
14.3 什么使计算机速度更快
14.3.1 时钟频率和实际的计算
14.3.2 存储:什么使计算机速度慢
14.3.3 显示
习题
第15章 函数式编程
15.1 使用函数简化编程
15.2 使用Map和Reduce进行函数式编程
15.3 针对媒体的函数式编程
15.4 递归:一种强大的思想
15.4.1 递归式目录遍历
15.4.2 递归式媒体函数
习题
第16章 面向对象编程
16.1 对象的历史
16.2 使用“小海龟”
16.2.1 类和对象
16.2.2 创建对象
16.2.3 向对象发送消息
16.2.4 对象控制自己的状态
16.2.5 小海龟的其他函数
16.3 教小海龟新的技艺
16.4 面向对象的幻灯片
16.4.1 Joe the Box
16.4.2 面向对象的媒体
16.4.3 为什么使用对象
习题
附录A Python快速参考
参考文献
精彩书摘
从所有情况中找出绝对最优的组合永远是极其耗时的任务。对于这样的算法,类似D(2n)这样的时间复杂度并不罕见。但还有其他一些问题,看似可以在合理的时间内完成,实际却不是。
这些问题当中,比较著名的一个就是旅行商问题(Traveling Salesman Problem)。想象自己是一名负责很多客户的售货员——比如说客户数量是30,前面最佳歌曲问题的一半。为提高工作效率,你想在地图上找一条能把每个客户访问一次,且不会重复访问的最短路径。
要求给出旅行商问题的最优解,一种最有名的算法是O(n!)级的。那可是n的阶乘。另外有些耗时较短的算法能给出近似最短,但无法保证绝对最短的路径。对30个城市来说,使用这种O(n!)复杂度的算法需要执行30 !个步骤,或者说265252859812191058636308480000000步。到1.5 GHz的处理器上运行看吧——在你有生之年是运行不完的。
真正严重的问题是:旅行商问题并不是人为搞出来的玩具题目。确实有人需要在全世界范围内规划最短路由。还有一些类似问题,从算法上考虑与旅行商问题如出一辙,比如规划机器人在厂房中的行走路线。这是个又大又难的问题。
计算机科学家把问题归为三大类:
许多问题,比如排序,可以用运行时间为多项式复杂度(比如O(n2))的算法解决,我们把这类问题称为P类问题(P代表“多项式”)。
另一些问题,比如求最优组合,存在已知的算法,但解法太大太难,即使中等规模的数据量都难以在合理的时间内解决。我们把这类问题称为难解型(intractable)问题。
还有另一些问题,如旅行商问题,看似难解,但可能存在P类解法,只是我们尚未发现。
我们把这类问题称为NP类问题。
理论计算机科学领域最大的未解问题之一就是证明要么NP和P完全不同(意味着我们永远不能在多项式时间内解决旅行商最短路径问题),要么P包含NP。
你可能疑惑,有关算法的问题可以“证明”吗?毕竟我们有这么多不同的编程语言和编写算法的不同方式。如何能确定地证明一件事情是可做或不可做的呢?然而,这的确可以。事实上,Alan Turing(阿兰?图灵)甚至证明了某些算法是编写不出来的。
在编写不出来的算法当中,最著名的一个是程序停止问题(Halting Problem)。我们编写过读取或输出其他程序的程序。可以想象,一个程序完全可以读取另一个程序并输出相关信息(比如此程序中有多少print语句)。那么,能否编写一个程序,输入另一个程序(比如通过文件),然后告诉我们那个程序会不会停止呢?考虑这样一种情况:输入程序中有一些复杂的while循环,导致我们难以判定while循环表达式会不会变成false。然后再想象一下这样一组循环相互嵌套的情况。
……
前言/序言
计算机科学丛书:Python计算与编程实践·多媒体方法(原书第2版) 下载 mobi epub pdf txt 电子书 格式