編程的真正挑戰(zhàn)不是學(xué)習(xí)一種語(yǔ)言的語(yǔ)法,而是學(xué)習(xí)創(chuàng)造性地解決問(wèn)題,從而構(gòu)建美妙的應(yīng)用。本書分析了程序員解決問(wèn)題的方法,并且教授你其他圖書所忽略的一種能力,即如何像程序員一樣思考。
全書分為8章。第1章通對(duì)幾個(gè)經(jīng)典的算法問(wèn)題切入,概括了問(wèn)題解決的基本技巧和步驟。第2章通過(guò)實(shí)際編寫C 代碼來(lái)解決幾個(gè)簡(jiǎn)單的問(wèn)題,從而讓讀者進(jìn)一步體會(huì)到問(wèn)題解決的思路和應(yīng)用。第3到7章是本書的主體部分,分別探討了用數(shù)組、指針和動(dòng)態(tài)內(nèi)存、類、遞歸和代碼復(fù)用來(lái)解決問(wèn)題的途徑和實(shí)際應(yīng)用。,第8章從培養(yǎng)程序員思維的角度,進(jìn)行了總結(jié)和概括,告訴讀者如何才能像程序員一樣思考。
本書選取的話題切中程序員的痛點(diǎn),針對(duì)他們最容易陷入掙扎的領(lǐng)域展開(kāi)討論,引發(fā)思考。每章后面都給出一些編程習(xí)題,使得讀者能夠應(yīng)用該章所討論的概念,訓(xùn)練和提升問(wèn)題解決的能力。
本書適合初級(jí)到中級(jí)的程序員用來(lái)提升自己的問(wèn)題解決能力和應(yīng)用編程技能的能力,也適合計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生作為參考書閱讀。
學(xué)會(huì)像程序員一樣思考,構(gòu)建創(chuàng)新性問(wèn)題解決方案!本書習(xí)題極其類似Google和Facebook的面試題,對(duì)于軟件工程師面試有非常大的參考價(jià)值!眾多專業(yè)網(wǎng)站和媒體好評(píng)如潮!
V. Anton Spraul講授入門級(jí)編程和計(jì)算機(jī)科學(xué)已經(jīng)超過(guò)15年。本書凝聚了他在多年的開(kāi)發(fā)經(jīng)歷中所提煉的經(jīng)驗(yàn)和技巧,并在面向許多遭遇瓶頸的程序員的一對(duì)一指導(dǎo)中收到了良好的效果。他還是《ComputerScience Made Simple》(Broadway)的作者。
譯者簡(jiǎn)介
徐波浙江寧波人,熟悉C和C 、Java等編程語(yǔ)言。2002年開(kāi)始從事計(jì)算機(jī)技術(shù)圖書翻譯。徐波技術(shù)視野廣闊,翻譯文筆優(yōu)美。譯著有《C專家編程》、《C和指針》等。
第1章 解決問(wèn)題的策略
1.1 經(jīng)典難題
1.1.1 狐貍、鵝和玉米
1.1.2 瓷磚滑塊問(wèn)題
1.1.3 數(shù)獨(dú)
1.1.4 Quarrasi鎖
1.2 基本的問(wèn)題解決技巧
1.2.1 總是要制訂計(jì)劃
1.2.2 重新陳述問(wèn)題
1.2.3 劃分問(wèn)題
1.2.4 從自己所知的開(kāi)始
1.2.5 削減問(wèn)題
1.2.6 尋找類比
1.2.7 試驗(yàn)
1.2.8 避免陷入挫折感
1.3 習(xí)題
第2章 純粹的難題
2.1 本章所使用的C 簡(jiǎn)述
2.2 輸出圖案
2.3 輸入處理
2.4 追蹤狀態(tài)
2.5 結(jié)論
2.6 習(xí)題
第3章 用數(shù)組解決問(wèn)題
3.1 數(shù)組基礎(chǔ)知識(shí)概述
3.2 用數(shù)組解決問(wèn)題
3.3 固定數(shù)據(jù)的數(shù)組
3.4 非標(biāo)量數(shù)組
3.5 多維數(shù)組
3.6 決定什么時(shí)候使用數(shù)組
3.7 習(xí)題
第4章 用指針和動(dòng)態(tài)內(nèi)存解決問(wèn)題
4.1 指針基礎(chǔ)知識(shí)回顧
4.2 指針的優(yōu)點(diǎn)
4.2.1 運(yùn)行時(shí)確定長(zhǎng)度的數(shù)據(jù)結(jié)構(gòu)
4.2.2 可改變長(zhǎng)度的數(shù)據(jù)結(jié)構(gòu)
4.2.3 內(nèi)存共享
4.3 什么時(shí)候使用指針
4.4 內(nèi)存細(xì)節(jié)
4.4.1 堆棧和堆
4.4.2 內(nèi)存的大小
4.4.3 生命期
4.5 解決指針問(wèn)題
4.5.1 可變長(zhǎng)度的字符串
4.5.2 鏈表
4.6 結(jié)論和未來(lái)的步驟
4.7 習(xí)題
第5章 用類解決問(wèn)題
5.1 類的基礎(chǔ)知識(shí)回顧
5.2 使用類的目的
5.2.1 封裝
5.2.2 代碼的復(fù)用
5.2.3 問(wèn)題的細(xì)分
5.2.4 信息隱藏
5.2.5 可讀性
5.2.6 表達(dá)能力
5.3 創(chuàng)建一個(gè)簡(jiǎn)單的類
5.3.1 問(wèn)題:班級(jí)花名冊(cè)
5.3.2 基本的類框架
5.3.3 支持方法
5.4 具有動(dòng)態(tài)數(shù)據(jù)的類
5.5 需要避免的錯(cuò)誤
5.5.1 假類
5.5.2 單功能
5.6 習(xí)題
第6章 用遞歸解決問(wèn)題
6.1 遞歸基礎(chǔ)知識(shí)回顧
6.2 頭遞歸和尾遞歸
6.3 大遞歸思路
6.4 常見(jiàn)的錯(cuò)誤
6.4.1 過(guò)多的參數(shù)
6.4.2 全局變量
6.5 把遞歸應(yīng)用于動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)
6.5.1 遞歸和鏈表
6.5.2 遞歸和二叉樹
6.6 包裝器函數(shù)
6.7 什么時(shí)候選擇遞歸
6.8 習(xí)題
第7章 通過(guò)代碼復(fù)用解決問(wèn)題
7.1 良好的復(fù)用和不良的復(fù)用
7.2 組件基礎(chǔ)知識(shí)回顧
7.3 創(chuàng)建組件的基礎(chǔ)知識(shí)
7.3.1 探索式學(xué)習(xí)
7.3.2 根據(jù)需要學(xué)習(xí)
7.4 選擇組件類型
7.5 習(xí)題
第8章 培養(yǎng)程序員的思維
8.1 創(chuàng)建自己的總體計(jì)劃
8.1.1 揚(yáng)長(zhǎng)避短
8.1.2 制訂總體計(jì)劃
8.2 處理任何問(wèn)題
8.2.1 問(wèn)題:絞型者作弊程序
8.2.2 尋找作弊方法
8.2.3 絞型者作弊所需要的操作
8.2.4 初始設(shè)計(jì)
8.2.5 開(kāi)始編寫化碼
8.2.6 對(duì)初始結(jié)果的分析
8.2.7 解決問(wèn)題的藝術(shù)
8.3 學(xué)習(xí)新的編程技能
8.3.1 新語(yǔ)言
8.3.2 已經(jīng)熟悉的語(yǔ)言的新技巧
8.3.3 新代碼庫(kù)
8.3.4 上課
8.4 結(jié)論
8.5 習(xí)題