tft每日頭條

 > 生活

 > c語言程序設計中的三種結構

c語言程序設計中的三種結構

生活 更新时间:2024-07-21 11:21:12

C語言算法表示及結構化程序設計基本結構

為了表示一個算法,可以用不同的方法。常用的方法有:自然語言、傳統流程圖、結構化流程圖和僞代碼等。

1用自然語言表示算法

自然語言就是人們日常使用的語言,可以是漢語、英語或其他語言。用自然語言表示通俗易懂,但文字冗長,容易出現歧義,往往要根據上下文才能判斷正确含義。用自然語言來描述包含分支選擇和循環算法不方便,花開兩朵,各表一枝,同時隻表達一個意思,這是自然語言表示的不足。

2用流程圖表示算法

流程圖就是用一些圖框來表示算法,直觀形象,易于理解。如:菱形框的作用是對一個給定的條件進行判斷,根據給定的條件是否成立來判定如何執行其後的操作。它有一個入口,兩個或多個出口。優于自然語言表示。連接點小圓圈用于将畫在不同地方的流程線連接起來,實際上表示一個對象,隻是畫不下オ分開來畫或為了清晰表示而單獨繪制,用連接點可以避免流程線出現交叉或過長,不利于閱讀。

用流程圖表示算法直觀形象,比較清楚地顯示出各個框之間的邏輯關系。這種流程圖占用篇幅較多,一條路走到頭,與複雜的實際情況表示有差距有不足,尤其當算法比較複雜時就費時費力。

3.傳統流程圖的弊端與結構化設計的基本結構

傳統的流程圖用流程線指出各框的執行順序,對流程線的使用沒有嚴格限制,不受限制地使流程随意地轉來轉去,使流程圖變得毫無規律,閱讀時要花很大精力去追蹤流程,使人難以理解算法的邏輯。為了提高算法的質量,使算法的設計和閱讀方便,不允許無規律地使流程随意轉向,隻能順序地進行下去。但是,算法上難免會包含一些分支和循環,而不可能全部由一個個順序框組成。

為了解決這個問題,人們規定出幾種基本結構,然後由這些基本結構按一定規律組成一個算法結構。

4.用3種基本結構作為表示一個結構化算法的基本單元。

(1)順序結構。比如 A 和 B 兩個框是順序執行的,在執行完 A 框所指定的操作後,接着執行 B 他所指定操作。

(2)選擇結構。又稱選取結構或分支結構,此結構中必包含一個判斷框。比如:根據給定的條件 p 是否成立來選擇執行 A 框,否則執行B框。

(3)循環結構:反複執行某一部分的操作。有兩類循環結構。

①當型( while 型)循環結構:當給定的條件 p1成立時,執行 A 框操作,執行完 A 後,再判斷條件 p1是否成立,反複執行 A 框,直到某一次 p1條件不成立為止,此時不執行 A 框,而從B框脫離循環結構。

②直到型( until 型)循環結構。先執行 A 框,然後判斷給定的p2條件是否成立,如果p2條件不成立,則一直執行 A ,直到給定的p2條件成立為止,執行B框脫離本循環結構。

對同一結構既可以用當型循環來處理,也可以用直到型循環來處理。

以上3種基本結構,有以下共同特點:隻有一個出口,隻有一個入口。結構每一部分都有被執行的可能。結構内不存在“死循環”(無終止的循環)。

由3種基本結構順序組成的算法結構,可以解決任何複雜的問題。由基本結構所構成的算法屬于“結構化”的算法,它不存在無規律的轉向,隻是限制在基本結構内部才允許存在分支和向前或向後的跳轉。

C語言程序三種基本結構

程序化結構設計語言中的三種基本結構是順序結構、選擇結構、循環結構。

1、順序結構:表示程序中的各操作是按照它們出現的先後順序執行的,特點是:程序從入口點開始,按順序執行所有操作,直到出口點。

2、選擇結構:表示程序的處理步驟出現了分支,根據某一特定的條件選擇其中的一個分支執行。選擇結構有單選擇、雙選擇和多選擇三種形式。選擇:對條件的真假作出判斷後再選擇執行哪一步。 if(表達式){}。

c語言程序設計中的三種結構(C語言算法表示及結構化程序設計基本結構)1

多分支選擇結構

3、循環結構:表示程序反複執行某些操作,直到某條件為假(或為真)時才可終止循環。循環結構的基本形式有兩種:當型循環和直到型循環,什麼情況下執行循環則要根據條件判斷。循環有:

1.for(表達式1 ;表達式2 ; 表達式3){} 2.while(表示式){}

3.do{}while(表示式);

5.用 N - S 流程圖表示算法

既然用基本結構的順序組合可以表示任何複雜的算法給構,那麼,基本結構之向流程線就是多餘的了。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個矩形框内,在該框内還可以包含從屬于它的框,或者說,由一些基本的框組成一個大的框。這種流程圖又稱N - S 結構化流程圖。

N - S 流程圖用以下的流程圖符号。

(1)順序結構。A 和 B 兩個框組成一個順序依次執行的結構。(2)選擇結構。如 P 條件成立時執行 A 操作, p 不成立則執行 B 操作。選擇結構整體作為一個基本結構。(3)循環結構。當型循環結構是當 p1條件成立時反複執行 A 操作,直到 p1條件不成立為止,執行B,當型循環結構整體作為一個基本結構。直到型循環結構表示:當 P2不成立,一直循環執行A,當p2成立,才執行B。

用 N - S 圖表示算法的優點:比文字描述直觀、形象、易于理解;比傳統流程圖緊湊易畫,尤其是它廢除了流程線,整個算法結構是由各個基本結構按順序組成的, N - S 流程圖中的上下順序就是執行時的順序,也就是圖中位置在前面的先執行,位置在後面後執行。寫算法和看算法隻須從上到下進行就可以了,十分方便。用N - S 流程圖表示的算法都是結構化的算法(它不可能出現流程無規律的跳轉,而隻能自上而下地順序執行)。

c語言程序設計中的三種結構(C語言算法表示及結構化程序設計基本結構)2

N-S流程圖表示三種結構

一個結構化的算法由一些基本給構順序組成的;在基本結構向後的跳轉,流程的轉移隻存在于一個基本結構範圍之内(如循環中流程的跳轉隻在基本結構内部,整體作為一個基本結構)。

如果一個算法不能分解為若幹個基本結構,則必然不是一個結構化的算法。

6.用僞代碼表示算法

用傳統的流程圖和 N - S 圖表示算法直觀易懂,但畫起來比較費事,在設計一個算法時,可能要反複修改,修改流程圖和 N - S 圖很麻煩,因此,流程圖适于表示一個算法,但在使用中不是很理想,尤具是當算法比較複雜、需要反複修改時就事倍功半。為了設計算法時方便,常用一種僞代碼的工具。

僞代碼碼是用介于自然語言和計算機語言之間的文字和符号來描述算法。它自上而下地寫下來。每一行(或幾行)表示一個基本操作。它不用圖形符号,因此書寫方便,格式緊湊,修改方便,容易看懂,也便于向計算機語言算法(即程序)過渡。

用僞代碼寫算法并無固定的、嚴格的語法規則,可以用英文,也可以中英文混用。隻要把意思表達清楚,便于書寫和閱讀即可,書寫的格式要寫成清晰易讀的形式。

僞代碼書寫格式比較目田,容易表達設計者的思想,用僞代碼寫的算法很容易修改,例如加一行或删一行,或将後面某一部分調到前面位置都是很容易做到的,卻是用流程圖表示算法時所不便處理的。用僞代碼很容易寫出結構化的算法,但是用僞代碼寫算法不如流程圖直觀,可能會出現邏輯上的錯誤(例如循環或選擇結構的範圍弄錯等)。

7結構化程序設計方法

一個結構化程序就是用計算機語言表示的結構化算法,用3種基本結構組成的程序必然是結構化的程序。這種程序便于編寫、閱讀、修改和維護,減少了程序出錯的機會,提高了程序的可靠性。

結構化程序設計方法是按照模塊劃分原則來提高程序可讀性和易維護性、可調性和可擴充性,結構化程序設計适用于程序規模較大的情況,對于規模較小程序也可采用非結構化程序設計方法(如果一個算法不能分解為若幹個基本結構,則必然不是一個結構化的算法)。

結化程序設計強調程序設計風格和程序結構的規範化,提倡清晰的結構。

結構化程序設計方法的基本思路是:把一個複雜問題的求解過程分階段進行,毎個階段處理的問題都控制在人們容易理解和處理的範圍内。

設計方法的原則:

1、自頂向下

程序設計時,先考慮總體,後考慮細節;先考慮全局目标,後考慮局部目标。不要一開始就過多追求衆多的細節,先從最上層總目标開始設計,逐步使問題具體化。

2、逐步細化

對複雜問題,應設計一些子目标作為過渡,逐步細化。

3、模塊化設計

一個複雜問題,肯定是由若幹稍簡單的問題構成。模塊化是把程序要解決的總目标分解為子目标,再進一步分解為具體的小目标,把每一個小目标稱為一個模塊。

4、結構化編碼。在結構化的程序設計中,隻允許三種基本的程序結構形式,它們是順序結構、分支選擇結構、(包括多分支結構) 和循環結構,這三種基本結構的共同特點是隻允許有一個流動入口和一個出口,僅有這三種基本結構組成的程序稱為結構化程序。結構化程序設計适用于程序規模較大的情況,對于規模較小程序也可采用非結構化程序設計方法。

有兩種不同的設計方法:一種是自頂向下,逐步細化,一種是自下而上,逐步積累。

用第一種方法逐步分解,直到認為可以直接将各小段表達為文字語句為止。這種方法就叫做“自頂向下,逐步細化”。

用第二種方法是把想表示的内容都寫出來了為止,組合拼裝在一起。這種方法叫做自下而上,逐步積累。

第一種方法考慮周全,結構清晰,層次分明,容易寫,讀者容易看,有全局觀念和思想,如果發現某一部分中有一段内容不妥,需要修改,隻須找出該部分,修改有關段落即可,與其他部分無關。提倡用這種方法設計程序。應當掌握自頂向下、逐步細化的結構化程序設計方法。這種設計方法的過程是将問題求解逐步具體化的過程。

結構化程序設計的基本思想為采用自頂向下,逐步求精的程序設計方法和“單入口單出口”的控制結構。自頂向下、逐步求精的程序設計方法從問題本身開始,經過逐步細化,将解決問題的步驟分解為由基本程序結構模塊組成的結構化程序框圖。

“單入口單出口”的思想認為一個複雜的程序,如果僅由順序、選擇和循環三種基本程序結構通過組合、嵌套構成,結構化設計的程序一定是一個單入口單出口的程序,就很容易編寫出結構良好、易于調試的程序來。

結構化程序設計(面向過程程序設計)與面向對象設計主要區别

結構化程序設計與面向對象主要的區别在于設計思維上不同,封裝性上結構化編程比較難于封裝,複用性上也不如面向對象編程。

設計思維:面向過程程序設計者以貼近計算機的内部工作機理和先後順序,通過信息流及其轉換來認識系統,使得程序的可理解性比較差。面向對象在分析問題時,以對象為單位,考慮它的屬性及方法,與傳統的面向過程是完全不同的,面向過程在分析問題時,以一個具體的流程(事務過程或對象)為單位,考慮它的實現,而不是以過程或功能(函數)。

2、封裝性

結構化編程封裝難度較大,結構化程序分析設計需要将客觀世界模型分解一個一個功能,每個功能按照順序用以完成一定的數據處理。 對于私有的方法,較難控制,敏感信息就比較難隐藏。面向對象編程的封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法隻讓可信的類或者對象操作,對不可信的進行信息隐藏。

3、複用性

傳統的結構化程序設計方法以過程為中心構造應用程序,數據和處理數據的過程代碼是相互獨立的實體,設計出的程序可重用代碼少。面向對象程序設計方法中,對象所具有的封裝性和繼承性使得代碼重用成為可能,并大大減少了程序出錯的可能性。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved