語言清晰版char程序的靈魂算法_第1頁
語言清晰版char程序的靈魂算法_第2頁
語言清晰版char程序的靈魂算法_第3頁
語言清晰版char程序的靈魂算法_第4頁
語言清晰版char程序的靈魂算法_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2算法1算法的概念1簡單算法舉例1算法的特性4怎樣表示一個(gè)算法4程序的2.12.22.32.42.4.12.4.22.4.32.4.42.4.52.4.6用自然語言表示算法4用流程圖表示算法4三種基本結(jié)構(gòu)和改進(jìn)的流程圖8用N-S流程圖表示算法9用偽代碼表示算法0用計(jì)算機(jī)語言表示算法112.5結(jié)構(gòu)化程序設(shè)計(jì)方法112程序的算法一個(gè)程序應(yīng)包括:對數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure)。對操作的描述。即操作步驟,也就是算法(algorithm)。Nikiklaus Wirth公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序認(rèn)為:程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+

2、語言工具和環(huán)境這 4 個(gè)方面是一個(gè)程序涉及所應(yīng)具備的知識。本課程的目的是使同學(xué)知道怎樣編寫一個(gè) C 程序,進(jìn)行編寫程序的初步訓(xùn)練,因此,只介紹算法的初步知識。2.1 算法的概念做任何事情都有一定的步驟。為解決一個(gè)問題而采取的方法和步驟,就稱為算法。計(jì)算機(jī)算法:計(jì)算機(jī)能夠執(zhí)行的算法。計(jì)算機(jī)算法可分為兩大類:數(shù)值運(yùn)算算法:求解數(shù)值;非數(shù)值運(yùn)算算法:事務(wù)管理領(lǐng)域。2.2 簡單算法舉例【例 2.1】求 12345。最原始方法:步驟 1:先求 12,得到結(jié)果 2。第 1 頁步驟 2:將步驟 1 得到的乘積 2 乘以 3,得到結(jié)果 6。步驟 3:將 6 再乘以 4,得 24。步驟 4:將 24 再乘以 5

3、,得 120。這樣的算法雖然正確,但太繁。改進(jìn)的算法:S1:S2:S3:S4:使 t=1使 i=2使 ti, 乘積仍然放在在變量 t 中,可表示為 tit使 i 的值+1,即 i+1iS5:如果 i5, 返回重新執(zhí)行步驟 S3 以及其后的 S4 和 S5;否則,算法結(jié)束。如果計(jì)算 100!只需將 S5:若 i5 改成 i100 即可。 如果該求 1357911,算法也只需做很少的改動(dòng):S1: 1tS2: 3iS3: tit S4: i+2tS5:若 i11, 返回 S3,否則,結(jié)束。該算法不僅正確,而且是計(jì)算機(jī)較好的算法,因?yàn)橛?jì)算機(jī)是高速運(yùn)算的自動(dòng)機(jī)器,實(shí)現(xiàn)循環(huán)輕而易舉。思考:若將 S5 寫成

4、:S5:若 i11, 返回 S3;否則,結(jié)束?!纠?2.2】有 50 個(gè)學(xué)生,要求將他們之中成績在 80 分以上者打印出來。如果,n 表示學(xué)生學(xué)號,ni 表示第個(gè)學(xué)生學(xué)號;g 表示學(xué)生成績,gi 表示第個(gè)學(xué)生成績;則算法可表示如下:S1: 1iS2: 如果 gi80,則打印 ni 和 gi,否則不打印 S3: i+1iS4:若 i50, 返回 S2,否則,結(jié)束?!纠?2.3】判定 2000 2500 年中的每一年是否閏年,將結(jié)果輸出。潤年的條件:1)2)能被 4 整除,但不能被 100 整除的年份;能被 100 整除,又能被 400 整除的年份;設(shè) y 為被檢測的年份,則算法可表示如下:S1:

5、 2000y第 2 頁S2:若 y 不能被 4 整除,則輸出 y“不是閏年”,然后轉(zhuǎn)到 S6S3:若 y 能被 4 整除,不能被 100 整除,則輸出 y“是閏年”,然后轉(zhuǎn)到 S6S4:若 y 能被 100 整除,又能被 400 整除,輸出 y“是閏年” 否則輸出 y“不是閏年”,然后轉(zhuǎn)到 S6S5:輸出 y“不是閏年”。S6:y+1yS7:當(dāng) y2500 時(shí),返回 S2 繼續(xù)執(zhí)行,否則,結(jié)束。1 1 1 1 . 1123499100 。【例 2.4】求算法可表示如下:S1: sigh=1S2: sum=1S3: deno=2S4: sigh=(-1)sighS5: term= sigh(1/

6、deno ) S6: term=sum+termS7: deno= deno +1S8:若 deno100,返回 S4;否則,結(jié)束?!纠?2.5】對一個(gè)大于或等于 3 的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。算法可表示如下:S1: 輸入 n 的值第 3 頁S2: i=2S3: n 被 i 除,得余數(shù) rS4:如果 r=0,表示 n 能被i 整除,則打印 n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5 S5: i+1iS6:如果 in-1,返回 S3;否則打印 n“是素?cái)?shù)”;然后算法結(jié)束。改進(jìn):S6:如果 i n ,返回 S3;否則打印 n“是素?cái)?shù)”;然后算法結(jié)束。2.3 算法的特性有窮性:一個(gè)算法應(yīng)包含有限的

7、操作步驟而不能是無限的。確定性:算法中每一個(gè)步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含糊的、有零個(gè)或多個(gè)輸入。有一個(gè)或多個(gè)輸出。有效性:算法中每一個(gè)步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。的。對于程序設(shè)計(jì),必須會(huì)設(shè)計(jì)算法,并根據(jù)算法寫出程序。2.4 怎樣表示一個(gè)算法2.4.1 用自然語言表示算法除了很簡單,一般不用自然語言表示算法。2.4.2 用流程圖表示算法流程圖表示算法,直觀形象,易于理解。第 4 頁【例 2.6】將例 2.1 求 5!的算用流程圖表示?!纠?2.7】將例 2.2 的算用流程圖表示。第 5 頁【例 2.8】將例 2.3 判定閏年的算用流程圖表示。第 6 頁1 1 1 1 . 1123

8、499100 的算用流程圖表示?!纠?2.9】將例 2.4 求一個(gè)流程圖包括:1.2.3.表示相應(yīng)操作的框;帶箭頭的流程線;框內(nèi)外必要的文字說明。第 7 頁2.4.3 三種基本結(jié)構(gòu)和改進(jìn)的流程圖1.順序結(jié)構(gòu):2.選擇結(jié)構(gòu):3.循環(huán)結(jié)構(gòu)第 8 頁三種基本結(jié)構(gòu)的共同特點(diǎn):只有一個(gè);只有一個(gè)出口;結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到;結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。2.4.4 用N-S流程圖表示算法1973 年順序結(jié)構(gòu):學(xué)者提出了一種新型流程圖:N-S 流程圖。第 9 頁選擇結(jié)構(gòu):循環(huán)結(jié)構(gòu):2.4.5 用偽代碼表示算法偽代碼使用介于自然語言和計(jì)算機(jī)語言之間的文字和符號來描述算法。第 10 頁2.4.6 用計(jì)算機(jī)語言表示算法的任務(wù)是用計(jì)算機(jī)解題,就是用計(jì)算機(jī)實(shí)現(xiàn)算法;用計(jì)算機(jī)語言表示算法必須嚴(yán)格遵循所用語言的語則?!纠?2.20】求 12345 用 C 語言表示。main()i,t;t=1; i=2;while(i=5)t=t*i;i=i+1;prf(“%d”,t);【例 2.21】求級數(shù)的值。 main()sigh=1;float deno=2.0,sum=1.0,t

溫馨提示

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

評論

0/150

提交評論