c程序設(shè)計(jì)教程課件(第三章).ppt_第1頁
c程序設(shè)計(jì)教程課件(第三章).ppt_第2頁
c程序設(shè)計(jì)教程課件(第三章).ppt_第3頁
c程序設(shè)計(jì)教程課件(第三章).ppt_第4頁
c程序設(shè)計(jì)教程課件(第三章).ppt_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余22頁可下載查看

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計(jì)教程,3 算法,3 算 法,本章內(nèi)容 3.1 算法概述 3.2 程序結(jié)構(gòu) 3.3 結(jié)構(gòu)化程序設(shè)計(jì)方法,程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言環(huán)境,靈 魂,加工對象,工具,結(jié)構(gòu)化程序設(shè)計(jì) (順序、循環(huán)、選擇),3.1 算法的概念,廣義的說,為解決一個問題而采用的方法和步驟,就稱為算法。 選擇合適的算法 算法分兩類:數(shù)值算法和非數(shù)值算法,買電視機(jī)的步驟:,選好貨物,開票,付款,拿發(fā)票,取貨,回家,考大學(xué)上大學(xué)的步驟,填報(bào)名單,交報(bào)名費(fèi),拿準(zhǔn)考證,參加考試,得到錄取通知書,報(bào)到注冊,簡單算法舉例,例1 :求5! (12345)。 可先寫出這樣的算法: (1)先求12,得到結(jié)果2; (

2、2)將步驟1得到的結(jié)果再乘以3,得到結(jié)果6; (3)將6再乘以4,得到24; (4)將24再乘以5,得到120。,求5! (12345),上述算法太繁瑣,我們找一種通用的表示方法: s1:設(shè)變量p,被乘數(shù),p=1; s2:設(shè)變量i,代表乘數(shù),i=2; s3:使pi,乘積放在被乘數(shù)變量p中,可表示為: p i p; s4:使i的值加1,即i+1 i; s5:如果i不大于5,返回重新執(zhí)行步驟s3以及其后的s4、s5;否則,算法結(jié)束。 最后得到的p就是5!的值。,例2.求13579 11,上述算法稍作改動: s1: 1 p; s2: 3 i; s3: p i p; s4: i+2 i s5: 若i1

3、1,返回s3;否則,結(jié)束。,請同學(xué)們仔細(xì)分析循環(huán)結(jié)束的條件,即s5步驟,如果在求13579 11時,將s5步驟寫成: s5:若I11,返回s3。 這樣會有什么問題?會得到什么結(jié)果?,例 2,有50個學(xué)生,要求將他們之中成績在80分以上 者打印出來。 解:用n表示學(xué)生學(xué)號,n1代表第一個學(xué)生學(xué)號,ni 代表第i 個學(xué)生學(xué)號。用g代表學(xué)生成績,gi代表第i個學(xué)生成績,算法表示如下:,S1: 1 i; S2: 如果gi80,則打印ni和gi,否則不打印。 S3: i+1 i; S4: 如果i50,返回s2,繼續(xù)執(zhí)行,否則算法結(jié)束。 本例中,變量i作為下標(biāo),用它來控制序號 (第幾個學(xué)生,第幾個成績)。

4、當(dāng) i超過50時,表 示已對50個學(xué)生的成績處理完畢,算法結(jié)束。,算法的特性,有窮性 確定性 有零個或多個輸入 有一個或多個輸出 有效性,用語言表示算法(自然語言、結(jié)構(gòu)化語言) 用流程圖表示算法(傳統(tǒng)、N-S流程圖) 用偽代碼表示算法 用計(jì)算機(jī)語言表示算法 要記住常用的流程圖符號(請學(xué)生說出各自的名稱),怎樣表示一個算法,例如:描述計(jì)算并輸出z=y/x的流程,可以用自然語言描述如下: (1)輸入x,y。 (2)判斷x是否為0: 若X=0,則輸出錯誤信息; 否則計(jì)算 y/x z,且輸出z。,自然語言描述舉例,例如:描述計(jì)算并輸出z=y/x的流程,可以用結(jié)構(gòu)化語言描述算法如下: (1)input

5、x,y。 (2)if x=0 print (“非法輸入”) else z=y/x; print z;,結(jié)構(gòu)化語言描述舉例,求5!,程序流程圖舉例,t=1,i=2,t=t*i,i=i+1,i5,結(jié)束,N,Y,開始,17,【例】判斷自然數(shù)n(n1)是否為素?cái)?shù),盒圖(N-S圖)舉例,幾種算法表示方法比較,求5!,S1: 1 p S2: 2 i S3: p*i p S4: i+1 i S5:若i=5, 返回s3; 否則,結(jié)束,用自然語言表示,用流程圖表示,用N-S流程表示,int main(void) int i,t; t=1; i=2; while(i=5) t=t*i; i=i+1; printf

6、(“%d”,t); return 0; ,用語言表示,3.2 程序的三種基本結(jié)構(gòu) 結(jié)構(gòu)化程序設(shè)計(jì) 基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(goto) 結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序叫 優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率,三種基本結(jié)構(gòu),順序結(jié)構(gòu) 選擇結(jié)構(gòu)(選取結(jié)構(gòu)、分支結(jié)構(gòu)) 循環(huán)結(jié)構(gòu)(重復(fù)結(jié)構(gòu)) 當(dāng)型循環(huán)結(jié)構(gòu)(While型) 直到型循環(huán)結(jié)構(gòu)(Until型) 三種結(jié)構(gòu)的特點(diǎn): 只有一個入口和出口 結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到。 結(jié)構(gòu)內(nèi)不存在死循環(huán),順序結(jié)構(gòu),選擇結(jié)構(gòu),二分支選擇結(jié)構(gòu),多分支選擇結(jié)構(gòu),k,循環(huán)結(jié)構(gòu),當(dāng)型循環(huán)結(jié)構(gòu),直到型循環(huán)結(jié)構(gòu)

7、,注:A可以是一個簡單語句,也可以是一個基本結(jié)構(gòu),課堂練習(xí): 以“在一組數(shù)中求最大數(shù)”的詳細(xì)設(shè)計(jì)為例,分別用程序流程圖、NS圖來描述它的軟件實(shí)現(xiàn)過程。為了簡化,兩張圖可全部省略程序開始處的輸入語句和結(jié)束處的輸出語句。,3.3 結(jié)構(gòu)化程序設(shè)計(jì),自頂向下 逐步細(xì)化 模塊化設(shè)計(jì) 結(jié)構(gòu)化編程,課后習(xí)題: 2.1 什么是算法?試從日常生活中找3個例子,描述它們的算法。 2.2 什么叫結(jié)構(gòu)化的算法?為什么要提倡結(jié)構(gòu)化的算法? 2.3 試述三種基本結(jié)構(gòu)的特點(diǎn),你能否自己另外設(shè)計(jì)兩種基本結(jié)構(gòu)(要符合基本結(jié)構(gòu)的特點(diǎn))。,2.4 分別用傳統(tǒng)流程圖和盒圖(N-S圖)表示求解以下問題的算法。 (1) 有兩個瓶子A和B,分別盛放醋和醬油,要求將它們互換(即A瓶原來盛醋,現(xiàn)改盛醬油,B瓶則相反)。 (2) 依次將10個數(shù)輸入,要求將其中最大的數(shù)打印出來。 (3) 有3個數(shù)a、b、c,要求按大小順序把它們打印出來。 (4) 求1+

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論