二級(jí)C++精品課程第一章第二節(jié)程序設(shè)計(jì)方法

字號(hào):

用計(jì)算機(jī)語言為計(jì)算機(jī)編寫程序,解決某種問題,我們也稱之為程序設(shè)計(jì)。程序設(shè)計(jì)需要有一定的方法來指導(dǎo),例如,前面我們提到的一元二次方程求解的算法簡(jiǎn)單,而對(duì)于字符串的處理就要復(fù)雜一些,涉及到字符串的合并、拷貝、比較等,不是一個(gè)算法能夠表達(dá)的。也就是說,這需要對(duì)問題進(jìn)行分解。對(duì)問題如何進(jìn)行抽象和分解,對(duì)程序如何進(jìn)行組織,使得程序的可維護(hù)性、可讀性、穩(wěn)定性、效率等更好,是程序設(shè)計(jì)方法研究的問題。目前,有兩種重要的程序設(shè)計(jì)方法:結(jié)構(gòu)化的程序設(shè)計(jì)和面向?qū)ο蟮某绦蛟O(shè)計(jì),下面分別作一個(gè)簡(jiǎn)單的介紹。
    什么是程序?
    程序規(guī)定了計(jì)算機(jī)執(zhí)行的動(dòng)作和動(dòng)作的順序。如同開會(huì)的議程,每周的課程安排表一樣。一個(gè)程序應(yīng)包括以下兩方面的內(nèi)容:
    (1) 對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)。
    (2) 對(duì)操作的描述。即操作步驟,也就是算法。
    數(shù)據(jù)是操作的對(duì)象,操作的目的是對(duì)數(shù)據(jù)進(jìn)行加工處理,以得到期望的結(jié)果。作為程序設(shè)計(jì)人員,必須認(rèn)真考慮和設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和操作步驟。的計(jì)算機(jī)科學(xué)家Nikiklaus Wirth提出了一個(gè)公式:
    程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法。
    程序設(shè)計(jì)和程序編碼
    一些程序員,尤其是初學(xué)程序設(shè)計(jì)者,常常認(rèn)為程序設(shè)計(jì)就是用某種程序設(shè)計(jì)語言編寫代碼,這其實(shí)是錯(cuò)誤的認(rèn)識(shí)。上述工作應(yīng)該被看成為編碼(coding),它是在程序設(shè)計(jì)完成之后才開始的。拿房屋設(shè)計(jì)的例子來講,房屋設(shè)計(jì)這個(gè)過程不涉及砌轉(zhuǎn)壘瓦的具體工作,這些工作是房屋施工階段進(jìn)行的。在完成了房屋設(shè)計(jì),有了設(shè)計(jì)圖紙之后,施工階段才能開始。如果不作設(shè)計(jì),直接施工,很難想象房屋能不能建造完成,或者建造的房屋合不合要求。同樣,程序設(shè)計(jì)一定要在具體的程序編碼之前完成。程序設(shè)計(jì)完成的好壞直接影響了后面的編碼質(zhì)量。
    起止框 輸入輸出框 判斷框 注釋框
    處理框 流程線 連接點(diǎn)
    與房屋設(shè)計(jì)中有圖紙一樣,程序設(shè)計(jì)也有自己的表達(dá)方式。一種常用的程序設(shè)計(jì)表達(dá)方式是程序流程圖。流程圖也有不同的表示形式。我們只介紹傳統(tǒng)的流程圖。
    流程圖用一些圖框表示各種操作,形象直觀,易于理解。ANSI(American National Standard Institute, 美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì))規(guī)定了一些常用的流程圖符號(hào),已為世界各國(guó)程序工作者普遍采用。
    我們以求n!為例說明流程圖如何表示程序流程,見圖1-4。
    通過上面的例子,可以看出流程圖是表示算法的較好工具。一個(gè)流程圖包括以下幾部分:(1)表示相應(yīng)操作的框;(2)帶箭頭的流程線;(3)框內(nèi)外必要的說明文字。需要注意的是:流程線必須加箭頭,因?yàn)樗欠从吵绦虻膱?zhí)行先后次序的,如果不畫箭頭就難以判定各框的執(zhí)行順序了。