前言
数学在人类文明的发展过程中起着非常重要的作用。数学推动了重大的科学技术进步。从远古的“结绳记事”,到现代计算机技术的快速发展,都与数学这门学科的发展密不可分。
无论是日常生活中简单的商品交易计算,还是神舟飞船设计中复杂的计算,都离不开数学。生活即数学。没有二进制,就不会有现在的计算机;没有几何学,就没有现在的高楼大厦……。
对于程序员来说更需要知道:数学是计算机科学的基础。在我国,绝大部分大学的计算机科学系都是从数学系中分出来的。由此也可以看出,计算机科学与数学的关系非常紧密。
数学是一门化繁为简的学科。通过数学,可以对现实生活中的很多不同事物进行高度抽象,从而能找出不同事物的共性。不过,由于数学的这种高度抽象,又使数学变得很难学。特别是一些复杂的公式推导,看起来就头痛。
本书面向程序员介绍了程序设计中常用的数学基础知识。通过阅读本书,可以训练程序员的数学思维能力和程序设计能力,进而拓宽视野,增强职场竞争力。
本书特点
简单易懂 用通俗易懂的语言讲解知识点,尽量避免复杂的公式推导过程,让读者能够轻松阅读并掌握相关的数学知识。
门槛很低 阅读本书的读者不需要精通很多高深的数学知识,只需要具备基本的四则运算、乘方等数学基础知识和日常生活中的基本逻辑判断能力即可。
生动有趣 本书拒绝枯燥乏味的讲解,而是代之以轻松活泼的风格,讲解时列举了大量我们都很熟悉,而且非常有趣的数学实例。
内容丰富 本书从最简单的数据的表示开始,对素数、递归、排列组合、逻辑推理、几何构造、统筹规划等方面都会逐一介绍,涵盖了程序员需要掌握的数学知识。
图文并茂 讲解每个知识点和实例时,都给出了简单易懂的图示和必要分析,让读者理解起来清晰明了,没有任何障碍,也让读者感觉到学习数学并不困难。
本书内容概述
第1章通过一则童话故事导入了数据大小的知识,然后逐步介绍了十进制、二进制、八进制、十六进制以及其他常用进制的知识,还介绍了不同进制的转换方法。
第2章从素数的判断开始,逐步介绍了与素数相关的数学知识,包括孪生素数、梅森素数、哥德巴赫猜想、RSA的应用等内容。
第3章介绍递归这种自己调用自己的方法,通过阶乘、汉诺塔、斐波那契数列等经典实例,练习从复杂事物中发现递归结构的方法。
第4章的主题是排列组合,从乘法原理、加法原理入手,介绍了排列与组合的概念和关系,并研究了计算机中的字符编码、密码长度等相关内容。
第5章讨论余数。主要介绍使用余数对数据进行分组,如日历、一些小魔术都是通过余数分组的规则进行的;本章还讨论了计算机中的奇偶校验及两个有趣的问题(座位安排和智叟分牛)。
第6章介绍概率的相关知识,首先从两个常见的事例导入概率的概念,接着从军事故事、赌场游戏、中奖概率等方面介绍了概率的实际应用。
第7章学习翻番的知识。首先介绍翻番和翻倍的概念、计算方式。接着进一步通过复利的威力、对折纸张、舍罕王的赏赐等实例,展示了翻番这个令数据快速增长的数学概念。最后还介绍翻番的逆运算——折半的应用。
第8章学习数理逻辑的相关知识,介绍了逻辑、命题逻辑、布尔逻辑、逻辑的重叠与遗漏等概念,最后介绍了通过卡诺图化简逻辑表达式的方法。
第9章则在第8章的基础上进一步讨论了逻辑推理,包括演绎推理中的三段论、选言推理、假言推理、关系推理,以及归纳推理中的完全归纳推理和不完全归纳推理。
第10章介绍了几何图形构造的基础知识,从花盆摆放、残缺棋盘、丢失的线条等有趣实例,初步了解几何图形构造,最后还介绍了几何图形的分割与拼接。
第11章讨论统筹规划相关知识,首先从田忌赛马这个古老故事中看出统筹规划的重要性,然后通过生活中的两个简单例子认识统筹规划,最后还讨论了“背包问题”及其程序设计方法。
本书读者对象
本书可适用以下各类人员阅读:
计算机专业的学生;
数学专业的学生;
程序设计人员;
数学爱好者;
编程爱好者。
本书作者
本书由周颖主笔编写。其他参与编写的人员有韩先锋、何艳芬、李荣亮、刘德环、孙姗姗、王晓燕、杨平、杨艳艳、袁玉健、张锐、张翔、陈明、邓睿、巩民顺、吉燕、水淼、宗志勇、安静、曹方、曾苗苗、陈超。
编写本书的过程中,虽然编者竭尽全力,不敢有丝毫疏忽,但恐百密一疏,书中仍难免存在不足之处,望广大读者批评指正。
编著者
