第3課C語言,原始碼,編譯器(1) -2011.10.11
編程思想,從語句的格式文法中抽離。介紹了loop、邏輯運算式,數組,這些抽象概念以及C語句的範例。介紹原始碼、編譯器,gcc -ohello hello.c, make hello,gcc -o hello hello.c-lcs50(載入libary)。介紹了函數。
CS50建立的一台伺服器,每個人都可以在上面註冊名字,通過ssh登入,這個也稱為雲,雲倒是一個萬能的名詞。
和之前的公開課一樣,非常重視注釋,在程式的開始,注釋說明程式的內容,作者等資訊。
介紹primitive類型,float、int、char、bool之類等等。字元'\r',回到最左邊,所以有時我們看到換行是"\r\n",而Mac只是"\r"。
第4課C語言,原始碼,編譯器(2) -2011.10.19
gcc後面的參數-ggdb是調測用,我還是喜歡用printf來解決,並用-DDEBUGX之類的來定義是否要設定宏定義,將調測的語句都防止在#ifdefDEBUGX後面。貌似還未使用進階調測方式。
sizeof用於檢測資料所佔儲存空間。long在linux中(至少在某些機器中)仍然為4,與int等同,可以使用longlong的類型,長度為8。這些長度和機器以及系統有關。
介紹了整型除法的問題和解決方式。
介紹if(){}else{}的用法,邏輯判斷,switch語句、for語句、while語句,do{}while()語句。Linux中的man用法。其實我喜歡vi,也很喜歡用命令的方式來編譯和運行。
第5課函數,全域變數,參數,傳回值(1) -2011.10.20
Typecasting類型變換,要注意溢出問題。對於float運算,由於儲存位置有限,32bit或者64bit,會存在精度問題,對於浮點大小比較需要注意,例如0.81+0.03== 0.84不一定成立。
介紹了迴圈嵌套。int main(int argc ,char ** argv ){}或者參數的含義。運算溢出的處理。
第6課函數,全域變數,參數,傳回值(2) -2011.10.24
講述了一些入門者需要注意的文法書寫方式。接著介紹函數,講述記憶體的分配方式。記憶體從上至下為Heap,用於分配給全域變數,包括靜態和動態,從下至上為stack,用於分配local變數和函數。通過intmain(int argc, char * argv[])引入命令列操作,數組的概念。
相關連結:我的與編程思想相關的文章