流程圖與程式_第1頁(yè)
流程圖與程式_第2頁(yè)
流程圖與程式_第3頁(yè)
流程圖與程式_第4頁(yè)
流程圖與程式_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 二 章 流程圖與程式 流程圖(flow chart)是用來表示演算法(algorithm)或程式執(zhí)行的過程,是一種常用的方法,讓您能夠輕鬆掌握整個(gè)問題的架構(gòu)。 2.1 流程圖 流程圖藉著各種不同的圖形以及一些帶有箭頭的直線來表示各種作業(yè)或功能,帶有箭頭的直線則表示流向。熟練流程圖技巧,可建立良好的程式設(shè)計(jì)基楚。 一般常用之流程圖其圖形及帶箭頭的直線如下圖所示。 2.2 演算法 演算法是指使用有限的指令以解決某一指定問題的步驟,其特性如下: 1。輸入 可以沒有輸入資料,或有多個(gè)輸入資料。 2。輸出 至少有一個(gè)輸出資料。 3。有限性 演算法必須經(jīng)過有限步驟執(zhí)行後停止作業(yè)。 4。有效性 可在紙上

2、作業(yè)追蹤執(zhí)行的結(jié)果。 5。明確性 每個(gè)指令必須明確,不可模稜兩可。 說明演算法常用的方式有三種,文字?jǐn)⑹?、演算法語言、流程圖。 2.3 C 語言程式 將演算法或流程圖轉(zhuǎn)化為 C 語言程式並不困難,因?yàn)檠菟惴ɑ蛄鞒虉D都已經(jīng)將解決問題的步驟明白敘述,您只須將每一個(gè)步驟使用 C 語言程式的語法表示出來就是一個(gè) C 語言的程式了,然後交給電腦去執(zhí)行,自然就得到答案了。 那麼電腦如何處理您的程式呢?通常要經(jīng)過編輯、編譯、執(zhí)行等三個(gè)動(dòng)作。 編輯 編輯指您根據(jù)演算法或流程圖製作一個(gè) C 語言程式,您可使用任何文字編輯的應(yīng)用程式,例如 Windows 裡的記事本、Word、或文書處理程式等軟體,在 UNIX

3、或 Linux 系統(tǒng)您可以使用 vi 編輯程式等等。C 語言程式的附檔名為.c,如下面的例一程式,它的檔名為average.c。 編譯 編譯指將原始程式轉(zhuǎn)換為目的程式的動(dòng)作。原始程式指您所製作的 C 語言程式,例如 average.c,它是人們所看得懂的文件,但目的程式只含由零0與一1兩個(gè)符號(hào)所組成的指令,這些指令只有電腦看得懂,也因?yàn)殡娔X看得懂這些指令,電腦才有辦法執(zhí)行這些指令,執(zhí)行這些指令的結(jié)果就是您要的答案。 若編譯成功會(huì)產(chǎn)生一個(gè)電腦的可執(zhí)行檔,例如編譯 average.c 成功時(shí)會(huì)產(chǎn)生一個(gè) average.exe 檔,您直接執(zhí)行 average.exe 就可得到答案。您在編譯時(shí)可能產(chǎn)生

4、錯(cuò)誤,這時(shí)必須透過編輯程式改正錯(cuò)誤,改正之後再行編譯,一直到編譯成功時(shí)才可以開始執(zhí)行目的程式。 執(zhí)行目的程式時(shí)電腦會(huì)輸出執(zhí)行的結(jié)果,輸出的結(jié)果可能是正確的答案,也可能是錯(cuò)誤的資料,當(dāng)然要找出錯(cuò)誤的地方加於更正,再一次編譯及執(zhí)行,總要得到正確的結(jié)果才算完成,它的步驟如下圖所示。 【例一】 輸入兩個(gè)數(shù) a 及 b,求其平均值 avg。 【以文字?jǐn)⑹稣f明】 1。輸入兩個(gè)數(shù)分別命名為 a 及 b。 2??偤?sum 為 a 及 b 之和。 3。平均值 avg 為總和 sum 除於 2 的商數(shù)。 4。輸出平均值 avg。 5。停止。 【以演算法語言說明】 1。INPUT a,b 2。sum a+b 3。

5、avg sum/2 4。PRINT avg 5。END 以流程圖說明演算法【程式average.c】 /* average.c */ #include int main() double a,b,sum,avg; scanf(%lf %lf, &a, &b); /*步驟1*/ sum=a+b; /*步驟2*/ avg=sum/2; /*步驟3*/ printf(%f, avg); /*步驟4*/ return (0); /*步驟5*/ 【執(zhí)行結(jié)果】 1.0 3.0 註輸入兩個(gè)數(shù)1.0 3.0後按Enter鍵 2.000000 註輸出平均值avg=(1.0+3.0)/2 為了說明方便,將程式每一

6、列編號(hào),原來的程式是沒有編號(hào)的,編號(hào)只為了方便說明而已。 1 /* average.c */ 2 #include 3 int main() 4 5 double a,b,sum,avg; 6 scanf(%lf %lf, &a, &b); /*步驟1*/ 7 sum=a+b; /*步驟2*/ 8 avg=sum/2; /*步驟3*/ 9 printf(%f, avg); /*步驟4*/ 10 return (0); /*步驟5*/ 11 程式 average.c 中 第 5 列 double a,b,sum,avg; 宣告 a、b、sum、avg 均為浮點(diǎn)數(shù),沒賦予初值,如下圖所示。圖中最

7、大的長(zhǎng)方形格子表示電腦的記憶體,程式裡的變數(shù)名稱 a、b、sum、 avg 等就好像郵局裡的信箱名稱一樣,一個(gè)變數(shù)名稱就相當(dāng)於一個(gè)信箱 名稱,因此本程式在記憶體儲(chǔ)存五個(gè)信箱,它的名稱分別為 a、b、sum 、avg。變數(shù)的值就相當(dāng)於信箱裡的信件一樣,因?yàn)槟壳靶畔溲e頭並沒 有信件,因此以空白表示。 第 6 列 scanf(%lf %lf, &a, &b); 從鍵盤輸入二個(gè)值,分別置入 a、b 變數(shù)裡,例如您輸入 1.0 3.0 等 二個(gè)值,數(shù)值之間最少空一格,輸入最後的數(shù)值緊接著按Enter鍵 ,您也可以每輸入一個(gè)數(shù)值後馬上按Enter鍵,如下圖所示。 第 7 列 sum=a+b; 計(jì)算 sum

8、=a+b,如下圖所示。圖中除了記憶體之外,還出現(xiàn)一個(gè) CPU,CPU 是 Central Processing Unit 中央處理單元的意思,記憶體只 負(fù)責(zé)儲(chǔ)存資料,中央處理單元負(fù)責(zé)處理資料,處理的項(xiàng)目主要包括計(jì)算 與比較,因此就將 a、b 的值 1.0、3.0 從記憶體搬到 CPU 執(zhí)行加法 計(jì)算,其和 4.0 再?gòu)?CPU 搬到記憶體裡的 sum 變數(shù),這時(shí) sum 變數(shù) 的值就是 4.0 了。 第 8 列 avg=sum/2; 計(jì)算 avg=sum/2,如下圖所示。將 sum 的值 4.0 從記憶體搬到 CPU 執(zhí) 行除法計(jì)算,其商 2.0 再?gòu)腃PU 搬到記憶體裡的 avg 變數(shù),這

9、時(shí) avg 變數(shù)的值就是 2.0 了。 第 9 列 printf(%f, avg); 從記憶體 avg 處將其內(nèi)含值 2.0 以浮點(diǎn)數(shù)格式輸出至螢?zāi)?,如下圖所 示。 第 10 列 return (0); 表示程式結(jié)束了,傳回 0 值表示正常結(jié)束。 【例二】 重複輸入一數(shù) num,若 num 為正數(shù)則累加至總和 sum, 否則印出總和後 停止。 【以文字?jǐn)⑹稣f明】 1。設(shè)總和 sum 為 0。 2。輸入一數(shù) num。 3。若 num 為正數(shù),則 num 加至總和 sum 後跳至步驟 2。 4。輸出總和 sum。 5。停止。 【以演算法語言說明】 1。sum 0 2。INPUT num 3。IF

10、num0 THEN sum sum + num : GOTO 2 4。PRINT sum 5。END 【以流程圖說明演算法】【程式sum.c】 /* sum.c */ #include int main() double num,sum; sum=0.0; /*步驟1*/ again: scanf(%lf, &num); /*步驟2*/ if (num0) sum=sum+num; goto again; /*步驟3,4,5*/ printf(%lf, sum); /*步驟6*/ return (0); /*步驟7*/ 【結(jié)果】 1.0 註輸入一個(gè)數(shù)1.0後按Enter鍵 3.0 註輸入一個(gè)數(shù)

11、3.0後按Enter鍵 -1 註輸入一個(gè)數(shù)-1 後按Enter鍵 4.000000 註輸出總和sum=1.0+3.0 為了說明方便,將程式每一列編號(hào),原來的程式是沒有編號(hào)的,編號(hào)只為了方便說明而已。 1 /* sum.c */ 2 #include 3 int main() 4 5 double num,sum; 6 sum=0.0; /*步驟1*/ 7 again: 8 scanf(%lf, &num); /*步驟2*/ 9 if (num0) sum=sum+num; goto again; /*步驟3,4,5*/ 10 printf(%lf, sum); /*步驟6*/ 11 retur

12、n (0); /*步驟7*/ 12 程式 sum.c 中:第 5 列 double num,sum; 宣告 num、sum 均為浮點(diǎn)數(shù),沒賦予初值,如下圖所示。圖中最大的長(zhǎng) 方形格子表示電腦的記憶體,程式裡的變數(shù)名稱 num、sum 等就好像郵 局裡的信箱名稱一樣,一個(gè)變數(shù)名稱就相當(dāng)於一個(gè)信箱名稱,因此本程 式在記憶體儲(chǔ)存兩個(gè)信箱,它的名稱分別為 num、sum。變數(shù)的值就相 當(dāng)於信箱裡的信件一樣,因?yàn)槟壳靶畔溲e頭並沒有信件,因此以空白表 示。 第 6 列 sum=0.0; 將 0.0 指定給 sum 變數(shù),如下圖所示,相當(dāng)於將 0.0 擺入記憶體 裡 sum 的格子裡。第 7 列 again

13、: 指定該處為 again 標(biāo)記,因?yàn)榈纫幌聲?huì)從程式的某處跳到這裡,因此 要給一個(gè)名稱,例如高雄縣澄清湖大門口要豎立一個(gè)門樓,寫上澄清 湖三個(gè)大字一樣,澄清湖就是一個(gè)標(biāo)記,我們的 again 也是一 個(gè)標(biāo)記。 第 8 列 scanf(%lf, &num); 從鍵盤輸入一個(gè)浮點(diǎn)數(shù),置入記憶體 num 處,例如您輸入 1.0 後 按 Enter 鍵,如下圖所示。第 9 列 if (num0) sum=sum+num; goto again; 將記憶體 num 處的值 1.0 取至 CPU 執(zhí)行邏輯運(yùn)算num0,結(jié)果 為 true,如下圖所示。 隨即執(zhí)行 sum=sum+num 計(jì)算,如下圖所示。將 sum、num 的值 0.0、 1.0 從記憶體搬到 CPU 執(zhí)行加法計(jì)算,其和 1.0 再?gòu)?CPU 搬到記憶 體裡的 sum 變數(shù),這時(shí) sum 變數(shù)的值就是 1.0 了。請(qǐng)注意這個(gè)敘述 裡有兩個(gè) sum 變數(shù),因?yàn)槊Q相同,所以在記憶體裡只設(shè)一個(gè) sum 變

溫馨提示

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

評(píng)論

0/150

提交評(píng)論