C語言是一門面向過程的、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設(shè)計語言。盡管C語言提供了許多低級處理的功能,但仍然保持著跨平臺的特性,以一個標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業(yè)平臺的許多計算機平臺上進行編譯。
C語言,大部分同學(xué)大一的時候接觸的編譯語言,也是首先接觸的語言,很多人在學(xué)習(xí)的時候都會有些迷茫,即使現(xiàn)在已經(jīng)學(xué)得七七八八了,還是在寫項目的時候有很多的問題。如果你以前從來沒有接觸過任何的編程語言,那么你則需要學(xué)習(xí)一下一個拆分的邏輯思維。當(dāng)我們想要寫一個項目或者軟件的時候,我們需要把這個整體拆分為7個步驟,這樣也會讓你的思路看起來更有條理。
進階編譯之路
當(dāng)然啦,這是完美的狀態(tài)。然而在實際操作中,并且是在較大的項目中,你可能需要做一些反復(fù)工作,用后一步驟所了解到的內(nèi)容來改進前一個步驟。
第1步: 定義程序目標(biāo)
當(dāng)你在開始寫程序之前,你應(yīng)對希望程序要做什么有一個清晰的想法??紤]程序需要的信息,程序需要進行的計算和操作,以及程序應(yīng)該向你報告的信息。在這一規(guī)劃階段,你應(yīng)該用一般概念來考慮問題,而不是一些具體的計算機語言術(shù)語來考慮。簡單來說,我們所要思考的就是,這個程序是用來做什么的。
怎么定義好呢
第2步: 設(shè)計程序
當(dāng)你在對程序需要完成的事情有一個概念性的認(rèn)識后,你就應(yīng)該決定程序要如何完成它,用戶界面應(yīng)該是怎么樣的,程序應(yīng)該如何組織,目標(biāo)用戶是誰,你有多長的時間來完成實現(xiàn)這個程序等等。
這個部分其實就像寫作文一樣,當(dāng)你想好要寫什么題材的文章之后,接下來就要列出你文章中的大綱,需要幾個段落,需要用到什么手法,每個段落寫的是什么內(nèi)容,一共有多少時間來給你完成這篇文章。把這些內(nèi)容規(guī)劃出來列成大綱,然后依次實現(xiàn)就可以了。
第3步: 編寫代碼
在程序有了清晰的設(shè)計后,就可以通過編寫代碼來實現(xiàn)它了。也就是說,將你的設(shè)計構(gòu)思轉(zhuǎn)變?yōu)?C 語言。這里是你真正需要使用 C 知識的地方。你可以在紙上勾畫你的想法,但必須將代碼輸入計算機。一般來說,需要使用文本編輯器來創(chuàng)建一種稱為源代碼的文件,該文件包含你的程序設(shè)計的的 C 實現(xiàn)形式。
例:比如要實現(xiàn)在屏幕上實現(xiàn)輸出 helloworld!
一個程序
這是一個基礎(chǔ)的C語言程序,其作用就是在屏幕上輸出一句helloworld!。
第4步:編譯
下一個步驟是編譯源代碼。不過,編譯細(xì)節(jié)取決于編程環(huán)境,下面很快就會看到一些常見的環(huán)境,讓我們先對要做的事情有一個一般性的了解。
前面講過,編譯器是一個程序,其工作是將源代碼轉(zhuǎn)換為可執(zhí)行代碼。可執(zhí)行代碼是用計算機的機器語言表示的代碼。這種語言是由數(shù)字代碼表示的詳細(xì)指令組成。C 編譯器用來將 C 語言轉(zhuǎn)換成機器語言。C 編譯器還從 C 的庫中向程序加入代碼。庫中包括著許多標(biāo)準(zhǔn)例程供你使用,例如 printf和scanf。結(jié)果是,形成一個包含計算機可以理解的代碼并且你能夠運行的可執(zhí)行文件。
編譯器還檢查你的程序是否為有效的 C 語言程序。如果編譯器發(fā)現(xiàn)錯誤,就將錯誤報告給你,而且不生成可執(zhí)行文件。理解編譯器的報錯信息是你將要學(xué)習(xí)的另一種技能。
免不了的報錯
第5步:運行程序
一般來說,可執(zhí)行文件就是你打開之后可以直接能夠運行的文件。在一般的操作系統(tǒng)中(例如Windows,Linux),要想運行某個程序,只需要雙擊這個文件或者右鍵打開就可以運行,這就是可執(zhí)行文件。那要怎么才能生成可執(zhí)行文件呢?例如為在Windows環(huán)境中,用QT編譯器運行程序可以用快捷鍵Ctrl+R生成程序并顯示程序結(jié)構(gòu),如果用Visual Studio編譯器則是Ctrl F5編譯運行。
第6步: 測試和調(diào)試程序
程序能夠正常運行那是極好的,但有時候它也可能運行不正確。因此,你應(yīng)該進行檢查,看程序是否存在錯誤。這個錯誤在計算機行話中稱之為 Bug。調(diào)試(Debugging)就是要發(fā)現(xiàn)并修正程序錯誤。學(xué)習(xí)中自然會犯錯誤,看起來編程中似乎也會犯錯誤,所以在將所學(xué)知識應(yīng)用到編程中時,準(zhǔn)備好時時想到自己很容易犯錯誤。當(dāng)你成為本領(lǐng)更強,技藝更精湛的程序員時,你的錯誤也會變得更嚴(yán)重而且不易察覺。
你犯錯誤的機會很多。你可能會犯一個基本設(shè)計錯誤,可能會錯誤地實現(xiàn)了好的想法,可能會因為忽略了某個條件而將程序搞得一團糟,可能會錯誤地使用C,可能會犯打字母錯誤,也可能會將中英文輸入搞錯等等.....
不過,這并不是什么丟臉的事情,每個人都會犯錯誤,當(dāng)你被一個錯誤折騰的焦頭爛額的時候,你才會深刻的記住這個錯誤,以確保下次不會再犯。另外,編譯器擁有簡單找錯誤的能力,雖然不會具體到教你怎么改,但它會幫你標(biāo)記出錯誤所在的那行,只要你認(rèn)真仔細(xì)的檢查錯誤的那幾行并改正就可以了。
第7步: 維護和修改程序
在為自己或為別人創(chuàng)建程序后,該程序可能會有更廣泛的應(yīng)用。如果是這樣,你可能會發(fā)現(xiàn)需要對其進行更改,也就是項目的維護和修改。在這里不得不提代碼風(fēng)格和注釋的作用了,很多人都不喜歡寫注釋,代碼風(fēng)格也極亂??僧?dāng)你去維護別人程序的時候,如果他沒有寫過注釋,并且代碼一堆堆的擠在一起,那你可能會頭痛的要死,只想破口大罵寫這個程序的程序員。由人及己,養(yǎng)成一個良好的編程風(fēng)格是一個非常好的習(xí)慣,寫完程序順便標(biāo)上注釋。