程式設計師的數學思維修煉

程式設計師的數學思維修煉

本書是一本專門為程式設計師而寫的數學書,介紹了程式設計中常用的數學知識。本書門檻不高,不需要讀者精通很多高深的數學知識,只需要讀者具備基本的四則運算、乘方等數學基礎知識和日常生活中的基本邏輯判斷能力即可。本書拒絕枯燥乏味的講解,而是代之以輕鬆活潑的風格。書中列舉了大量讀者都很熟悉,而且非常有趣的數學實例,並結合程式設計的思維和算法加以剖析,可以訓練讀者的數學思維能力和程式設計能力,進而拓寬讀者的視野,增強職場競爭力。本書共11章,分別介紹了數據的表示、神奇的素數、遞歸、排列組合、用餘數進行數據分組、機率、複利、數理邏輯、推理、幾何圖形構造、統籌規劃等程式設計中常用的數學知識,從而引導讀者深入理解編程中的數學方法和思路。本書包含的實例有結繩記事、孿生素數、梅森素數、哥德巴赫猜想、階乘、漢諾塔、斐波那契數列、乘法原理、加法原理、字元編碼、密碼長度、日曆中的數學、心靈感應魔術、約瑟夫環、智叟分牛、百枚錢幣鼓士氣、莊家的勝率、中獎機率、用機率方法求π值、複利的威力、對摺紙張、舍罕王的賞賜、三段論、選言推理、假言推理、關係推理、花盆擺放、殘缺棋盤、丟失的線條、田忌賽馬、背包問題等。本書適合廣大程式設計人員及數學愛好者閱讀,尤其適合有一定程式設計經驗,但還需要進一步加深對程式設計理解的人員閱讀。本書對IT求職人員、信息學競賽和大學生程式設計競賽等參賽學員也有很好的參考價值。

基本介紹

  • 書名:程式設計師的數學思維修煉
  • 類型:計算機與網際網路
  • 出版日期:2014年4月1日
  • 語種:簡體中文
  • ISBN:9787302350606, 7302350604
  • 作者:周穎 等
  • 出版社:清華大學出版社
  • 頁數:302頁
  • 開本:16
  • 品牌:清華大學出版社
基本介紹,內容簡介,作者簡介,專業推薦,媒體推薦,名人推薦,圖書目錄,序言,

基本介紹

內容簡介

一本專門為程式設計師而寫的數學書,訓練數學思維,增強職場競爭力
書中沒有羅列晦澀難懂的數學公式和推導,而是代之以生動有趣的數學實例
讀者不必精通高深的數學知識,只需要具備四則運算和基本的邏輯思維即可閱讀
趣談110個數學實例,並給出了33個具體的程式代碼實現
內容通俗易懂,講解娓娓道來,風格活潑自然,版式新穎,讀來親切自然

作者簡介

周穎,畢業於電子科技大學。高級程式設計師、某軟體公司的技術總監。擅長C和C++語言,對數據結構和算法有深入的研究。長期從事行業軟體設計和團隊管理工作,已十年有餘。有著豐富的IT架構設計經驗和行業諮詢經驗。負責過多個大型軟體項目的開發工作。

專業推薦

媒體推薦

本書與專業的數學書籍不同,意在啟發程式設計人員的思維。書中沒有大篇幅的理論和公式推導,這使得本書簡單易懂。而且書中各章節的內容與現實生活緊密結合,閱讀起來趣味橫生。推薦給對程式設計感興趣的人員,一定大有裨益。
——深圳亞鼎科技有限公司信息系統部總監 方擎

這是一本為程式設計師朋友們寫的數學書,淺顯易懂,適合入門。閱讀者不需要掌握高深的數學知識,具有國中數學知識就可以讀懂本書。書中介紹了編程中常用的數學知識,藉以培養初級程式設計師的數學思維。
——IBM中國商業價值研究院高級分析師 劉京華

雖然我自己不是程式設計師,但是我覺得即使不打算往程式設計師方向發展的人,也可以從這本書中獲得很多思維模式上的幫助。書中的內容相當生動形象,而且是用非常淺顯易懂的語言來講解。書中介紹的數學知識也與我們的生活息息相關,這使得本書內容非常容易理解。
——麥肯錫管理諮詢公司上海分公司資深董事 David

本書不是一本數學教科書,不必逐章順序閱讀,不妨當作“枕邊書”不時拿起來翻翻,定能受到啟發。很多時候,有些東西我們一開始並沒什麼感覺或興趣,但當它和我們的生活或工作有關聯時,忽然覺得大有新意。本書就是如此,對於學習編程的人而言,真的會有很多意想不到的思維上的啟發。
——東冉科技股份有限公司首席架構師 郭鋒

名人推薦

本書與專業的數學書籍不同,意在啟發程式設計人員的思維。書中沒有大篇幅的理論和公式推導,這使得本書簡單易懂。而且書中各章節的內容與現實生活緊密結合,閱讀起來趣味橫生。推薦給對程式設計感興趣的人員,一定大有裨益。
——深圳亞鼎科技有限公司信息系統部總監方擎
這是一本為程式設計師朋友們寫的數學書,淺顯易懂,適合入門。閱讀者不需要掌握高深的數學知識,具有國中數學知識就可以讀懂本書。書中介紹了編程中常用的數學知識,藉以培養初級程式設計師的數學思維。
——IBM中國商業價值研究院高級分析師劉京華
雖然我自己不是程式設計師,但是我覺得即使不打算往程式設計師方向發展的人,也可以從這本書中獲得很多思維模式上的幫助。書中的內容相當生動形象,而且是用非常淺顯易懂的語言來講解。書中介紹的數學知識也與我們的生活息息相關,這使得本書內容非常容易理解。
——麥肯錫管理諮詢公司上海分公司資深董事David
本書不是一本數學教科書,不必逐章閱讀,不妨當作“枕邊書”隨時拿起來翻翻,定能受到啟發。很多時候,有些東西我們一開始並沒有什麼興趣,但當它和我們的生活或工作有了關聯時,忽然會覺得大有新意。本書便是如此,對於學習編程的人而言,真的會有很多意想不到的思維上的啟發。
——東冉科技股份有限公司首席架構師郭鋒

圖書目錄

第1章數據的表示
1.1一則童話
1.1.10和1的故事
1.1.20是什麼都沒有?
1.1.30的位置
1.1.4程式中的
1.2司空見慣的十進制數
1.2.1遠古的結繩記事
1.2.2什麼是十進制計數
1.2.3為啥人類習慣十進制
1.2.4十進制運算規則
1.2.5十進制數的分解
1.2.620!等於多少
1.2.7大整數構想
1.3為啥要用二進制
1.3.1人腦與電腦
1.3.2二進制計數規則
1.3.3簡單的二進制運算規則
1.3.4二進制數的分解
1.3.5十進制數轉換為二進制數
1.4還有哪些進制
1.4.1神奇的八卦:八進制
1.4.2鐘錶使用的十二進制
1.4.3半斤八兩:十六進制
1.4.460年一個甲子:六十進制
1.4.5各種進制之間的轉換
1.4.6二進制與八進制、十六進制的轉換
第2章神奇的素數
2.1怎么判斷素數
2.1.1什麼是素數
2.1.2驗證素數
2.1.3尋找素數的算法
2.1.4已被證明的素數定理
2.2孿生素數
2.2.1什麼是孿生素數
2.2.2孿生素數的公式
2.2.3中國剩餘定理
2.2.4孿生素數分布情況
2.3使用素數的RSA算法
2.3.1什麼是RSA
2.3.2RSA算法基礎
2.3.3RSA算法實踐
2.3.4RSA套用:數字簽名
2.3.5RSA被破解的可能性
2.4哥德巴赫猜想
2.4.1哥德巴赫猜想是什麼
2.4.2數值驗證
2.5梅森素數
2.5.1什麼是梅森素數
2.5.2已知的梅森素數列表
第3章遞歸——自己調用自己
3.1從前有座山,山裡有座廟
3.1.1老和尚講的故事
3.1.2德羅斯特效應
3.1.3什麼是遞歸
3.1.4用遞歸能解決哪些問題
3.1.5一個簡單例子:求最大公約數
3.2用遞歸計算階乘
3.2.1階乘該怎么計算
3.2.2階乘的遞歸計算方法
3.2.3遞歸的過程
3.2.4遞歸的本質:縮小問題規模
3.3漢諾塔
3.3.1古老的傳說
3.3.2從兩個盤考慮
3.3.3找出遞歸結構
3.3.4實現程式
3.3.5究竟需要移動多少次
3.4斐波那契數列
3.4.1兔子的家族
3.4.2從最初幾月數據中找規律
3.4.3斐波那契數列
3.4.4神奇的魔八方
第4章排列組合——讓數選邊站隊
4.1把所有情況都列出來
4.1.1從0還是1開始
4.1.2賽程安排
4.2乘法原理
4.2.1行程安排的問題
4.2.2乘法原理適用條件
4.2.3棋盤上棋子的放法
4.2.4買彩票保證中獎的方法
4.3加法原理
4.3.1仍然是行程問題
4.3.2總結出的加法原理
4.3.3骰子出現偶數的次數
4.4排列與組合的關係
4.4.1排列
4.4.2組合
4.4.3排列與組合的聯繫
4.4.4可重排列
4.5計算機中的字元編碼
4.5.1ASCII碼能表示的字元數量
4.5.2能表示更大範圍的編碼
4.6密碼的長度
4.6.1容易破解的密碼
4.6.2多長的密碼才安全
4.6.3密碼中使用的字元數量也很關鍵
第5章餘數——數據分組
5.1複習國小的餘數
5.1.1自然數的餘數
5.1.2餘數的性質
5.1.3用餘數進行分組
5.2日曆中的數學
5.2.1n天后是星期幾
5.2.2下月的今天是星期幾
5.2.310年後的“今天”是星期幾
5.3心靈感應魔術
5.3.1一個小魔術
5.3.2魔術師是怎么猜出來的
5.4奇偶校驗
5.4.1不可靠的網路傳輸
5.4.2用奇偶校驗檢查錯誤
5.5呂洞賓不能坐首位
5.5.1座位安排
5.5.2試排座位找規律
5.5.3西方的約瑟夫環
5.5.4用數學方法解約瑟夫環
5.6智叟分牛
5.6.1遺產分配難題
5.6.2智叟給出的分配方案
5.6.3分配原理
第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全為正面的機率是多少
6.2.3必然還是偶然
6.3莊家的勝率是多少
6.3.1一個看似公平的遊戲
6.3.2莊家能贏錢嗎
6.3.3莊家盈利比率
6.3.4遊戲參與者獲勝的機率
6.4你能中獎嗎
6.4.1想中大獎嗎
6.4.2計算中獎機率
6.5漁塘中有多少條魚
6.5.1該怎么估算漁塘中的魚
6.5.2用機率來估算
6.5.3用機率方法求π值
第7章翻一番是多少
7.1翻番的概念
7.1.1什麼是翻番
7.1.2翻倍的概念
7.1.3計算倍數和番數
7.2複利的威力
7.2.1利潤——投資回報
7.2.2認識單利
7.2.3認識複利
7.2.4計算投資回報的程式
7.2.5忘還錢的信用卡
7.2.6愛因斯坦的72法則
7.3對摺紙張
7.3.1有趣的問題:紙張對摺
7.3.2100米長的紙能對摺幾次
7.3.3計算對摺次數的程式
7.4一棋盤的麥子
7.4.1舍罕王的賞賜
7.4.2需要多少麥粒
7.5折半法的運用
7.5.1翻番的逆運算
7.5.2找出假硬幣
7.5.3編寫程式找出假硬幣
7.5.4折半法在查找中的套用
第8章數理邏輯——非此即彼
8.1邏輯的重要性
8.1.1模稜兩可的表述
8.1.2肯定或否定
8.1.3程式中的邏輯判斷
8.2命題邏輯
8.2.1什麼是命題
8.2.2命題的邏輯形式
8.2.3簡單命題
8.2.4複合命題
8.2.5複合命題的聯結詞
8.3布爾邏輯
8.3.1邏輯或
8.3.2邏輯與
8.3.3邏輯非
8.3.4邏輯異或
8.3.5二進制位運算
8.4考慮到各種可能了嗎
8.4.1邏輯重疊的實例
8.4.2邏輯遺漏的實例
8.4.3用數軸確定邊界
8.5用卡諾圖簡化邏輯函式
8.5.1什麼是卡諾圖
8.5.2三變數卡諾圖
8.5.3四變數卡諾圖
8.5.4卡諾圖化簡
8.5.5卡諾圖中的相鄰
第9章推理——邏輯的套用
9.1演繹推理
9.1.1認識演繹推理點
9.1.2三段論
9.1.3選言推理
9.1.4假言推理
9.1.5關係推理
9.1.6演繹推理綜合實例
9.2歸納推理
9.2.1什麼是歸納推理
9.2.2完全歸納推理
9.2.3不完全歸納推理
9.3足球比賽的得分
9.3.1粗心的記分員
9.3.2從已有數據推算出比分
第10章幾何圖形構造
10.1花盆擺放問題
10.1.110盆花擺成5行,每行4盆
10.1.2轉變思路,找出答案
10.1.3升級問題(10盆花擺10行,每行3盆)
10.2殘缺的棋盤能補上嗎?
10.2.1被切割的棋盤
10.2.2能拼接出殘缺棋盤嗎
10.3線條哪裡去了?
10.3.1神奇的魔術
10.3.2解析丟失的線條
10.4圖形剪拼
10.4.1均分三角形
10.4.2拼接正方形
第11章統籌規劃
11.1認識統籌規劃
11.1.1田忌賽馬
11.1.2為什麼會贏
11.2生活中的統籌規劃
11.2.1匆忙的早晨
11.2.2如何節約運輸成本
11.3著名的背包問題
11.3.1什麼是背包問題
11.3.2用遞歸程式解決背包問題
11.3.3用窮舉法解決背包問題

序言

數學在人類文明的發展過程中起著非常重要的作用。數學推動了重大的科學技術進步。從遠古的“結繩記事”,到現代計算機技術的快速發展,都與數學這門學科的發展密不可分。
無論是日常生活中簡單的商品交易計算,還是神舟飛船設計中複雜的計算,都離不開數學。生活即數學。沒有二進制,就不會有現在的計算機;沒有幾何學,就沒有現在的高樓大廈……。
對於程式設計師來說更需要知道:數學是計算機科學的基礎。在我國,絕大部分大學的計算機科學系都是從數學系中分出來的。由此也可以看出,計算機科學與數學的關係非常緊密。
數學是一門化繁為簡的學科。通過數學,可以對現實生活中的很多不同事物進行高度抽象,從而能找出不同事物的共性。不過,由於數學的這種高度抽象,又使數學變得很難學。特別是一些複雜的公式推導,看起來就頭痛。
本書面向程式設計師介紹了程式設計中常用的數學基礎知識。通過閱讀本書,可以訓練程式設計師的數學思維能力和程式設計能力,進而拓寬視野,增強職場競爭力。
本書特點
 簡單易懂 用通俗易懂的語言講解知識點,儘量避免複雜的公式推導過程,讓讀者能夠輕鬆閱讀並掌握相關的數學知識。
 門檻很低 閱讀本書的讀者不需要精通很多高深的數學知識,只需要具備基本的四則運算、乘方等數學基礎知識和日常生活中的基本邏輯判斷能力即可。
 生動有趣 本書拒絕枯燥乏味的講解,而是代之以輕鬆活潑的風格,講解時列舉了大量我們都很熟悉,而且非常有趣的數學實例。
 內容豐富 本書從最簡單的數據的表示開始,對素數、遞歸、排列組合、邏輯推理、幾何構造、統籌規劃等方面都會逐一介紹,涵蓋了程式設計師需要掌握的數學知識。
 圖文並茂 講解每個知識點和實例時,都給出了簡單易懂的圖示和必要分析,讓讀者理解起來清晰明了,沒有任何障礙,也讓讀者感覺到學習數學並不困難。
本書內容概述
第1章通過一則童話故事導入了數據大小的知識,然後逐步介紹了十進制、二進制、八進制、十六進制以及其他常用進制的知識,還介紹了不同進制的轉換方法。
第2章從素數的判斷開始,逐步介紹了與素數相關的數學知識,包括孿生素數、梅森素數、哥德巴赫猜想、RSA的套用等內容。
第3章介紹遞歸這種自己調用自己的方法,通過階乘、漢諾塔、斐波那契數列等經典實例,練習從複雜事物中發現遞歸結構的方法。
第4章的主題是排列組合,從乘法原理、加法原理入手,介紹了排列與組合的概念和關係,並研究了計算機中的字元編碼、密碼長度等相關內容。
第5章討論餘數。主要介紹使用餘數對數據進行分組,如日曆、一些小魔術都是通過餘數分組的規則進行的;本章還討論了計算機中的奇偶校驗及兩個有趣的問題(座位安排和智叟分牛)。
第6章介紹機率的相關知識,首先從兩個常見的事例導入機率的概念,接著從軍事故事、賭場遊戲、中獎機率等方面介紹了機率的實際套用。
第7章學習翻番的知識。首先介紹翻番和翻倍的概念、計算方式。接著進一步通過複利的威力、對摺紙張、舍罕王的賞賜等實例,展示了翻番這個令數據快速增長的數學概念。最後還介紹翻番的逆運算——折半的套用。
第8章學習數理邏輯的相關知識,介紹了邏輯、命題邏輯、布爾邏輯、邏輯的重疊與遺漏等概念,最後介紹了通過卡諾圖化簡邏輯表達式的方法。
第9章則在第8章的基礎上進一步討論了邏輯推理,包括演繹推理中的三段論、選言推理、假言推理、關係推理,以及歸納推理中的完全歸納推理和不完全歸納推理。
第10章介紹了幾何圖形構造的基礎知識,從花盆擺放、殘缺棋盤、丟失的線條等有趣實例,初步了解幾何圖形構造,最後還介紹了幾何圖形的分割與拼接。
第11章討論統籌規劃相關知識,首先從田忌賽馬這個古老故事中看出統籌規劃的重要性,然後通過生活中的兩個簡單例子認識統籌規劃,最後還討論了“背包問題”及其程式設計方法。
本書讀者對象
本書可適用以下各類人員閱讀:
 計算機專業的學生;
 數學專業的學生;
 程式設計人員;
 數學愛好者;
 編程愛好者。

編寫本書的過程中,雖然編者竭盡全力,不敢有絲毫疏忽,但恐百密一疏,書中仍難免存在不足之處,望廣大讀者批評指正。

編著者
  

熱門詞條

聯絡我們