當(dāng)然啦骚露,這是最完美的狀態(tài)。然而在實(shí)際操作中缚窿,并且是在較大的項(xiàng)目中棘幸,你可能需要做一些反復(fù)工作,用后一步驟所了解到的內(nèi)容來改進(jìn)前一個(gè)步驟倦零。
第1步: 定義程序目標(biāo)
當(dāng)你在開始寫程序之前误续,你應(yīng)對希望程序要做什么有一個(gè)清晰的想法吨悍。考慮程序需要的信息蹋嵌,程序需要進(jìn)行的計(jì)算和操作畜份,以及程序應(yīng)該向你報(bào)告的信息。在這一規(guī)劃階段欣尼,你應(yīng)該用一般概念來考慮問題,而不是一些具體的計(jì)算機(jī)語言術(shù)語來考慮停蕉。簡單來說愕鼓,我們所要思考的就是,這個(gè)程序是用來做什么的慧起。
第2步: 設(shè)計(jì)程序
當(dāng)你在對程序需要完成的事情有一個(gè)概念性的認(rèn)識后菇晃,你就應(yīng)該決定程序要如何完成它,用戶界面應(yīng)該是怎么樣的蚓挤,程序應(yīng)該如何組織磺送,目標(biāo)用戶是誰,你有多長的時(shí)間來完成實(shí)現(xiàn)這個(gè)程序等等灿意。
這個(gè)部分其實(shí)就像寫作文一樣估灿,當(dāng)你想好要寫什么題材的文章之后,接下來就要列出你文章中的大綱缤剧,需要幾個(gè)段落馅袁,需要用到什么手法,每個(gè)段落寫的是什么內(nèi)容荒辕,一共有多少時(shí)間來給你完成這篇文章汗销。把這些內(nèi)容規(guī)劃出來列成大綱,然后依次實(shí)現(xiàn)就可以了抵窒。
第3步: 編寫代碼
在程序有了清晰的設(shè)計(jì)后弛针,就可以通過編寫代碼來實(shí)現(xiàn)它了。也就是說李皇,將你的設(shè)計(jì)構(gòu)思轉(zhuǎn)變?yōu)?C 語言削茁。這里是你真正需要使用 C 知識的地方。你可以在紙上勾畫你的想法掉房,但最終必須將代碼輸入計(jì)算機(jī)付材。一般來說,需要使用文本編輯器來創(chuàng)建一種稱為源代碼的文件圃阳,該文件包含你的程序設(shè)計(jì)的的 C 實(shí)現(xiàn)形式厌衔。
例:比如我要實(shí)現(xiàn)在屏幕上實(shí)現(xiàn)輸出 helloworld!
----------------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
printf ("helloworld捍岳!\n");
return 0;
}
----------------------------------------------------------------------------------------
這是一個(gè)最基礎(chǔ)的C語言程序富寿,其作用就是在屏幕上輸出一句helloworld杨刨!。
第4步:編譯
下一個(gè)步驟是編譯源代碼是嗜。不過存谎,編譯細(xì)節(jié)取決于編程環(huán)境,下面很快就會看到一些常見的環(huán)境变勇,讓我們先對要做的事情有一個(gè)一般性的了解恤左。
前面講過,編譯器是一個(gè)程序搀绣,其工作是將源代碼轉(zhuǎn)換為可執(zhí)行代碼飞袋。可執(zhí)行代碼是用計(jì)算機(jī)的機(jī)器語言表示的代碼链患。這種語言是由數(shù)字代碼表示的詳細(xì)指令組成巧鸭。C 編譯器用來將 C 語言轉(zhuǎn)換成機(jī)器語言。C 編譯器還從 C 的庫中向最終程序加入代碼麻捻。庫中包括著許多標(biāo)準(zhǔn)例程供你使用纲仍,例如 printf()和scanf()。最后的結(jié)果是贸毕,形成一個(gè)包含計(jì)算機(jī)可以理解的代碼并且你能夠運(yùn)行的可執(zhí)行文件郑叠。
編譯器還檢查你的程序是否為有效的 C 語言程序。如果編譯器發(fā)現(xiàn)錯(cuò)誤明棍,就將錯(cuò)誤報(bào)告給你锻拘,而且不生成可執(zhí)行文件。理解編譯器的報(bào)錯(cuò)信息是你將要學(xué)習(xí)的另一種技能击蹲。
第5步:運(yùn)行程序
一般來說署拟,可執(zhí)行文件就是你打開之后可以直接能夠運(yùn)行的文件。在一般的操作系統(tǒng)中(例如Windows歌豺,Linux)推穷,要想運(yùn)行某個(gè)程序,只需要雙擊這個(gè)文件或者右鍵打開就可以運(yùn)行类咧,這就是可執(zhí)行文件馒铃。那要怎么才能生成可執(zhí)行文件呢?例如為在Windows環(huán)境中痕惋,用QT編譯器運(yùn)行程序可以用快捷鍵Ctrl+R生成程序并顯示程序結(jié)構(gòu)区宇,如果用Visual Studio編譯器則是Ctrl+F5編譯運(yùn)行。
第6步: 測試和調(diào)試程序
程序能夠正常運(yùn)行那是極好的值戳,但有時(shí)候它也可能運(yùn)行不正確议谷。因此,你應(yīng)該進(jìn)行檢查堕虹,看程序是否存在錯(cuò)誤卧晓。這個(gè)錯(cuò)誤在計(jì)算機(jī)行話中稱之為 Bug芬首。調(diào)試(Debugging)就是要發(fā)現(xiàn)并修正程序錯(cuò)誤。學(xué)習(xí)中自然會犯錯(cuò)誤逼裆,看起來編程中似乎也會犯錯(cuò)誤郁稍,所以在將所學(xué)知識應(yīng)用到編程中時(shí),最好準(zhǔn)備好時(shí)時(shí)想到自己很容易犯錯(cuò)誤胜宇。當(dāng)你成為本領(lǐng)更強(qiáng)耀怜,技藝更精湛的程序員時(shí),你的錯(cuò)誤也會變得更嚴(yán)重而且不易察覺桐愉。
你犯錯(cuò)誤的機(jī)會很多财破。你可能會犯一個(gè)基本設(shè)計(jì)錯(cuò)誤,可能會錯(cuò)誤地實(shí)現(xiàn)了好的想法仅财,可能會因?yàn)楹雎粤四硞€(gè)條件而將程序搞得一團(tuán)糟,可能會錯(cuò)誤地使用C碗淌,可能會犯打字母錯(cuò)誤盏求,也可能會將中英文輸入搞錯(cuò)等等.....
不過,這并不是什么丟臉的事情亿眠,每個(gè)人都會犯錯(cuò)誤碎罚,當(dāng)你被一個(gè)錯(cuò)誤折騰的焦頭爛額的時(shí)候,你才會深刻的記住這個(gè)錯(cuò)誤纳像,以確保下次不會再犯荆烈。另外,編譯器擁有簡單找錯(cuò)誤的能力竟趾,雖然不會具體到教你怎么改憔购,但它會幫你標(biāo)記出錯(cuò)誤所在的那行,只要你認(rèn)真仔細(xì)的檢查錯(cuò)誤的那幾行并改正就可以了岔帽。
第7步: 維護(hù)和修改程序
在為自己或?yàn)閯e人創(chuàng)建程序后玫鸟,該程序可能會有更廣泛的應(yīng)用。如果是這樣犀勒,你可能會發(fā)現(xiàn)需要對其進(jìn)行更改屎飘,也就是項(xiàng)目的維護(hù)和修改。在這里不得不提代碼風(fēng)格和注釋的作用了贾费,很多人都不喜歡寫注釋钦购,代碼風(fēng)格也極亂」酉簦可當(dāng)你去維護(hù)別人程序的時(shí)候押桃,如果他沒有寫過注釋,并且代碼一堆堆的擠在一起导犹,那你可能會頭痛的要死怨规,只想破口大罵寫這個(gè)程序的程序員陌宿。由人及己,養(yǎng)成一個(gè)良好的編程風(fēng)格是一個(gè)非常好的習(xí)慣波丰,寫完程序順便標(biāo)上注釋壳坪。
總結(jié)
編程工作通常不像上面講述的過程那樣是一條線。有時(shí)你必須在不同步驟間來回反復(fù)掰烟。例如爽蝴,當(dāng)你編寫代碼時(shí),可能會發(fā)現(xiàn)你的計(jì)劃是不切實(shí)際的纫骑。你可能會看到一種更好的實(shí)現(xiàn)方式蝎亚,或者在看到程序的運(yùn)行后,讓你有了改變該設(shè)計(jì)的想法先馆。對你的編程工作加以記錄有助于在各階段之間反復(fù)改動发框。
很多人在學(xué)習(xí)過程中都往往會忽視【定義程序目標(biāo)】和【設(shè)計(jì)該程序】而直接到【編寫程序】。你編寫的第一個(gè)程序helloworld煤墙!非常簡單梅惯,可以在頭腦中想你到整個(gè)過程。如果犯了錯(cuò)誤仿野,也容易找到铣减。可隨著程序變得更長更復(fù)雜脚作,頭腦中的想象就開始無能為力了葫哗,而且錯(cuò)誤也將變得難以發(fā)現(xiàn)。最終球涛,那些無視計(jì)劃步驟的人會浪費(fèi)大量時(shí)間并帶來混亂和挫折劣针,因?yàn)樗麄兙帉懗隽穗y看,功能不正常而且艱深難懂的程序亿扁。工作越大越復(fù)雜酿秸,需要的計(jì)劃工作量就越大。
所以魏烫,給你一句忠告辣苏,那就是應(yīng)該養(yǎng)成在編寫代碼前先進(jìn)行規(guī)劃的習(xí)慣。一定要記下程序的目標(biāo)哄褒,并勾勒出設(shè)計(jì)概貌稀蟋。這樣那么你會節(jié)省大量的時(shí)間并且做出來的程序也會非常不錯(cuò)。
如果可以的話呐赡,請大家多多轉(zhuǎn)發(fā)關(guān)注退客,謝謝支持!
想要學(xué)習(xí)交流的小伙伴可以申請加群!群號:894479708
贈送C/C++程序員必備學(xué)習(xí)資料萌狂,C語言真題+PDF档玻,點(diǎn)擊:?領(lǐng)取