1 / 79

outline

outline. 安裝環境 Hello world Data type Printf & scanf 運算子 條件運算式 loop Break , continue , goto Function Pointer Struct stack. http://download.eclipse.org/tools/cdt/releases/galileo. #include < stdio.h >

shen
Download Presentation

outline

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. outline • 安裝環境 • Hello world • Data type • Printf & scanf • 運算子 • 條件運算式 • loop • Break , continue , goto • Function • Pointer • Struct • stack

  2. http://download.eclipse.org/tools/cdt/releases/galileo.

  3. #include <stdio.h> 這一條並非C語言的命令,而是屬於C語言前置處理程式(preprocessor)所管理的指令(Directive),#define也是這類指令。簡單地說,這條假指令的目的就是於該處引進(include)檔案stdio.h的全部內容,其結果正如同我們於該處鍵入stdio.h檔案內容一般。 檔案stdio.h乃系統所附的檔案,這類檔案泛稱為標頭檔(Header file),由其附加檔案.h即可看出它的意義。

  4. stdio.h的實際意義為標準輸入輸出標頭檔,檔案中定義了許多重要的常數(Constant)以及函式原型宣告(Function prototype declaration)或語法(Syntax)的宣告,譬如程式中使用到的printf( )函式的語法,是放在stdio.h的標頭檔裏,而system()庫存函式的語法則放在stdlib.h標頭檔中。

  5. 外圍是unsigned short int所表示的範圍從0到65535。

  6. Printf & scanf

  7. 脫逸序列

  8. 函式scanf() • printf()函式主要功能是作為輸出之用,而相對應的輸入函式則為scanf(),它的參數型態與printf()差不多。 scanf(format,item1,item2,....,itemN); • format仍然是一個控制字串,其中還是由%和轉換字元組合而成,後面的每一項資料都要與前面的轉換規格吻合。

  9. 和printf()間最重要的一點差異是scanf()中的資料項都必須是變數的位址;目前我們所知的作法就是在單純變數前加入&運算子。請看底下的範例:和printf()間最重要的一點差異是scanf()中的資料項都必須是變數的位址;目前我們所知的作法就是在單純變數前加入&運算子。請看底下的範例: int num;  我們宣告了int型態的變數num,若想由鍵盤讀入num的數值,就該這麼做: scanf("%d", &num);

  10. 單引號內的%d意謂著程式將等待一個十進位整數的輸入,至於輸入的資料則放在&num這個位址上,從此之後,變數便擁有剛剛輸入的數值。千萬別寫成單引號內的%d意謂著程式將等待一個十進位整數的輸入,至於輸入的資料則放在&num這個位址上,從此之後,變數便擁有剛剛輸入的數值。千萬別寫成 scanf("%d", num); 這是初學者常犯的錯誤。 • scanf()的控制字串與printf()十分類似,都允許具有選擇性的欄位。

  11. 算術運算子 表4-1 算術運算子

  12. 餘數運算子 • 餘數運算子(modular operator)的表示記號為'%',同樣是二元運算子: a % b • 該運算子可取得a除以b後所留下的餘數,特別注意的是:本運算子僅能作用於整數型態;換句話說,a和b這兩個運算元都必須是整數資料。

  13. 遞增與遞減運算子 • 遞增運算子可依運算子的位置不同而有兩種形式:第一種是++出現於運算元前面,即所謂的“前置”(prefix)模式;另一種則為++位於運算元之後,即“後繼”(postfix)模式。 ++num; 前置模式 num++; 後繼模式

  14. 7 6 5 4 3 2 1 0 位元運算子 • C語言共擁有四種位元運算子(bitwise operator):~(NOT), &(AND),|(OR),以及^(XOR),它們均運作於整數型態的資料上。另外還有兩個位移運算子(shift operator):<<(左移)與>>(右移),它們能將位元內容分別向左或向右遞移指定的次數。 • 當我們說位元0時即代表最右邊的低次位元,而位元7則為最左方的高次位元

  15. if敘述與關係運算子 • if敘述又稱為“分支敘述 (branching statement)” • if後面至少有個小括號,小括號裡面乃為一般的運算式,譬如(a>b)(a大於b)或是(x == y)(x等於y)等等。

  16. 關係運算子便可組成關係運算式。C語言共提供六種關係運算子,它們都是二元運算子關係運算子便可組成關係運算式。C語言共提供六種關係運算子,它們都是二元運算子 表 5-1 關係運算子 28

  17. If & else if & else 執行情形 What's your score ? 114 It's impossible ! What's your score ? 91 Score 91 ===> A What's your score ? 14 You are down ! 29

  18. Switch

  19. while迴圈 • while迴圈的工作原理: • 首先對expression運算式加以求值,若結果為真(即非零值),那麼statement部分便會執行;一旦執行完畢後,控制權又回到expression測試 • 這種過程一直持續到expression的求值結果變成假(即0)為止,然後才結束while敘述。 • 在邏輯上,整個while迴圈乃為單一敘述。

  20. 以流程圖可將while結構列示於下:

  21. do....while迴圈 • 首先執行statement敘述(不論是單一的或是複合的),然後再對expression進行求值,如果為假,迴圈敘述便就此結束,否則還要回到statement繼續執行:

  22. 整個do....while同樣被視為單一敘述,別忘記while (expression)後面的分號。在迴圈本體中,應該要有某些敘述可使最後的測試條件變為假,否則就會陷入"無窮迴圈"(infinite loop)的狀況。

  23. for迴圈 • initial:此敘述僅在第一次進入迴圈時執行一次,往後便不再執行。 • test:即一般的測試運算式,在進入迴圈本體前,test敘述將先行求值;若求值結果為假,就立即跳出for迴圈;否則便執行statement敘述(單一或是複合)。

  24. update:凡是執行完statement本體敘述後,update敘述將接著執行,以改變某些測試條件。然後再回到test測試,重複同樣的循環。update:凡是執行完statement本體敘述後,update敘述將接著執行,以改變某些測試條件。然後再回到test測試,重複同樣的循環。 • 這三個敘述分別可以省略,也可以有多個敘述,若省略initial或test,其後面的「;」還是要寫出來。 • for迴圈的示意圖如下:

  25. 逗號運算子 • 逗號(,)除了在變數宣告時用來分隔同類型的變數名稱外,它本身還是一種運算子,稱作逗號運算子(comma operator)。 • 多於一個以上的運算式可用逗號加以分隔,它有兩種重要的特性。 1.所有被逗號分隔的運算式將按由左向右的方向依序加以求值。 2.整個逗號運算式的值乃為最右邊之運算式的值。

  26. #include <stdio.h> #include <stdlib.h> int main() { int x, y, z; printf(" x y\n\n"); for(x=1, y=10; x<=6 && y<=60; x++, y=y+10) printf(" %d %d\n", x, y); printf("\n"); z = (x=100, (y = 1000) +14); printf("x = %d y = %d z = %d\n", x, y, z); } x y 1 10 2 20 3 30 4 40 5 50 6 60 x = 100 y = 1000 z = 1014

  27. Break & Continue • break可以離開目前switch、for、while、do while的區塊,並前進至區塊後下一個陳述句,在switch中主要用來結束陳述句進行至下一個case的比對,在for、while與do while中,主要用於中斷目前的迴圈執行,如果break出現並不是內含在for、while迴圈中或switch陳述中,則會發生編譯錯誤, break的例子我們之前看過不少,這邊不再舉例。 continue的作用與break類似,主要使用於迴圈,所不同的是break會結束區塊的執行,而continue只會結束接下來區塊中的陳述句,並 跳回迴圈區塊的開頭繼續下一個迴圈,而不是離開迴圈

  28. goto是一個很方便,但是最不被建議使用的語法,濫用它的話會破壞程式的架構、使得程式的邏輯難以trace,事實上,在完全不使用goto的情況下, 您也可以使用結構化的語法來撰寫程式。goto可以在程式中任意跳躍,跳躍前必須先設定好目的地,跳躍時必須指定目的地,例如:  start: .... .... goto start;

  29. 變數儲存種類 • C語言主要提供四種變數儲存種類:自動(auto)、靜態(static)、外部(extern)、以及暫存器(register)等等。宣告這些儲存種類的時候,只要在一般的變數宣告敘述前加上明確的關鍵字即可: auto intnum, value; static char ch = 'A'; extern double ary[20]; register int cache;

  30. auto:只使用在 function 中的本地變數,以下兩行宣告,結果一樣,所以一般都會省略 auto 宣告。 • register:宣告變數存儲在 register 而不是 RAM,可以加快存取速度。 • static:維持變數值存在於程式執行過程。 • extern:宣告變數為全域變數,也就是程式中的任何檔案都看得到這個變數。

  31. Static

More Related