流程图与程式.ppt_第1页
流程图与程式.ppt_第2页
流程图与程式.ppt_第3页
流程图与程式.ppt_第4页
流程图与程式.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章流程圖與程式,流程圖(flowchart)是用來表示演算法(algorithm)或程式執行的過程,是一種常用的方法,讓您能夠輕鬆掌握整個問題的架構。,2.1流程圖,流程圖藉著各種不同的圖形以及一些帶有箭頭的直線來表示各種作業或功能,帶有箭頭的直線則表示流向。熟練流程圖技巧,可建立良好的程式設計基楚。一般常用之流程圖其圖形及帶箭頭的直線如下圖所示。,2.2演算法,演算法是指使用有限的指令以解決某一指定問題的步驟,其特性如下:1。輸入可以沒有輸入資料,或有多個輸入資料。2。輸出至少有一個輸出資料。3。有限性演算法必須經過有限步驟執行後停止作業。4。有效性可在紙上作業追蹤執行的結果。5。明確性每個指令必須明確,不可模稜兩可。說明演算法常用的方式有三種,文字敘述、演算法語言、流程圖。,2.3C語言程式,將演算法或流程圖轉化為C語言程式並不困難,因為演算法或流程圖都已經將解決問題的步驟明白敘述,您只須將每一個步驟使用C語言程式的語法表示出來就是一個C語言的程式了,然後交給電腦去執行,自然就得到答案了。那麼電腦如何處理您的程式呢?通常要經過編輯、編譯、執行等三個動作。,編輯,編輯指您根據演算法或流程圖製作一個C語言程式,您可使用任何文字編輯的應用程式,例如Windows裡的記事本、Word、或文書處理程式等軟體,在UNIX或Linux系統您可以使用vi編輯程式等等。C語言程式的附檔名為.c,如下面的例一程式,它的檔名為average.c。,編譯,編譯指將原始程式轉換為目的程式的動作。原始程式指您所製作的C語言程式,例如average.c,它是人們所看得懂的文件,但目的程式只含由零0與一1兩個符號所組成的指令,這些指令只有電腦看得懂,也因為電腦看得懂這些指令,電腦才有辦法執行這些指令,執行這些指令的結果就是您要的答案。若編譯成功會產生一個電腦的可執行檔,例如編譯average.c成功時會產生一個average.exe檔,您直接執行average.exe就可得到答案。您在編譯時可能產生錯誤,這時必須透過編輯程式改正錯誤,改正之後再行編譯,一直到編譯成功時才可以開始執行目的程式。,執行目的程式時電腦會輸出執行的結果,輸出的結果可能是正確的答案,也可能是錯誤的資料,當然要找出錯誤的地方加於更正,再一次編譯及執行,總要得到正確的結果才算完成,它的步驟如下圖所示。,【例一】輸入兩個數a及b,求其平均值avg。【以文字敘述說明】1。輸入兩個數分別命名為a及b。2。總和sum為a及b之和。3。平均值avg為總和sum除於2的商數。4。輸出平均值avg。5。停止。【以演算法語言說明】1。INPUTa,b2。suma+b3。avgsum/24。PRINTavg5。END,以流程圖說明演算法,【程式average.c】/*average.c*/#includeintmain()doublea,b,sum,avg;scanf(%lf%lf,/*步驟5*/【執行結果】1.03.0註輸入兩個數1.03.0後按Enter鍵2.000000註輸出平均值avg=(1.0+3.0)/2,為了說明方便,將程式每一列編號,原來的程式是沒有編號的,編號只為了方便說明而已。1/*average.c*/2#include3intmain()45doublea,b,sum,avg;6scanf(%lf%lf,/*步驟5*/11,程式average.c中,第5列doublea,b,sum,avg;宣告a、b、sum、avg均為浮點數,沒賦予初值,如下圖所示。圖中最大的長方形格子表示電腦的記憶體,程式裡的變數名稱a、b、sum、avg等就好像郵局裡的信箱名稱一樣,一個變數名稱就相當於一個信箱名稱,因此本程式在記憶體儲存五個信箱,它的名稱分別為a、b、sum、avg。變數的值就相當於信箱裡的信件一樣,因為目前信箱裡頭並沒有信件,因此以空白表示。,第6列scanf(%lf%lf,從鍵盤輸入二個值,分別置入a、b變數裡,例如您輸入1.03.0等二個值,數值之間最少空一格,輸入最後的數值緊接著按Enter鍵,您也可以每輸入一個數值後馬上按Enter鍵,如下圖所示。,第7列sum=a+b;計算sum=a+b,如下圖所示。圖中除了記憶體之外,還出現一個CPU,CPU是CentralProcessingUnit中央處理單元的意思,記憶體只負責儲存資料,中央處理單元負責處理資料,處理的項目主要包括計算與比較,因此就將a、b的值1.0、3.0從記憶體搬到CPU執行加法計算,其和4.0再從CPU搬到記憶體裡的sum變數,這時sum變數的值就是4.0了。,第8列avg=sum/2;計算avg=sum/2,如下圖所示。將sum的值4.0從記憶體搬到CPU執行除法計算,其商2.0再從CPU搬到記憶體裡的avg變數,這時avg變數的值就是2.0了。,第9列printf(%f,avg);從記憶體avg處將其內含值2.0以浮點數格式輸出至螢幕,如下圖所示。,第10列return(0);表示程式結束了,傳回0值表示正常結束。,【例二】重複輸入一數num,若num為正數則累加至總和sum,否則印出總和後停止。【以文字敘述說明】1。設總和sum為0。2。輸入一數num。3。若num為正數,則num加至總和sum後跳至步驟2。4。輸出總和sum。5。停止。【以演算法語言說明】1。sum02。INPUTnum3。IFnum0THENsumsum+num:GOTO24。PRINTsum5。END,【以流程圖說明演算法】,【程式sum.c】/*sum.c*/#includeintmain()doublenum,sum;sum=0.0;/*步驟1*/again:scanf(%lf,/*步驟7*/【結果】1.0註輸入一個數1.0後按Enter鍵3.0註輸入一個數3.0後按Enter鍵-1註輸入一個數-1後按Enter鍵4.000000註輸出總和sum=1.0+3.0,為了說明方便,將程式每一列編號,原來的程式是沒有編號的,編號只為了方便說明而已。1/*sum.c*/2#include3intmain()45doublenum,sum;6sum=0.0;/*步驟1*/7again:8scanf(%lf,/*步驟7*/12,程式sum.c中:,第5列doublenum,sum;宣告num、sum均為浮點數,沒賦予初值,如下圖所示。圖中最大的長方形格子表示電腦的記憶體,程式裡的變數名稱num、sum等就好像郵局裡的信箱名稱一樣,一個變數名稱就相當於一個信箱名稱,因此本程式在記憶體儲存兩個信箱,它的名稱分別為num、sum。變數的值就相當於信箱裡的信件一樣,因為目前信箱裡頭並沒有信件,因此以空白表示。,第6列sum=0.0;將0.0指定給sum變數,如下圖所示,相當於將0.0擺入記憶體裡sum的格子裡。,第7列again:指定該處為again標記,因為等一下會從程式的某處跳到這裡,因此要給一個名稱,例如高雄縣澄清湖大門口要豎立一個門樓,寫上澄清湖三個大字一樣,澄清湖就是一個標記,我們的again也是一個標記。第8列scanf(%lf,從鍵盤輸入一個浮點數,置入記憶體num處,例如您輸入1.0後按Enter鍵,如下圖所示。,第9列if(num0)sum=sum+num;gotoagain;將記憶體num處的值1.0取至CPU執行邏輯運算num0,結果為true,如下圖所示。隨即執行sum=sum+num計算,如下圖所示。將sum、num的值0.0、1.0從記憶體搬到CPU執行加法計算,其和1.0再從CPU搬到記憶體裡的sum變數,這時sum變數的值就是1.0了。請注意這個敘述裡有兩個sum變數,因為名稱相同,所以在記憶體裡只設一個sum變數而已,因為屬於變數,因此它的內含值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论