關於C++學習 && 中國大學MOOC計算機程式設計(C++)課程程式碼
近期複習資料結構,由於很長一段時間沒有寫程式了,有點生疏,正好藉此機會從頭過一遍C++。
關於C++的複習,我想還是聽網路課程的效率會高一些。特地在中國大學MOOC上找到了課程,接下來我就按照這門課程的教學進度進行復習,關於這個課程涉及到的程式碼我都會在接下來的時間中做好彙總和實現,一方面作為程式碼的記錄,一方面便於自己以後複習。
之後的部落格會按照課程大綱進行程式碼上傳,下面是這門課程的大綱。
課程概述:本課程以C++語言為載體,講授計算機程式設計,為更好地利用計算機解決工程實踐、科學研究和日常生活中的問題打下基礎。
從程式設計方法角度分,計算機語言有面向過程的和麵向物件的。面向過程的思想是將任務分解成一系列的函式,函式通過相互呼叫聯絡起來完成任務。面向物件的思想是將任務分解成一系列物件,物件具有功能。物件間通過訊息傳遞資訊,觸發事件,完成任務。面向物件的語言被認為具有更好的重用性、可維護性和可擴充套件性。C++是面向物件的語言。但也要注意,面向過程和麵向物件不是截然分開的,不是對立的。面向過程是面向物件的基礎。本課程前半部分的程式設計思想仍是面向過程的,這對初學者更容易入門;後半部分是面向物件的,為進一步學習奠定基礎。
學習程式設計,要學習語言的語法,更重要的是求解問題的演算法思想。語法的學習需要多嘗試,演算法的學習需要多思考。學習程式設計,就要多程式設計。
課程大綱:
第1周程式設計作業
1.1 程式設計和C++
1.2計算機語言的分類
1.3HelloWorld和程式設計環境
1.4程式錯了怎麼辦
1.5例項:生日賀卡
1.6例項:加法計算器
1.7例項:計算存款本息
1.8C++程式的基本要素
本週課件和推薦閱讀
第1周單元測試
2.1資料型別
2.2常量和變數
2.3算術運算和自增自減運算
2.4關係運算
2.5邏輯運算子
2.6位運算
2.7特殊運算子(賦值運算子、位元組數運算子、條件運算子和逗號運算子)
2.8混合運算的型別轉換
2.9例項:計算三角形的面積
2.10例項:構造5位數的反序數
2.11例項:加密解密
重點難點:整數、字元和字串
重點難點:轉義符
本週課件
小技巧:設定執行視窗顏色為白底黑字
第2周單元測試
第2周程式設計作業
第3周 運算的流程控制
3.1程式流程控制
3.2單路和雙路分支
3.3多路分支
3.4已知次數迴圈
3.5已知條件迴圈
3.6例項:解一元二次方程
3.7例項:簡單計算器
3.8例項:尋找自冪數
重要技巧:程式除錯方法——加輸出語句
重要技巧:程式除錯方法——單步跟蹤
本週課件
第3周單元測試
第3周程式設計作業
補充練習題
第1周補充練習
本單元沒有教學內容,專門提供課外程式設計練習題,可以線上評測,開課期間不關閉,期末不計分(儘管有分值)。
第2周補充練習
第3周補充練習
第4周補充練習
第4周 複雜資訊的表達與處理
4.1一維陣列
4.2二維陣列
4.3結構體
4.4列舉(例項三色球組合)
4.5例項:氣泡排序
4.6例項:文字資訊統計
4.7例項:使用string字串
4.8例項:矩陣乘法
4.9例項:取子字串
4.10例項:詞頻統計
本週課件
第4周單元測試
第4周程式設計作業
第5周 問題的模組化求解
5.1 模組化程式設計
5.2 函式的定義
5.3 函式的宣告
5.4 函式的呼叫格式
5.5 引數的傳遞方式
5.6 為形參指定預設值
5.7 陣列名作為函式的引數
5.8 結構體變數作為函式的引數
5.9 例項講解
第5周課件
第5周單元測試
第5周程式設計作業
第6周 問題的模組化求解(2)——特殊函式
6.1 遞迴函式
6.2 行內函數
6.3 函式過載
6.4 變數的作用域和儲存型別
6.5例項講解(Hanoi問題,Fibonacci序列遞迴求解,二分查詢的遞迴實現,排序函式過載)
第6周課件及課程學習建議
補充——圖解漢諾塔
第6周單元測試
第6周程式設計作業
第7周 按址操作(1)——指標、變數和函式
7.1 什麼是指標
7.2指標和變數的關係
7.3指標作為函式的引數
7.4返回指標的函式
7.5指向函式的指標
7.6例項講解(利用指標實現三個數的排序、返回字元指標的去掉字串首部空格函式、通過指標同時返回圓的面積和周長(擴充套件-多功能函式)、通定積分函式)
第7周單元測試
第7周程式設計作業
第8周 按址操作(2)——指標與陣列、字串、結構體,動態陣列
8.1陣列與指標、指標的算術運算
8.2指標的關係運算、通過指標訪問陣列元素
8.3二維陣列與指標
8.4指向一維陣列指標(行指標)、字串指標
8.5 字元指標應用、指標陣列
8.6結構體與指標
8.7動態陣列
8.8例項講解(陣列元素逆序(指標和動態陣列實現)、字串排序(指標和動態陣列實現)、32位二進位制IP地址轉換為十進位制點分IP地址(帶合法性檢驗))
第8周單元測試
第8周程式設計作業
第9周 資料的抽象與封裝——類與物件(1)
9.1 類的概念
9.2 類的定義
9.3物件的宣告與使用
9.4 類的私有、公有與保護成員
9.5 日期類的設計
9.6 結構化和麵向物件的程式設計思想
9.7 可鳴笛、運動和播放MP3的汽車類的設計
9.8 圓類的設計
9.9 例項講解
第9周單元測試
第9周程式設計作業
第10周 資料的抽象和封裝——類(2)——建構函式、解構函式和指向物件的指標
10.1 建構函式的定義
10.2 過載建構函式
10.3 解構函式的定義
10.4 例項:整數翻譯函式
10.5 例項:實際意義的解構函式
10.6 例項:Person類的設計
10.7 物件與指標
10.8 this指標
10.9 例項講解
10.10 難點解析1——this指標
第10周單元測試
第10周程式設計作業
第11周 取其精華 發揮優勢——繼承
11.1具有行走聽說功能的“人”類的設計
11.2為什麼需要繼承
11.3派生類的定義
11.4基類與派生類
11.5繼承方式
11.6派生類的建構函式與解構函式
11.7從點到圓再到圓柱體的派生類設計
11.8從U盤到MP3的派生類設計
11.9例項講解
第11周單元測試
第11周程式設計作業
第12周 統一介面 不同實現——多型性
12.1多型的概念
12.2派生類物件替換基類物件
12.3虛擬函式
12.4抽象類
12.5運算子的過載
12.6例項1水果類與虛擬函式
12.7例項2日期類與比較運算子的過載
12.8例項3分數類與加減運算子的過載
12.9例項4陣列類與插入運算子(<<)的過載< span="">
12.10補充內容:虛解構函式
12.11補充內容:淺拷貝和深拷貝
第12周單元測試
第12周程式設計作業
第13周 標準輸入輸出與檔案操作
13.1流的概念和流類的結構
13.2標準輸入流
13.3標準輸出流
13.4檔案操作基礎
13.5文字檔案讀寫
13.6二進位制檔案的讀寫
13.7檔案操作例項(隨機發牌、統計詞頻、MP3賦值、成績管理)
13.8補充內容:const用法總結
第13周單元測試
第13周程式設計作業
第14周 模板和標準模板庫簡介
14.1 函式模板
14.2 類模板
14.3 STL 簡介
14.4 vector容器
14.5 vector上的迭代器
14.6 vector上應用演算法
14.7 序列型容器概覽
14.8 關聯容器概覽
14.9 map容器
14.10 容器介面卡概覽
第14周PPT課件
第14周單元測試