c3順序結(jié)構(gòu)程序設(shè)計.ppt_第1頁
c3順序結(jié)構(gòu)程序設(shè)計.ppt_第2頁
c3順序結(jié)構(gòu)程序設(shè)計.ppt_第3頁
c3順序結(jié)構(gòu)程序設(shè)計.ppt_第4頁
c3順序結(jié)構(gòu)程序設(shè)計.ppt_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第三章 順序結(jié)構(gòu)程序設(shè)計,1 利用計算機解決實際問題的步驟,2 算法的概念,3 結(jié)構(gòu)化程序設(shè)計,本章內(nèi)容,4 C+語句,5 C+的輸入與輸出,6 順序結(jié)構(gòu)程序設(shè)計,1 利用計算機解決實際問題的步驟,算法分析,最有效的方法,問題,選擇實現(xiàn)語言,運行程序,分析、論證,算法流程,結(jié)束,測試程序,2 算法的概念,一、算法的概念,程序,對數(shù)據(jù)的描述:在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù) 的組織形式,即數(shù)據(jù)結(jié)構(gòu),對操作的描述:即操作步驟,也就是算法,算法:為解決一個問題而采取的方法和步驟,稱為“算法” 它是程序設(shè)計的靈魂,是解決“做什么”和“怎么做”的 問題,處理的對象是數(shù)據(jù),2 算法的概念,二、算法的特性,1、有窮性 2、確定性 3、有效性/可行性 4、有零個或多個輸入 5、有一個或多個輸出,2 算法的概念,三、算法的表示,自然語言表示法 傳統(tǒng)流程圖表示法 NS結(jié)構(gòu)化流程圖 偽代碼 PAD圖等,2 算法的概念,三、算法的表示,1、自然語言表示法 例:對于一個大于等于3的正整數(shù),判斷其是否素數(shù) 算法如下: S1:輸入n的值 S2:i2作為除數(shù) S3:n被i除,得余數(shù)r S4:如果r0,表示n能被i整除,則打印“不是素數(shù)”,算法結(jié)束; 否則,繼續(xù)下一步 S5:i1i S6:如果in1,返回執(zhí)行S3;否則,打印“是素數(shù)”,算法結(jié)束,2 算法的概念,三、算法的表示,2、傳統(tǒng)流程圖表示法,傳統(tǒng)流程圖表示前例,2 算法的概念,三、算法的表示,3、算法的三種基本結(jié)構(gòu),Bohra和Jacopini提出了以下三種基本結(jié)構(gòu): 順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu) 用這三種基本結(jié)構(gòu)作為表示一個良好算法的基本單元。,順序結(jié)構(gòu),選擇結(jié)構(gòu),三種基本結(jié)構(gòu),當(dāng)型(While型)循環(huán),直到型(Until型)循環(huán),三種基本結(jié)構(gòu),三種基本結(jié)構(gòu)的共同特點:,2 算法的概念,三、算法的表示,3、算法的三種基本結(jié)構(gòu),(1)只有一個入口; (2)只有一個出口;(請注意:一個菱形判斷框有兩個出口,而一個選擇結(jié)構(gòu)只有一個出口。不要將菱形框的出口和選擇結(jié)構(gòu)的出口混淆。) (3)結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行到; (4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。,2 算法的概念,三、算法的表示,3、NS結(jié)構(gòu)化流程圖,1973年美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個矩形框內(nèi),在該框內(nèi)還可以包含其它的從屬于它的框,或者說,由一些基本的框組成一個大的框。這種流程圖又稱N-S結(jié)構(gòu)化流程圖 。,N-S流程圖用以下的流程圖符號:,(1)順序結(jié)構(gòu),(2)選擇結(jié)構(gòu),(3)直到型循環(huán),(3)當(dāng)型循環(huán),N-S圖表示算法的優(yōu)點,比文字描述直觀、形象、 易于理解;比傳統(tǒng)流程圖緊湊易畫。尤其是它廢除了流程線,整個算法結(jié)構(gòu)是由各個基本結(jié)構(gòu)按順序組成的,N-S流程圖中的上下順序就是執(zhí)行時的順序。用N-S圖表示的算法都是結(jié)構(gòu)化的算法,因為它不可能出現(xiàn)流程無規(guī)律的跳轉(zhuǎn),而只能自上而下地順序執(zhí)行。,3 結(jié)構(gòu)化程序設(shè)計,一個結(jié)構(gòu)化程序 就是用高級語言表示的結(jié)構(gòu)化算法。用三種基本結(jié)構(gòu)組成的程序必然是結(jié)構(gòu)化的程序,這種程序便于編寫、便于閱讀、便于修改和維護。 結(jié)構(gòu)化程序設(shè)計強調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。 結(jié)構(gòu)化程序設(shè)計方法的基本思路是:把一個復(fù)雜問題的求解過程 分階段進行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。,結(jié)構(gòu)化程序設(shè)計方法,采取以下方法來保證得到結(jié)構(gòu)化的程序: 自頂向下; 逐步細(xì)化; 模塊化設(shè)計; 結(jié)構(gòu)化編碼。,兩種不同的方法: 自頂向下,逐步細(xì)化; 自下而上,逐步積累。,自頂向下,逐步細(xì)化方法的優(yōu)點: 考慮周全,結(jié)構(gòu)清晰,層次分明,作者容易寫,讀者容易看。如果發(fā)現(xiàn)某一部分中有一段內(nèi)容不妥,需要修改,只需找出該部分修改有關(guān)段落即可,與其它部分無關(guān)。我們提倡用這種方法設(shè)計程序。這就是用工程的方法設(shè)計程序。,模塊設(shè)計的方法: 模塊化設(shè)計的思想實際上是一種“分而治之”的思想,把一個大任務(wù)分為若干個子任務(wù),每一個子任務(wù)就相對簡單了。 在拿到一個程序模塊以后,根據(jù)程序模塊的功能將它劃分為若干個子模塊,如果這些子模塊的規(guī)模還嫌大,還再可以劃分為更小的模塊。這個過程采用自頂向下方法來實現(xiàn)。 子模塊一般不超過50行 劃分子模塊時應(yīng)注意模塊的獨立性,即:使一個模塊完成一項功能,耦合性愈少愈好。,4 C+語句,一、語句的概念,C+語句用來向計算機系統(tǒng)發(fā)出操作指令,它都是用來完成一定操作任務(wù)的。,二、C+語句的分類,聲明語句 執(zhí)行語句 空語句 復(fù)合語句,二、C+語句的分類,1、聲明語句 對變量及其它對象的定義,可以出現(xiàn)在函數(shù)中的任何行,也可放在函數(shù)外 如:int a,b;,2、執(zhí)行語句 通知計算機完成一定的操作 包括控制語句、函數(shù)和流調(diào)用語句、表達式語句,2、執(zhí)行語句,(1) 控制語句 完成一定的控制功能,if ( ) else 條件 for ( ) 、while ( ) 、do while ( ) 循環(huán) continue 、break 結(jié)束循環(huán) switch 多分支選擇語句 goto 跳轉(zhuǎn)語句 return 從函數(shù)返回語句,二、C+語句的分類,2、執(zhí)行語句,(2) 函數(shù)和流對象調(diào)用語句 由一次函數(shù)調(diào)用加一個分號構(gòu)成一條語句 例 max(a,b); coutxendl; (3) 表達式語句 由一個表達式加一個分號構(gòu)成一條語句,但構(gòu) 成的語句應(yīng)該有意義,最典型的為賦值語句 a=3 表達式 a=3; 賦值語句 i+1 表達式 i+1; 表達式語句 無實際意義,二、C+語句的分類,2、執(zhí)行語句,3、空語句 只有一個分號的語句,什么也不做 主要用來完善程序的結(jié)構(gòu),有時用來做被轉(zhuǎn)向點或循環(huán)語句中的循環(huán)體 4、復(fù)合語句 用 把一些語句括起來成為復(fù)合語句 例 P49,二、C+語句的分類,5 數(shù)據(jù)輸出與輸入,不論C語言還是C+,輸入與輸出都不是其語言中的正式組成部分,如需使用C中的輸入輸出函數(shù)或C+中的輸入輸出流,都必須用預(yù)處理命令將頭文件包含到本文件中 如:#include #include ,一、輸入流與輸出流,1、一般格式: cout變量1變量2變量n;,說明(1)cout可分寫成若干行,cout“This is a simple C+ program.“endl;,cout“This is“ “a C+“ “program.“ endl;,cout“This is“; cout “a C+“; cout “program. “; cout endl;,(2)不能用一個插入運算符“”插入多個輸出項 (3)cout輸出時系統(tǒng)會自動判別輸出數(shù)據(jù)類型,使輸出數(shù)據(jù)按相應(yīng)類型輸出 (4)cin也可以分成若干行,cinabcd;,cina b c d;,cina; cin b; cin c; cin d;,(5)cin輸入時系統(tǒng)會根據(jù)變量的類型從輸入流中提取相應(yīng)長度的字節(jié),char c1,c2; int a; float b;,cinc1c2ab; 輸入:1234 56.78,用cin語句得不到空格和回車字符,2、輸入輸出流的控制符 P53 表3.1 如使用控制符,還需在程序開頭加 #include ,一、輸入流與輸出流,例:輸出雙精度 輸出整數(shù) 例3.1,二、getchar和putchar,1、字符格式輸出函數(shù) putchar( ),功能:向終端輸出一個字符 形式:putchar(參數(shù)) 參數(shù):可以為常量,也可以為變量,還可以是任意整型表達式,參數(shù)的值代表的是某字符對應(yīng)的ASCII碼值,也可輸出轉(zhuǎn)義字符 使用時需加頭文件 #include 例 P55 例3.2,二、getchar和putchar,2、字符格式輸入函數(shù) getchar( ),功能:從終端輸入一個字符 形式:getchar( ) 無參數(shù),函數(shù)的值就是從輸入設(shè)備得到的字符,得到的字符可以賦給一個字符變量或整型變量;也可以不賦給任何變量,作為表達式的一部分 使用時需加頭文件 #include 例 P56 例3.3,三、scanf和printf,1、輸出函數(shù) printf( ) 功能:向終端輸出若干個任意類型的數(shù)據(jù),格式:printf(格式控制,輸出表列) 輸出表列:需要輸出的數(shù)據(jù),可以是表達式 格式控制:用雙引號括起來的字符串(包括格式說明、普通字符) 格式說明:由“”和格式字符組成,將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出 普通字符:需要原樣輸出的字符,三、scanf和printf,2、據(jù)輸入函數(shù) scanf( ) 功能:從輸入設(shè)備向計算機輸入任意類型的數(shù)據(jù)到相應(yīng)的變量中,格式:scanf(格式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論