老師開始時展示了乙個餅乾人愛情故事——去年乙個學生編寫的scratch專案,告訴我們程式設計要一步一步來最終達成目標而不是直接完成整個專案。老師大致講解如何編寫這樣的程式,點出一些核心思想,一步一步從單獨的小零件開始,最終搭建出自己瑰麗無比的高樓大廈。
然後老師開始把scratch程式延伸到c程式來,展示給我們乙個c的「hello world」的程式,(講hello world的套路和the c programming language 上的套路好像)告訴我們printf的f是指格式化輸出,然後用scratch中的loop聯絡到c中的while,以及指定迴圈次數的loop聯絡到c中的for迴圈,然後介紹了變數,int型別,布林表示式,&&,陣列等一些概念,並告訴我們需要乙個編譯器。
老師就在命令列上開始寫程式,告訴我們要儲存乙個.c的檔案,再用gcc執行會生成乙個a.out檔案,然後./a.out說明hello.c是生成在當前資料夾下的,按下回車後就會輸出。再回到程式,介紹了標頭檔案,介紹了main函式為程式的起點,介紹了大括號還有轉義序列\n等等,並介紹了另外的一些命令列輸出方式,-o hello hello.c,以及make hello,這樣可以直接./hello按回車完成輸出。然後因為每個人的機器不同,寫的程式會有很多冗長的步驟,所以老師引出了在伺服器上程式設計。
之後老師開始介紹函式,再給了cs50自己寫的一些函式,老師用vim文字編輯器開啟了cs雲上的一些源**,介紹了string型別(但是c語言中不是沒有string麼,只有c++有吧,這個應該是cs50.h裡typedef的char*吧),並介紹了佔位符。告訴我們一些思想,要用簡明扼要的注釋描述程式。之後介紹了cs50.h宣告的乙個封裝好的函式getstring,會返回乙個string。由乙個編譯錯誤告訴我們要在行末尾加上庫,也就是 -lcs50。然後再通過比如不輸任何字元之類,告訴我們要一絲不苟的檢查錯誤,防止一些疏忽造成的安全問題。
老師接著通過乙個同學關於字串的問題,告訴我們字串是一系列字元,這些在ram中儲存成一系列的ascii碼,由1和0組成。再通過同學問不同編譯器之間的區別,老師向我們介紹了ide,再稍微介紹了一些makefile。
然後老師介紹了ls,列表命令,列出了檔案目錄,cd是用來改變目錄。
老師再介紹了%c,%lld等佔位符和\n,\t(製表符)等轉義序列。並舉出以前老式印表機的例子,換行(\n)相當於翻紙,回車(\r)相當於將列印字的壓印頭移到最左邊(以前我看翁愷老師講的c也提到了這個例子),再講了不同作業系統下,因為標準不同,換行儲存在檔案中的轉義序列可能是\n,\r或是\r\n。
然後講到字串中要輸出雙引號必須前面加反斜槓,要輸出反斜槓也是如此。
再介紹了一些數學操作符,+,-,*,/,以及%.然後因為c是直接訪問硬體的,所以每個變數都要說明資料型別,這樣才能分配相應的空間。乙個char8位元也就是1位元組,float 4位元組,精度是有限的。int 32位元,longlong則是64位元。然後老師解釋了c是沒有bool型別的。然後解釋了string確實是cs50提供的,其實就是char*。其實是乙個位址,字符集在儲存器中的位置。然後老師給了一張優先順序的表。最後老師給了乙個中心對稱的圖案,其實就是乙個c語言源**,最後輸出了乙個動態的漩渦,結束了這節課。
因為我c很熟悉了,這節課相當於複習,主要是更加熟悉了一些命令列方面的知識。
第6周任務3
include include cmath using namespace std enum symmetricstyle 分別表示按x軸,y軸,原點對稱 class cpoint void distance cpoint p const 兩點之間的距離 一點是當前點,另一點為引數p void di...
第13周任務3
include using namespace std class shape class circle public shape virtual float area const private float radii float circle area const class rectangle...
第十周任務3
程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 作 者 苗影 完成日期 2012 年 4 月 24 日 版 本 號 include using namespace std class point double gety friend ostream operator ostream point ...