第一章 概述
C++到底難不難學?沒有學不會的事情
1.1 程序設計語言
語言
編程語言 人和計算機交流的工具,群體擴大,人人間交流過程描述與信息表達的工具
機器語言,匯編語言,高級語言
1.2 C++簡史
1.3 C++
-
褒貶C
計算機應用范圍的擴大和編程規模的擴大,可維護性、可擴展性、安全性要求。提出程序設計語言應該具有數據類型的擴充能力,基于數據類型和面向數據類型的編程語言不斷出現。以程序員自己定義或設計數據類型的方式將復雜結構的數據進行系統的組織,統一的管理,以使程序組織合理,算法設計簡單易懂。 -
C繼承者
C++既可以進行過程化編程,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計,并正在完善以模板為特點的泛型程序設計。 C++是一種混合型程序設計語言,可以采用程序設計方法,進行各種目的之編程。不放棄高效運行的實用性特征,而又致力于提高大規模程序的編程質量,提高程序設計語言的問題描述能力。 -
標準C++
標準C++與程序員更緊密的關系是系統的可移植性,采用標準C++編程可在不同的標準C++編譯器上得到在不同計算機系統中運行出同樣結果的機器程序。程序員可利用標準庫。標準C++工具:windows:C++ Bulider6.0以上,VisualC++.NET以上,Linux:G++3.0 、Borland C++ Kylix3.0及以上
1.4 C++編程流程
-
編程過程
編程語言分為解釋型和編譯型,解釋型沒有編譯和連接的中間環節,方便執行但無法離開解釋器現場,需要不斷交互所以性能低。C++編程過程,編輯、編譯、鏈接、調試 -
最小樣板程序
-
編程風格
1.5 程序與算法
-
程序
不同主體或不同狀態性能有差異,追求的是各個抽象層次的編程,追求編程方法的實效性。這意味這“學會計算機語言,看得懂語法,了解了語言的描述方法”,還是不夠的,它和熟練運用計算機語言,能用語言高效、正確地描述問題、解決問題是有天壤之別的。 - 算法
程序的動作序列包含了對數據的存儲訪問和算術運算。對數據的合理描述、組織、存放和讀取,關系到程序運行的和高效。
-
目的性:算法是有求節目的之動作序列,必須有運算結果
-
抽象性:算法離不開數據結構,比具體的程序設計更超脫,抽象層次更高一些,不在乎實現語言
-
研究性:描述算法的目的是溝通人們的是想,而不是實現,通過語言實現的程序來驗證算法其資源占用與性能各項指標
-
-
編程與結構(Programming & Structures)
編程強調全方位,具體問題請具體分析,編程當然是為了解決計算問題,計算問題強調算法,程序設計也就是在一定的抽象層次上的算法計算。這里的抽象層次理解為數據的描述方式。大量數據處理,編程問題含有大量縱橫交錯的數據時,意識到數據組織和數據結構的重要性,數據存在的形式必須脫離程序。程序=算法+數據結構。編程中數據結構的描述應相對算法而獨立。針對算法事實上與數據相分離,如果數據由數據結構來描述,算法就可以以數據結構為依托,通過數據結構來訪問數據,從而簡化算法和提高邏輯清晰性。
-
從動態性上說:程序仍然是計算機中的過程運行體,即操作系統中的的進程。
-
從靜態性上說:程序不再是單純的過程體(操作序列)了,不再是單純的算法了,而是算法和數據結構的有機組織。程序含有更多的數據組織描述,而數據組織描述又包含有一系列的操作。
程序所反映的操作序列依賴于抽象層次更高的數據結構,而不是直接對應于單純空間上的原始數據。觀念上程序發生了變化,帶來了設計方法的進化,改變了程序的靜態描述形式,動態與靜態不再對應了,計算機運行的進程與人工編程的邏輯開始分離,從單純直譯進入到對程序結構的復雜分析與理解。
-
1.6過程化程序設計
-
基于過程的程序設計(Procedural-Based Programming)
從程序設計的角度來說,程序的概念是組織成一定形式的操作序列。過程結構中問題模型反應為過程結構模型,實際上就是功能模型。描述算法時一般總是分層次描述的,過程化設計以一系列過程的劃分和組織來觀察、分析和解決問題。 -
結構化程序設計(Structured Programing)
學習程序設計方法的根本是要解決如何組織程序的問題,也即解決算法與數據的關系問題。- 描述任何實體的操作序列只需要三種基本控制結構:順序,選擇,循環
- 程序設計中的各個過程體和組成部分應以模塊表示:每個模塊其內聚性越強,外鏈性越少,則模塊獨立性越好。
- 過程化的程序設計方法:程序設計采用從上到下,逐步細分的方法展開,即過程化程序設計方法
1.7對象化程序設計
-
基于對象的的程序設計(Object-Based Programing)
抽象數據模型就是想要描述這一共同規范,它描述數據的組織和相關的操作,反映了問題的抽象模型。數據類型的本質是數據組織和其操作的捆綁性。程序=算法+抽象數據類型。對象是程序中抽象數據類型的具體表現。算法是基于抽象數據類型的,是作用在抽象數據類型實體化的過程中的行為序列。程序的行為表現為分層的過程結構與對象定義的集合。 -
面向對象的程序設計
類的層次關系也帶來了對象的層次關系,它反映了同種操作的異類行為。要能準確地反應分層之后的對象集合中每個對象行為的個性,這種屬性稱為對象操作的多態性。程序的運行是通過抽象數據類型來表現和溝通,而抽象數據類型最后還是以對象來實例化的。
1.8目的歸納