《C程式设计与应用》PPT课件.ppt_第1页
《C程式设计与应用》PPT课件.ppt_第2页
《C程式设计与应用》PPT课件.ppt_第3页
《C程式设计与应用》PPT课件.ppt_第4页
《C程式设计与应用》PPT课件.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

Visual C+程式設計與應用,Ch6Ch8,條件式流程控制,if(條件式) 單行程式敘述; if(條件式) 多行程式敘述 ,if(test_score = 60) cout= 60) cout“You Pass!”endl; cout“Your score is”test_scoreendl; ,使用if敘述再撰寫程式時,請注意程式的縮排以及善用,if(x3) y=2; z+=8; a=y+x;,if(x3) y=2; z+=8; a=y+x;,條件式的值 布林值:true或false 整數:0表示false、其他為true a = -2; if(a) cout “here” endl; ,if巢狀是敘述 判斷A是否為2的倍數也是3的倍數 int a = 126; if(a % 2) = 0) if(a%3) = 0) cout “A是2的倍數也是3的倍數” endl; ,if(條件式) /條件成立時 程式敘述句一; else /條件不成立時 程式敘述句二; ,if(條件1) /條件1成立時執行此段 else if(條件2) /條件2成立時執行此段 else if(條件3) /條件3成立時執行此段 else /都不成立時執行此段,switch敘述 switch(條件式) case 回傳值1(符合數字或字元): break; case 回傳值2(符合數字或字元): break; default: break; ,if(a = 1) / else if(a = 2) / else if(a = 3) /,switch(a) case 1: / break; case 2: / break; case 3: / break; default: / ,三元條件運算子 (條件式)?(程式1):(程式2) 當條件式為true時,會執行程式1,反之執行程式2,if(ab) c=a; else c=b; c = (ab)?a:b;,重覆式流程控制,for迴圈敘述 for(設定控制變數的初始值;迴圈條件;運算式) 需重覆執行的敘述 for(int i = 1 ; i3 ; i+) cout “迴圈執行第” i “次” endl; ,for(int x=1 ; x2 ; x+) cout x endl; cout x endl; 最後一行中,x沒有被定義,while迴圈敘述 while(條件式) /重覆執行的敘述,do-while迴圈敘述 do 需要重覆執行的敘述 while(條件式); 可讓迴圈下的程式至少執行一次,巢狀迴圈 迴圈中包含另一迴圈,控制迴圈流程的技巧,若欲在迴圈流程或是條件式程式區段裡強迫終止程式的執行,又或者要離開此區段程式執行另一段程式,類似這樣的流程控制,可以使用goto、continue或是break,goto 不建議使用 goto 目的地標籤;,continue int a; for(a=0;a=9;a+) if(a=3) continue; cout a endl; ,break 可以離開目前switch、for、while、do while的程式區塊,練習,6-31 第3題 6-35 第19,20題,函式介紹,當你的程式越來越大、越來越複雜時,會發現到有某些程式碼經常被使用,而由於撰寫在同一個主函式中的關係,這些程式碼會一再被重覆地撰寫。 使用函式就可將程式碼組織成為一個小的、獨立的運行單元,並且可在程式中的各個地方重覆執行多次。這樣的方式可以省去了重覆撰寫相同程式碼的時間與空間。,函式的組成主要包括四個部份:傳回值型態、函式名稱、參數列與函式主體 int addint(int i,int j) int sum; sum = i + j; return sum; ,函式宣告,任何函式被呼叫之前,必須先作宣告動作,除非函式與欲呼叫函式的程式是在同一個檔案,而且函式的定義位置在被呼叫的程式之前,否則會出現編譯錯誤。 要解決此問題就必須要使用函式原型來宣告函式。 函式原型的架構: 傳回值型態 函式原型名稱(參數列); ex: int func(int,int);,錯誤範例 int main() int i; i = func1(2); return 0; int func1(int var) return var +1; ,int func1(int var) return var +1; int main() int i; i = func1(2); return 0; ,int func1(int); int main() int i; i = func1(2); return 0; int func1(int var) return var +1; ,將要使用的函式拿到前面宣告,使用函式原型來宣告函式,函式參數傳遞,在C+中傳遞參數的方法可以分為兩類;傳值給函式(pass by value)和傳參考值給函式(pass by reference) 傳值給函式 在傳遞的過程中作為參數的變數或是常數在實際上並未真正的傳遞給函式,而是先將參數的值複製下來,供函式使用。,函數回傳值,函式的傳回值一般而言都是經過處理後的數值,但是有時因為考慮到程式碼的簡潔性也可將運算式放在傳回值內,處理後回傳給呼叫者。,int add(int a,int b) int sum = 0; sum = a + b; return sum; 也可簡寫成 int add(int a,int b) return a+b; ,行內函式,在呼叫函式時會產生記憶體空間來存放參數而導致需要額外的資源負擔,像前面的add()這種小函式,就可以使用行內函式(inline function) 使用行內函式方式直接寫進呼叫程式內,原始程式一遇到行內函式呼叫,函式的程式碼會立即插入程式中,而非產品呼叫函式的指令。 寫法: inline int add(int a,int b) /在最前頭加inline ,遞迴,一個可以反覆執行的過程 一個跳出反覆執行過程中的缺口,練習,輸入一個整數n,請用遞迴寫出1加到n的值,巨集的定義與使用,在程式設計的過程中,有些數值或字串會經常使用到,如果這些值或字串沒有事先定義成常數,當需要更改這些數值或字串的內容時,就必須將整個程式與此值相關的程式片段進行修改。 在修改的過程中,也容易因為疏忽而漏改一些數值或字串,造成程式的錯誤。,在C+中,程式設計師可以透過使用#define指令來改善這類問題。 #define 巨集名稱 數值、字串、程式敘述或函式 Ex:數學上一英吋為2.54公分,因此我們可以定義常數INCH,其值為2.54,其中INCH就是巨集的名稱,2.54就是指INCH常數的內容。也就是寫成: #define INCH 2.54 也可以寫成 const float INCH = 2.54;,const與#define的差別,使用const來宣告常數時,由於它本身是屬於一種資料型別,因此當使用const來宣告常數時會佔用記憶體空間,而使用#define指令定義常數時會不會佔用任何空間。,使用巨集取代函式,#define Sum a+b 當我們建立巨集Sum之後,在編譯程式碼時,就會以a+b來取代Sum。如果要建立的替代文字內容過長時,必須使用” ”轉到下一行繼續建立替代文字。,除了單純地使用#define巨集指令來取代簡單的程式敘述外,我們也可以傳入適當的參數列及函式運算式,來取代簡單的函式功能。 #define 巨集函式名稱(參數列) (函式運算式) Ex:三角型面積 #define AREA(base,height) ( (base) * (height) / 2.0),取消常數或巨集的定義,當使用#define指令來建立常數或巨集後,想要取消常數或巨集的定義時,就可以使用#undef指令來取消。 當我們使用#define建立常數或巨集後,它可適用範圍是從定義開始,直到使用#undef指令取消或檔案結束為止。 使用#undef指令取消常數或巨集的定義之後,又想重新使用時,可以再使用#define指令重新定義。

温馨提示

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

评论

0/150

提交评论