日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言程序设计第2章,C语言程序设计第2章 结构化程序设计与算法.ppt

發布時間:2024/7/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言程序设计第2章,C语言程序设计第2章 结构化程序设计与算法.ppt 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言程序設計第2章 結構化程序設計與算法.ppt

現在人們公認的具有“良好風格”的程序設計方法之一是所謂的“結構化程序設計方法”。其核心是規定了算法的三種基本結構順序結構、選擇結構和循環結構。按照結構化程序設計的觀點,任何算法功能都可以通過三種基本程序結構 順序結構、選擇結構和循環結構的組合來實現。在本章,主要介紹算法、結構化程序設計及其三種基本結構、結構化程序設計方法等。,第2章 結構化程序設計與算法,學習重點和難點 程序設計的基本概念 算法的概念和算法的表示 結構化程序設計方法 學習本章后將對結構化程序設計方法有認識,并能用某種方式來表示算法。,第2章 結構化程序設計與算法,2.1 初識算法 2.2 結構化程序設計 2.3 表示算法的多種方法 2.4 結構化程序設計應用舉例 2.5 本章小結 2.6 習題 實驗2 熟悉VC 6.0環境及算法,第2章 結構化程序設計與算法,2.1 初識算法,有了方便人們編寫程序的計算機語言,就可以開始構思來進行程序設計。 所謂程序設計就是使用某種計算機語言,按照某種算法,編寫程序的活動。,如何進行程序設計呢一般說來,包括以下步驟 問題定義; 算法設計; 算法表示(如流程圖設計); 程序編制與調試; 程序測試、運行與分析及文檔編制。,2.1 初識算法,2.1 初識算法,2.1.1 算法的概念 2.1.2 算法舉例 2.1.3 算法的特征,這里,重點就其中的算法和程序設計方法等作簡單介紹。,2.1.1 算法的概念一個程序應包括 1)對數據的描述。在程序中要指定數據的類型和數據的組織形式,即數據結構(data structure)。 2)對操作的描述。即操作步驟,也就是算法(algorithm)。 著名的計算機科學家Nikiklaus Wirth提出一個公式程序數據結構算法,2.1.1 算法的概念實際上,隨著程序設計技術的不斷發展,可以重新定義這個公式 程序算法數據結構程序設計方法語言工具和環境 這4個方面是一個程序設計人員所應具備的知識。這里主要介紹算法的初步知識。 做任何事情都有一定的步驟,而算法就是解決某個問題或處理某件事的方法和步驟,在這里所講的算法是專指用計算機解決某一問題的方法和步驟。不管你所采用的編程語言如何變化,算法是其核心內容,有了解決問題的算法,就不愁編不出能解決問題的語言程序。,2.1.1 算法的概念計算機算法一般分為兩大類一類是數值計算算法,主要用于解決難以處理或運算量大的一些數學問題,如求解超越方程的根、求解微分方程等;另一類是非數值計算算法,如對非數值信息的排序、檢索等,適用于事務管理領域。對于同一個問題,往往有不同的幾種解題方法和步驟,即幾種算法,為了有效地進行解題,不僅需要保證算法的正確性,還要考慮算法的質量時間與空間的效率,選擇合適并較優的算法。,2.1.2 算法舉例2.1.2 算法舉例2.1.2 算法舉例2.1.2 算法舉例1,3,1X3,5,2.1.2 算法舉例1X3X5,72.1.2 算法舉例1X3X5X7,92.1.2 算法舉例1X3X5X7X9,112.1.2 算法舉例1X3X5X7X9X11,135次循環后t的值就是所求的結果。,2.1.2 算法舉例2.1.3 算法的特征1、有窮性 人們編制算法的目的就是要解決問題,若該算法無法在一個有限合理的時間內完成問題的求解,那么算法也就失去了其原有的目的,人們就會摒棄它。而且人們研究算法,其目的還在于它的高效率,即解決同一個問題的兩個算法,人們往往選擇其中那個運行效率高的。 2、確定性 所謂算法的確定性是指算法的每一個步驟都應該確切無誤,沒有歧義性。,2.1.3 算法的特征3、有零個或多個輸入 執行算法時,有時需要外界提供某些數據,幫助算法的執行。一個算法可以沒有輸入,也可以有多個輸入。例如,求解N,該算法就需要輸入一個數據N;而求解兩數之和,該算法就需要輸入兩個數據 4、有一個或多個輸出 算法的目的是求解,解就是結果,就是輸出,否則就毫無意義。,2.1.3 算法的特征5、有效性 算法中的每一步都應該能有效地執行、可以實現,執行算法最后應該能得到確定的結果。 對于程序設計人員,必須會設計算法,并根據算法寫出程序。,2.2 結構化程序設計,以下從結構化程序設計的方法介紹、方法原則及三種基本結構來說明。,2.2 結構化程序設計,2.2.1 結構化程序設計方法簡介 2.2.2 結構化程序設計方法的原則 2.2.3 結構化程序設計的三種基本結構,2.2.1 結構化程序設計方法簡介結構化程序設計是由迪克斯特拉(E.W.dijkstra)在1969年提出的,結構化程序設計是以模塊化設計為中心,將待開發的軟件系統劃分為若干個相互獨立的模塊,這樣使完成每一個模塊的工作變單純而明確,這樣能為設計一些較大的軟件打下良好的基礎。,2.2.1 結構化程序設計方法簡介結構化程序設計的基本要點有 1、采用自頂向下,逐步細化的程序設計方法在需求分析、概要設計中,都采用了自頂向下,逐層細化的方法。,2.2.1 結構化程序設計方法簡介結構化程序設計的基本要點有 2、使用三種基本控制結構構造程序 任何程序都可由順序、選擇、循環三種基本控制結構構造(見2.2.3節圖2.2)。具體 (1)用順序方式對過程分解,確定各部分的執行順序; (2)用選擇方式對過程分解,確定某個部分的執行條件; (3)用循環方式對過程分解,確定某個部分進行重復的開始和結束的條件; (4)對處理過程仍然模糊的部分反復使用以上分解方法,最終可將所有細節確定下來。,2.2.2 結構化程序設計方法的原則結構化程序設計方法的原則有 1、自頂向下 程序設計時,應先考慮總體,后考慮細節;先考慮全局目標,后考慮局部目標。不要一開始就過多追求眾多的細節,先從最上層總目標開始設計,逐步使問題具體化。 2、逐步求精(或逐步細化) 對復雜問題,應設計一些子目標作為過渡,需要時子目標還可以再設計為一些更小的小目標,這樣逐步細化。,2.2.2 結構化程序設計方法的原則3、模塊化設計 一個復雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為子目標,再進一步分解為具體的小目標,直到小目標能夠程序化了。一般把每個能程序化的小目標稱為一個模塊。 由于模塊相互獨立,因此在設計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為復雜的問題化簡為一系列簡單模塊的設計。模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模塊作積木式的擴展。,2.2.2 結構化程序設計方法的原則3、模塊化設計,模塊化設計從問題分解到程序問題,程序,4、結構化編碼限制使用goto語句 結構化程序設計方法的起源來自對goto語句的認識和爭論。作為爭論的結論,1974年Knuth發表了令人信服的總結,并證實了1)goto語句確實有害,應當盡量避免;2)完全避免使用goto語句也并非是個明智的方法,有些地方使用goto語句,會使程序流程更清楚、效率更高;3)爭論的焦點不應該放在是否取消goto語句上,而應該放在用什么樣的程序結構上。 其中最關鍵的是,應在以提高程序清晰性為目標的結構化程序設計方法中限制使用goto語句。為此,結構化程序設計方法應只使用限制goto語句使用的順序、選擇、循環三種基本控制結構。,2.2.2 結構化程序設計方法的原則2.2.3 結構化程序設計的三種基本結構結構化程序設計方法使用的順序、選擇、循環三種基本控制結構(其流程圖表示見圖2.2),理論上已證明,無論多么復雜的問題,其算法都可表示為這三種基本結構的組合。依照結構化的算法編寫的程序或程序單元如函數或過程,其結構清晰、易于理解、易于驗證其正確性,也易于查錯和排錯。具體介紹如下,2.2.3 結構化程序設計的三種基本結構圖2.2 算法基本結構圖,2.2.3 結構化程序設計的三種基本結構3、循環結構 循環結構表示程序反復執行某個或某些操作,直到某條件為假(或為真)時才可終止循環。在循環結構中最主要的是什么情況下執行循環哪些操作需要循環執行 循環結構的基本形式有兩種當型循環和直到型循環。,2.2.3 結構化程序設計的三種基本結構1)當型循環表示先判斷條件,當滿足給定的條件時執行循環體,并且在循環體末端處流程自動返回到循環入口;如果條件不滿足,則退出循環體直接到達流程出口處。因為是“當條件滿足時執行循環”,即先判斷后執行,所以稱為當型循環。 2)直到型循環表示從結構入口處直接執行循環體,在循環體末端處判斷條件,如果條件不滿足,返回入口處繼續執行循環體,直到條件為真時再退出循環到達流程出口處,是先執行后判斷。因為是“直到條件為真時為止”,所以稱為直到型循環。,圖2.2 算法基本結構圖,2.2.3 結構化程序設計的三種基本結構2.2.3 結構化程序設計的三種基本結構,2.2.3 結構化程序設計的三種基本結構采取以下方法保證得到結構化的程序 (1) 自頂向下; (2) 逐步細化; (3) 模塊化設計; (4) 結構化編碼。,2.3 表示算法的多種方法,為了描述一個算法,可以采用許多不同的方法,常用的有自然語言、流程圖、N-S流程圖、偽代碼、計算機語言等。其中自然語言描述算法通俗易懂,但比較繁瑣冗長,不直觀,容易產生歧異;偽代碼描述的算法相對于前者,比較緊湊;流程圖表示的算法,通過圖形描述,邏輯清楚,形象直觀,容易理解,所以得到廣泛的應用。但總體上各有特色,讀者可自我選擇,下面來分別說明。,2.3 表示算法的多種方法,2.3.1 用自然語言表示算法 2.3.2 用流程圖表示算法 2.3.3 用N-S流程圖表示算法 2.3.4 用偽代碼表示算法 2.3.5 用計算機語言表示算法,2.3.1 用自然語言表示算法自然語言表示算法,一般用于比較簡單的問題,復雜一些的問題一般不用自然語言來表示算法。自然語言表示算法的例子見“2.1.2 算法舉例”。 對于不復雜的簡單問題,算法也可以文字性總體分析與敘述。,2.3.2 用流程圖表示算法,2.3.2 用流程圖表示算法,流程圖是用一些圖框來表示各種操作 用圖形表示算法,直觀形象,易于理解起止框,輸入輸出框處理框判斷框,流程線,連接點,注釋框x0,YN,一個入口,兩個出口一個出口2.4.2用流程圖表示算法,流程圖是用一些圖框來表示各種操作 用圖形表示算法,直觀形象,易于理解起止框,輸入輸出框處理框判斷框,流程線,連接點,注釋框,位置不夠,防止交叉,2.3.2 用流程圖表示算法2.3.2 用流程圖表示算法2.3.2 用流程圖表示算法2.3.2 用流程圖表示算法2.3.3 用N-S流程圖表示算法N-S圖也被稱為盒圖或CHAPIN圖,這種新型流程圖是1973年美國學者I.Nassi和B. Shneiderman共同提出的,為此稱為N-S圖。 傳統流程圖由一些特定意義的圖形、流程線及簡要的文字說明構成,它能清晰明確地表示程序的運行過程。在使用過程中,人們發現流程線不一定是必需的,為此,人們設計了一種新的流程圖,它把整個程序算法寫在一個大框圖內,這個大框圖由若干個小的基本框圖構成,這種流程圖簡稱N-S圖。,2.3.3 用N-S流程圖表示算法2.3.3 用N-S流程圖表示算法2.3.4 用偽代碼表示算法偽代碼使用介于自然語言和計算機語言之間的文字和符號來描述算法。偽代碼表達算法不用圖形符號,因此書寫方便,格式緊湊,修改方便,容易看懂,也便于向計算機語言算法(即程序)過渡。下面舉一個例子來說明。,2.3.4 用偽代碼表示算法2.3.5 用計算機語言表示算法我們的任務是用計算機解題,就是用計算機實現算法。用計算機語言表示算法,算是一步到位了。計算機語言表示算法必須嚴格遵循所用語言的語法規則。對于初學者建議先用其他算法表示方法表示后,再用某計算機語言編寫出程序;對于熟練或專業程序編寫人員,面對簡單或熟悉的算法問題是可以直接用程序語言來編寫實現的。本書后續章節中有許多例題,后在給出解題思路或解題算法后,寫出程序的例子的。這里只給出一個例子以說明C語言的算法直接表示方法。,2.3.5 用計算機語言表示算法2.4 結構化程序設計應用舉例,作家編寫一部著作,往往不可能一次性就把內容寫好,一般總是先確定目標和主題,然后構思分成若干章,定出各章題目和大致內容,把每章分成若干節,再細分為若干段,即由粗到細,逐步具體化,直到能執筆寫出文字為止。而人們編寫程序與寫書一樣,常常使用本章前面介紹的結構化程序設計方法1自頂向下;2逐步求精;3模塊化設計;4 結構化編碼。下面舉個簡單例子說明結構化程序設計方法,后續編程將主要采用這種方法。,2.4 結構化程序設計應用舉例,開始,結束,2.4 結構化程序設計應用舉例,2.5 本章小結,本章介紹了算法、對算法的理解、算法的多種表示方法、結構化程序設計的相關概念與知識等,并給出了一個結構化程序設計的應用示例。算法是C語言程序設計的靈魂,對一般問題嘗試用算法來表示就顯得非常關鍵了。,請指出錯誤或問題,交流聯系 Email 或 ,本章結束,

總結

以上是生活随笔為你收集整理的c语言程序设计第2章,C语言程序设计第2章 结构化程序设计与算法.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。