官术网_书友最值得收藏!

1.3.2 程序編寫的步驟

一般來說,程序設(shè)計(jì)的完整步驟如下。

(1)分析問題

認(rèn)真分析任務(wù),研究給定的條件,分析最后要達(dá)成的目標(biāo),找出解決問題的規(guī)律,選擇解題的方法,完成實(shí)際問題。

(2)確定問題

算法為解決實(shí)際問題而設(shè)計(jì)。因此,在設(shè)計(jì)算法之前,應(yīng)當(dāng)搞清楚實(shí)際問題的輸入、處理和輸出是什么,尤其是處理過程,即問題的計(jì)算特性,如圖1-2所示。

圖1-2 問題的計(jì)算特性

(3)設(shè)計(jì)算法

根據(jù)分析結(jié)果設(shè)計(jì)算法,列出基本的實(shí)現(xiàn)步驟。對(duì)于一個(gè)問題的算法不止一種。如果有需要,還要考慮有沒有更簡(jiǎn)單快捷的算法,以節(jié)約時(shí)間,最大化機(jī)器性能。

(4)編寫程序

如果設(shè)計(jì)出了算法,并且對(duì)將要使用的程序語(yǔ)言十分了解,編寫程序就不是什么難事。但是,對(duì)于不同的語(yǔ)言,由于支持的邏輯結(jié)構(gòu)、功能不同,可能需要改變算法的細(xì)節(jié)內(nèi)容。

(5)調(diào)試測(cè)試

這一步主要是檢查程序運(yùn)行的效果,如果有問題需要修改,可再檢查。程序需要很好地檢查輸入的數(shù)據(jù),數(shù)據(jù)類型錯(cuò)誤、數(shù)字的大小錯(cuò)誤等都會(huì)帶來嚴(yán)重的后果。

(6)升級(jí)維護(hù)

若要使程序長(zhǎng)期正確運(yùn)行,適應(yīng)需求的微小變化,需要對(duì)程序進(jìn)行維護(hù)。這實(shí)際上是一個(gè)修改程序錯(cuò)誤(bug)或功能的過程,簡(jiǎn)單說就是“寫程序→調(diào)試”的循環(huán)。

【例1-2】階乘n!的計(jì)算。

【問題分析】

問題:輸入正整數(shù)n,計(jì)算并輸出n!的值。

輸入:正整數(shù)n。

處理:計(jì)算n!=1×2×3×…×n,重復(fù)累乘,實(shí)現(xiàn)循環(huán)。

輸出:n!。

【算法設(shè)計(jì)】

設(shè)計(jì)出解題方法和步驟,本例分別用自然語(yǔ)言和流程圖描述算法。

1)自然語(yǔ)言描述算法。

①輸入n值。

②設(shè)置變量s=1,存放乘積值。

③用i遍歷1~n的數(shù)值,若遍歷結(jié)束轉(zhuǎn)步驟⑥。

④s=s×i。

⑤重復(fù)步驟③④。

⑥輸出s。

2)流程圖描述算法,如圖1-3所示。

圖1-3 計(jì)算n!流程圖

【程序代碼】

用Python語(yǔ)言編寫以下代碼并運(yùn)行,分析運(yùn)行結(jié)果。

【運(yùn)行結(jié)果】

主站蜘蛛池模板: 博兴县| 上思县| 新蔡县| 太仆寺旗| 福鼎市| 诸暨市| 陇西县| 壤塘县| 衡山县| 太康县| 鄂托克旗| 深泽县| 亚东县| 和平区| 鹤峰县| 化德县| 新兴县| 黄浦区| 聂拉木县| 乌拉特后旗| 长兴县| 三原县| 扬中市| 谷城县| 全州县| 资兴市| 静乐县| 溧水县| 阳原县| 龙江县| 临沭县| 乐山市| 眉山市| 洪湖市| 永丰县| 登封市| 霞浦县| 融水| 阳曲县| 孝义市| 顺义区|