W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
現(xiàn)在你應(yīng)該可以閱讀并理解一個(gè)完整的C++函數(shù)了。但是到底怎么設(shè)計(jì)函數(shù)可能還不清楚。我會(huì)馬上介紹增量開發(fā)技術(shù)。
舉個(gè)例子,假設(shè)要計(jì)算兩點(diǎn)之間的距離,其中兩個(gè)點(diǎn)分別用坐標(biāo) (x1, y1)和(x2, y2)表示。按照定義,
第一步要考慮的是,在C++中距離函數(shù)應(yīng)該如何表示,也就是要確定函數(shù)的輸入(即參數(shù))和輸出(即返回值)。
在這個(gè)例子中,兩個(gè)點(diǎn)就是參數(shù),很自然,可以用四個(gè)double值表示。返回值就是距離,也是double類型的。
我們已經(jīng)可以寫出這個(gè)函數(shù)的輪廓了:
double distance (double x1, double y1, double x2, double y2) {
return 0.0;
}
返回語(yǔ)句只是用于占位,以便函數(shù)通過編譯并返回一個(gè)值,即使這個(gè)值是不正確的。眼下這個(gè)函數(shù)并沒有做什么有用的事情,但嘗試編譯一下這個(gè)函數(shù)還是值得的,因?yàn)檫@樣可以在函數(shù)變得更復(fù)雜之前發(fā)現(xiàn)任何語(yǔ)法錯(cuò)誤。
為了測(cè)試這個(gè)新函數(shù),我們必須使用樣本值值調(diào)用它。在main函數(shù)的某個(gè)位置我添加了下面語(yǔ)句:
double dist = distance (1.0, 2.0, 4.0, 6.0);
cout << dist << endl;
我選擇這些值,這樣兩個(gè)點(diǎn)的水平距離是3,垂直距離是4;那樣,距離就是5(3-4-5直角三角形的斜邊)。測(cè)試函數(shù)時(shí),知道正確答案是有用的。
一旦函數(shù)定義的語(yǔ)法驗(yàn)證無(wú)誤,我們就可以開始一次一行的添加代碼了。每次增量改變,我們都重新編譯并運(yùn)行程序。這樣,在任何點(diǎn)我們都能精確地知道錯(cuò)誤的位置——肯定是在我們最后增加的代碼中。
計(jì)算的下一步就是求出x2?x1和y2?y1的差。我會(huì)把這些值存在臨時(shí)變量dx和dy中。
double distance (double x1, double y1, double x2, double y2) {
double dx = x2 - x1;
double dy = y2 - y1;
cout << "dx is " << dx << endl;
cout << "dy is " << dy << endl;
return 0.0;
}
我添加了輸出語(yǔ)句,在繼續(xù)之前先驗(yàn)證中間值。前面提到過,我們已經(jīng)知道這兩個(gè)值應(yīng)該是3.0和4.0。
函數(shù)完成之后我會(huì)刪除輸出語(yǔ)句。這樣的代碼稱為支架代碼,因?yàn)樗m然有助于構(gòu)建程序,但并非最終產(chǎn)品的組成部分。有時(shí)保留支架代碼,僅將其注釋掉是個(gè)好想法,以防后面再用到。
開發(fā)的下一步就是求dx和dy的平方。我們可以使用pow函數(shù),但更簡(jiǎn)單快捷的方法是通過每一項(xiàng)自乘來計(jì)算。
double distance (double x1, double y1, double x2, double y2) {
double dx = x2 - x1;
double dy = y2 - y1;
double dsquared = dx*dx + dy*dy;
cout << "dsquared is " << dsquared;
return 0.0;
}
現(xiàn)在,再次編譯運(yùn)行程序,并檢查中間值(它應(yīng)該是25.0)。
最后,可以使用sqrt函數(shù)計(jì)算并返回結(jié)果。
double distance (double x1, double y1, double x2, double y2) {
double dx = x2 - x1;
double dy = y2 - y1;
double dsquared = dx*dx + dy*dy;
double result = sqrt (dsquared);
return result;
}
然后,我們應(yīng)該在main函數(shù)中輸出并驗(yàn)證結(jié)果值。
隨著編程經(jīng)驗(yàn)的增多,你會(huì)發(fā)現(xiàn)自己可以一次編寫和調(diào)試多條語(yǔ)句。不過,增量開發(fā)過程能節(jié)省很多調(diào)試時(shí)間。
這一過程的幾個(gè)關(guān)鍵方面是: ? 從一個(gè)小的、可以工作的程序開始,加以微小的增量變化。在任何時(shí)候,如果出現(xiàn)錯(cuò)誤,都能精確地知道錯(cuò)誤位置。 ? 使用臨時(shí)變量保存中間值,以便于輸出并驗(yàn)證它們。 ? 一旦程序正常工作,你可能想刪除一些支架代碼或者將多條語(yǔ)句合并為符合表達(dá)式,但要確認(rèn)這不會(huì)讓代碼難以閱讀。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: