C 學習進度報告

2021-09-16 18:16:23 字數 4565 閱讀 8167

c++學習進度報告 ver1.0

另外說明一下,這裡面所有出現的程式都是我腦補的,會不可避免的出錯,不要在意【)

1、我對c++的理解

1、c++是什麼?

c++是一種在c語言基礎上優化發展出來的語言。c語言對於程式設計的難易度,直觀性,程式設計量都有著很大的改變。然而c語言有自己的不足。

c語言在處理大規模程式的時候,由於會經常並且過多的引用函式,使得整體直觀性大幅下降,程式設計師在直接引用這些程式來達到自己的目的時,會難以修改。c的程式設計結構有自己的優勢,在繼承了這些優勢的基礎上,c++對於程式設計進行了「模組化」處理,也就是類的出現。類的好處在於,類並不是和程式繫結的固定結構,而是乙個十分靈活的自我結構。

它可以直接繼承舊的類,也可以實現多型性——「同一命令對不同的物件實現不同的效果」。在c語言中大規模的程式,在c++中則是乙個個類模板在程式設計師手下的組合。

2、物件導向與面向過程的不同。

傳統的面向過程語言,是以程式為核心的,不同的目的對應不同的程式,缺乏靈活性。物件導向程式設計語言的重要特性之一就是模組化,面對不同的物件,實現不同的效果,將物件作為程式的核心。這樣做的最大的好處是,程式的可讀可改性大幅提高,同時可以直接引用自己需要的類通過資源共享大幅提高程式設計效率,而不再是死板的乙個程式對應乙個目標。

c++的編寫,像是拼積木一樣,先構思乙個框架,然後將自己需要的木塊拿出來用就可以了,乙個接著乙個搭成大樓。而不像c語言,要直接把乙個大樓設計出來。

3、什麼是程式設計?

程式設計,在我的理解裡,就是通過**讓計算機實現自己需要的目的。**本身並不是程式設計的重點,只是起到乙個媒介作用——讓計算機能夠「理解」人的想法。程式設計的重點是程式結構,也就是演算法。

所以一門語言不管學到什麼樣的程度,都不能改變它只是一種工具的本質,甚至對於語言只有基本的了解,然而通過查閱資料仍然可以實現目標。真正的程式設計的思想才是真正應該精益求精的東西。用程式**實現程式結構,或者說演算法,才是學習一門語言的目的,不應該將學習的目的本末倒置。

另外必須要記得另一件事,乙個成品程式是給人用的,所以程式的有效性快速性直觀性都要有要求。

2、c++概述

1、程式結構函式等等。

這一部分的基本思想是完全繼承c語言的,因此本身並沒有太多值得說的東西。但是c++在庫方面,不光繼承了c語言,還進行了增加。本部分主要對新加的內容進行力所能及的說明。

(1)輸入輸出的變化

在c語言中,printf列印和scanf輸入是大家所熟知的。然而這些程式有著一些不方便的地方,比如針對不同的變數要進行不同的說明(%d,%c等等),並且一次只能完成一段話的輸入或者輸出。

在c++中,iostream標頭檔案讓這件事情不再痛苦。流輸入cin和流輸出cout讓程式設計方便許多。

比較一下:

c語言版本

#include

int main()

c++版本

#include

using namespace std;

int main()

輸入輸出的結果應該是一樣的(大概吧)。在這個簡單的程式裡並沒有體現出來不用換行的好處了,然而當需要頻繁輸入輸出的時候,你就自然懂得流輸入流輸出的好了。而且,最重要的是,cin,cout明顯比prinft和scanf短!

【【(這裡稍微說明一下,using namespace std 是乙個說明,很重要的說明。在程式裡出現的cout,cin,endl都是std類下的函式,原本應該表示成std::cout,std::

cin,std::endl,由於c++的版本不同,很多版本裡是不支援直接使用cout,cin這些函式的,需要使用完整的版本,然而宣告了std之後就可以不用再輸入麻煩的std::了。

endl等價於『/n』,iostream標頭檔案裡還有很多這樣的函式,用哪個就看個人喜好就好。)

(2)程式與邏輯結構

完全!沒有!區別!

還是!do-while,for,switch,if else這些東西,除了for有新的用法外其他的完全沒有變。在程式結構上,主要是受演算法影響,而不是受內容影響。

c++在這方面基本上是完全抄襲c的。程式的框架仍然是靠迴圈,選擇,巢狀來實現的。這些並不屬於語言本身,而是數學思維的轉化,沒什麼好講的【【

for的新用法大概是這樣的for(表示式,變數),比如表示式裡是乙個字串陣列a[10],變數是c,那麼這句話for(a[10],c)的意思是c從a[1]到a[10]迴圈一遍。這是一種很方便的用法。不過我沒怎麼用過,如果這段話有錯我也沒有什麼辦法【

此外,基本符號,邏輯符號,位計算這些部分c++也是完全承襲c的。

(3)資料型別

我有言在先,這一部分我有很多地方自己也沒有掌握好……

首先是一些很基本的變數型別,char,int,double,flaot,等等等等,和c是完全一樣的。這裡稍微說一下一種比較特殊的變數,bool型變數,布林變數,內容只有true和false,分別對應0 和1。這個東西雖然是c語言的,但是很容易被遺忘……

然後還有資料的宣告和定義這種根本就是在玩文字遊戲的文字遊戲。簡單的說就是未被宣告的變數不能使用,未被定義的變數很可能是亂碼。所以變數的初始化是很重要的。

(extern是專門用來宣告變數的。我沒用過)

強制轉化是乙個很厲害的東西,可以將一種型別強制變成另一種型別,比如int a=1.0,將會將1.0強制變成1賦值給a。

強制轉化並沒有我說的這麼簡單,還有很多我沒有學或者學好的特殊用法。然而強制轉化是一種非常不邏輯的行為,有悖程式設計邏輯化結構化的思想,所以必須慎用。

接下來才是重頭,組合型別。我力所能及,毀人不倦的說一點吧。

①const限定符

const是限制符(其實就是常數constant的縮寫啦),使用了這個符號定義的變數,只能引用而不能修改。因此const一般用來在程式中定義一些不允許外部修改的常數,比如數**算中的π,物理學中的這這常數和那那常數等。由於被const後,這個變數的內容就不能改變,所以使用const的時候,一定要記得變數的初始化。

const的用法是這樣的 const int pi = 3.14,此後你用的所有pi只能是3.14。對pi的賦值或修改會引起程式報錯。

②陣列和字串陣列和多維陣列

這一部分其實和c沒有區別……但是還是要提醒,在c/c++中,一維陣列的維數是必須提前確定的,而不能定義變數,比如int a[n]是不合法的。這點也就造成了陣列在有些場合的不靈活(比如刪減陣列成員)

陣列的初始化,最簡單的,a[10]=。然而如果是非0初始化,則要乙個乙個賦值,比較麻煩,尤其是處理大陣列的時候。

特別的,多維陣列,只需要確定的最小的維數就可以,程式會根據初始化的內容自動分配。比如int a[2]=是合法的,賦值後a會自動變成a[4][2]。

字串陣列……其實差不多沒什麼講的啦……

然後,c++裡有幾個很方便的庫用來處理陣列,string字串類和vector向量類。在使用的時候分別需要、庫。string裡面有很多很強大的功能,比如字串陣列,經常會因為實際用不到那麼多而浪費空間,而string型別的字串可以是任意長度,比如,

string a;

cin>>a;

而vector裡面則是可以很方便的對乙個陣列進行賦值。

比如vector(int)a(10,1)

將十個1賦值給了a數列。

string和vector還有很多功能,然而我並沒有怎麼深入的看這一塊,所以暫時還不知道怎麼用……

③指標和引用

指標是c語言的噩夢,然而到了c+這個噩夢也還是個噩夢。其實指標本身的內容和c並沒有什麼出入。所以就不細講了【【

簡單說一點我個人的理解吧。

對於乙個初學者來說,指標是個很不友好的東西,因為指標千變萬化。但是萬變不離其宗,指標永遠不會變的一點,是指標存放的是變數的位址。因此對指標變數本身的很多操作是沒有意義的,我們的目的是通過位址來訪問或者改變乙個變數。

但是指標非常靈活,只有在實際運用和對程式的分析中才能很好的理解吧,我還需要多用。

但是使用指標有幾點是要注意的:

1、指標變數型別應該和指標所指向的變數變數型別一致,比如int *p = &a,a必須是int 型別變數。

2、在陣列中,指標指向陣列首位址。所以很多陣列的計算可以用指標來替代。

這裡特別說明一下&。在c++裡,&不僅有取址功能,還有乙個新的功能,引用。

比如 int & r = a,經過這樣的宣告後,r是乙個完全和a等價的變數,除了名字不同沒有不同。你可能會問了,這樣做不是多此一舉嗎?我一開始也是這麼想的,然而深入了解後發現,我真是太*****了。

在函式的引用中,函式呼叫的形參並不會影響引數本身,比如

void swap(int a,int b)

這樣的乙個函式的效果很明顯是交換a和b 的值,然而由於這裡面的a和b並不是實際的a和b,在真正的執行了程式之後,你會驚奇地發現,wtf!程式沒有報錯!他們根本沒有變!

這個時候有兩個辦法解決。第乙個是用指標,交換位址而不是變數本身:

void swap(int *a,int *b)

在程式中,將變數的位址賦值給a和b,然後交換a和b,雖然並不影響主程式本身,然而由於交換了變數位址,所以實際上的變數已經被交換了。

而第二種方法,是利用&a

void swap(int &a,int &b)

第二種方法,則是將變數引用,使得形參a,b等價於實際變數,從而達到改變變數的效果。

這兩者的效果是完全相同的。這一點,在後面我肯定不會細講,因為其實我自己也沒有弄的太明白,但是在函式的運用,特別是類的成員函式部分,是非常非常重要的。

④聯合、列舉、結構

專案進度報告

專案進度管理目錄 1專案情況介紹 3 1.1 基本情況 3 1.2專案計畫 3 1.2.1專案階段 3 1.2.2專案人員2 4 1.2.3專案進度 5 2專案進度管理 9 2.1專案進展情況記錄表 9 2.2專案進度報告明細 10 xx 專案實施情況匯報 自7月 14 日立項以來 目前研發進展全部...

形象進度報告

關於目前同濟單位裝飾工程形象進度的報告 自2012年11月18日開工以來截止到今天為止 實際開工為24日 同濟室內裝飾 已經綜合完成工程量約75 左右。按照合同約定的2013年2月5日竣工之日只有14天時間,根據工程未完成情況,預計仍有25 30 工程量未完成,據初步統計 如下 目前工程主要完成情況...

進度報告表

同仁縣汙水處理廠進度及問題報告表 土建進度情況 1.提公升幫浦房 牆體保溫層及粉刷未進行 2.細格柵機成砂池房 二樓室內牆壁未粉刷 3.辦公樓 部分窗戶未安裝,牆體未粉刷 4.二沉池 混凝土澆築完成,模板未拆除 5.生化池 池底衛生未清掃 6.監測儀表房 正在施工牆體外保溫 7.汙水處理廠間 已全部...