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