《How to Think Like a Computer Scientist- C version》,Allen B. Downey,C-Version by Thomas Scheffler. (簡記為ThinkC)
ThinkC是大0計算機本科生的自學教材官研,篇幅不長婆殿,其目的是讓閱讀者對程序設計有初始的認識丛肢,了解C語言的基本特性围肥,為后續(xù)課程打下基礎。本文試圖指出初次閱讀者普遍存在的問題蜂怎,并給出相應對策穆刻。
如果你已經是大一新生了,其實杠步,嗯.....建議還是假裝自己是個大0青年氢伟,花點時間把ThinkC看完。不然篮愉,你怎么能夠安靜地度過漫長的新生教育周呢腐芍?
閱讀計劃
ThinkC全書130頁左右差导,共九章加兩個附錄(附錄B無需閱讀试躏,附錄A也可忽略)。執(zhí)行能力強的學生设褐,大概七天可以完全閱讀完颠蕴。按以下計算,如果要求在一個月之內完成助析,不算要求高犀被。也就是說,一周學兩章左右外冀,也就是25頁寡键。一周工作五天,每天兩小時雪隧,也就是每小時看2.5頁N餍!脑沿!這是驚人的慢速度藕畔,太可怕。這樣慢其實是學不到東西的庄拇。
所以注服,這樣計劃好了:分兩周閱讀韭邓,每周五天,每天兩小時:
- 第一周溶弟,前四章女淑,1- 48頁
- 第二周,后五章辜御,49-130頁
閱讀策略
簡單給以下建議:
1诗力、閱讀必須快,按計劃執(zhí)行我抠,保持強有力的執(zhí)行力苇本。
2、閱讀過程中必須動手菜拓,準備好相關的資源瓣窄,見下面內容。
3纳鼎、ThinkC是關于Know How的書俺夕,而不是Know Why的書,所以贱鄙,你只需要(或者大部分時間只需要)按規(guī)定動作去做劝贸,而不要問太多為什么。
ThinkC只是入門逗宁,只是一個簡單的概要映九,目的就是讓大家對編程有基本的認識,所以瞎颗,不要指望在這里能學到非常高深的東西件甥。這樣你們當然不能在這里停留太久。否則哼拔,只能說明你的能力不強引有,或者心不在焉。
最后一個建議:閱讀時不要查字典>胫稹F┱!
閱讀之前的準備
1檬姥、個人電腦一臺曾我,Linux系統(tǒng)尤其好,Windows也可以穿铆。
2您单、安裝基本的軟件,或者按照這里的建議荞雏。Linux系統(tǒng)可免以上安裝虐秦。
心態(tài)上的準備:不理解應該是常態(tài)平酿,看不懂很正常。閱讀這本書不是因為你容易懂才讓你讀悦陋,而且這本書根本不需要你理解蜈彼,而是讓你照做。
閱讀內容概要
C語言只有很簡單的語法俺驶,有比較復雜的數據幸逆。語法是強調什么樣的程序才是正確的程序。每一個程序都有特定的目標:輸入數據暮现,處理數據还绘,輸出結果,因此數據是程序中重要的元素栖袋。接下來我會提示大家拍顷,什么是語法,什么是數據塘幅。
1 The way of the program
告訴你什么是編程昔案,編程的基本過程,如何修改程序电媳,然后一些術語踏揣。運行你人生中第一個程序:Hello World!
如果你這個兩小時也看不完匾乓,請做這樣的事情:
1捞稿、劃出不理解的語句
2、找出不理解的單詞
3钝尸、無論如何運行一次“Hello World括享!”
然后,把自己打一頓珍促,接著看下一章。因為剩愧,這里沒有東西需要你理解了猪叙。這里沒有語法也沒有數據!
2 Variables and types
這一章介紹最簡單的數據仁卷。變量(Variable)存放不同類型(Types)的數據穴翩。比如,程序需要處理整數锦积,那么定義整數類型的變量芒帕,并給變量一個名稱:
int number;
3 Function
Function是結構化程序設計的核心元素。簡單而言丰介,結構化就是把程序分割成不同的模塊背蟆,Funtion(函數)就是相對獨立的模塊鉴分。
4 Conditionals and recursion
所有的程序只有三種類型的語句:順序執(zhí)行、條件分支與迭代運行带膀。
所謂Conditionals就是讓程序在特定的情況下執(zhí)行特定的語句志珍。至于遞歸,請看我的解釋垛叨。
5 Fruitful functions
對第三章函數的進一步擴展伦糯,強調函數的返回值。
6 Iteration
所謂迭代就是讓程序在特定的語句上重復執(zhí)行嗽元。
7 Arrays
以上內容基本都是關于“語法”敛纲,而最后三章重點關注數據結構,即不簡單稱為數據剂癌,而讓數據有特定的結構载慈。數組則是C語言中最基本的也是非常重要的一種數據結構。
要理解數組不難珍手。想象你要存儲一批同等類型的數據(或者想象一批大小相同的蘋果)办铡,那么就需要一批同等類型的盒子。如何訪問盒子里面的數據呢琳要?最簡單的方法就是記住盒子的編號寡具,這里記為數組下標。
8 Strings and things
略稚补!
9 Structures
略童叠!
為什么略?因為课幕,如果你都很快看到第8第9章厦坛,那么這里還有什么值得講的呢?如果你都看不到乍惊,那么我講來干什么呢杜秸?
如何兩個小時講完ThinkC
教學形式
老師講解;助教敲代碼润绎,投影撬碟;同學們立即在自己的電腦上運行程序;另一個助教巡視課堂莉撇,指出錯誤呢蛤,幫助把程序運行起來。
教學內容
1棍郎、Hello World其障,講解一個程序的完成編寫、執(zhí)行過程涂佃;
2励翼、變量:int蜈敢、char、double抚笔,輸入扶认、輸出;
3殊橙、條件判斷:給定一個整型變量辐宾,判斷是偶數還是奇數;
4膨蛮、循環(huán):整數累加器叠纹、階乘;
5敞葛、函數:把累加器誉察、階乘寫成函數形式;
6惹谐、遞歸:階乘持偏、Fibonacci數列;
7氨肌、數組:數組的初始化鸿秆,數組中數值的累加;
8怎囚、二維數組:數組初始化卿叽,矩陣的加法;
結構體恳守、指針考婴、鏈表與二叉樹可作為一次授課內容;時間2017年9月9日催烘。
授課手記
老師一人沥阱,助教2人,學生14人颗圣。
時間:9:30 - 12:00
地點:131實驗室
效果:學生們普遍反映可以接受教學內容喳钟;
待改進:許多學生沒有做好學習的準備,學生缺乏主動性在岂,電腦沒有安裝編譯器等。
感想:這種授課方式可以全面展開蛮寂,前提是學生們要主動蔽午。
小結
看ThinkC一定要快,要快酬蹋,要快及老!這是一本膚淺的教你如何編程的書抽莱,不是一本高深的教你編程理論的書。知道什么是程序嗎骄恶?
程序 == 算法 + 數據結構
你看完ThinkC食铐,學了什么算法,學了什么數據結構僧鲁?沒有...... 那你學編程了嗎虐呻?學了,可惜寞秃,你寫的不是程序(Programs)斟叼,只是代碼(Codes)。
路很長......
路這么長春寿,為什么你不能起早一點朗涩,趕得快一點......
20170904