el 1009 計算機概論 ( 電子一 b)

69
EL 1009 計計計計計 ( 計計A) Instructor Po-Yu Kuo 計計計計計 Introduction to Computer Science Ch. 1 計計 C 計計

Upload: milt

Post on 25-Jan-2016

67 views

Category:

Documents


0 download

DESCRIPTION

EL 1009 計算機概論 ( 電子一 B). Introduction to Computer Science. Instructor : Po-Yu Kuo 教師 : 郭柏佑. Ch. 1 認識 C 語言. 學習程式 語言的動機. 學習程式語言的動機. 為何想要學習程式語言 ? 研究或工作上需要 ; 興趣 ; 或者是喜歡打電動。 對電腦有興趣 平時喜歡使用電腦 ; 打電動 ; 線上遊戲。. * https://www.youtube.com/watch?v=7cNTUNSUvYw. 學習程式語言的動機. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: EL 1009  計算機概論  ( 電子一 B)

EL 1009 計算機概論 ( 電子一 A)

Instructor : Po-Yu Kuo

教師:郭柏佑

Introduction to Computer Science

Ch. 1 認識 C 語言

Page 2: EL 1009  計算機概論  ( 電子一 B)

2

學習程式 語言的動機

Page 3: EL 1009  計算機概論  ( 電子一 B)

3

學習程式語言的動機 為何想要學習程式語言 ?

研究或工作上需要 ; 興趣 ; 或者是喜歡打電動。

對電腦有興趣 平時喜歡使用電腦 ; 打電動 ; 線上遊戲。

* https://www.youtube.com/watch?v=7cNTUNSUvYw

Page 4: EL 1009  計算機概論  ( 電子一 B)

4

學習程式語言的動機 電腦遊戲隨著時間的改變 , 電腦設備 ( 顯示卡 ) 功

能的增進 , 遊戲畫面越來越細致。 然而 , 遊戲的基本指令 , 還是要由程式語言來控

制 : 使用者輸入指令 : 招式或大絕招。 製作者利用程式語言 , 設置不同指令對應到不

同招式。

*http://ruliweb.daum.net/*https://www.youtube.com/watch?v=hEW0DNbPGCo

*https://www.youtube.com/watch?v=5il9JYkLYQg

Page 5: EL 1009  計算機概論  ( 電子一 B)

5

C 語言的由來

Page 6: EL 1009  計算機概論  ( 電子一 B)

6

C 語言簡介 C 語言是最被廣泛使用的一種高階語言。 C 語言是 1972 年在 AT&T 貝爾實驗室 (Bell

Laboratory) 中發展出來的。 Dennis M. Ritchie 和 Ken Thompson 要發展

UNIX 作業系統 , 而發展出來的一套程式語言。 1980 年代中期 , 為避免各開發廠商所用的 C 語

言語法產生差異 , 由美國國家標準局 (American National Standard Institution) 為 C 語言訂定一套完整的國際標準語法 , 稱為 ANSI C, 做為 C 語言的標準。

Page 7: EL 1009  計算機概論  ( 電子一 B)

7

C 語言簡介 由於 C 語言所具備的效率、彈性、可攜性等各

項優點 , 逐漸成為一種廣受歡迎的程式語言。

C 語言的優點包括 : 1. 程式碼精簡 , 產生的程式執行效率佳。 2. 具有很高的可攜性。 3. 完全支援模組化的程式設計。 4. 彈性大而擴充性強。

Page 8: EL 1009  計算機概論  ( 電子一 B)

8

如何讓 C 語言程式 變成可以執行 C 程式稱為原始程式 , 原始程式必須翻譯成電腦

認識的機器語言 , 才能由電腦執行。

將高階程式語言所寫的原始程式 , 翻譯成機器語言的方式有編譯與直譯兩種。

C 語言採用的是編譯的方式 ( 因此可稱之為編譯式語言 ) 。將 C 原始程式編譯為可執行檔 , 需經過編譯和連結兩個動作。

Page 9: EL 1009  計算機概論  ( 電子一 B)

9

編譯與連結的動作

Page 10: EL 1009  計算機概論  ( 電子一 B)

10

編譯 使用編譯器 (Compiler) 將人類看得懂的原始程

式 , 翻譯成電腦看得懂的目的檔。

編譯器在編譯過程中 , 會檢查原始程式中的語法是否有錯誤。

如果有錯誤 , 原始程式將無法進行連結的動作。

程式設計者必須修正原始程式中的語法錯誤 , 再重新編譯。

Page 11: EL 1009  計算機概論  ( 電子一 B)

11

連結 編譯完成後 , 便可以進行連結的動作。

連結器 (linker) 的用處是將目的檔 , 與程式中所使用到的函式庫做連結 , 而產生完整的執行檔。

如果開發的程式比較大 , 或參與開發的人比較多 : 此時會將程式分成多個原始程式。 每個原始程式都可個別編譯成目的檔 , 然後於

連結時。 再將所有的目的檔與函式庫連結成一個完整的

執行檔。

Page 12: EL 1009  計算機概論  ( 電子一 B)

12

編譯式程式語言列表

Page 13: EL 1009  計算機概論  ( 電子一 B)

13

直譯式語言 直譯如同是現場口譯 , 當程式需要執行時才開始

翻譯。 直譯式的語言是利用直譯器 (Interpreter) 對原始

程式碼一邊讀解,一邊執行。 翻譯程式的過程中,不需要產生目的檔。 直譯器會將程式一行一行的讀入,並且逐行翻譯,

並送交由電腦執行。 像 JavaScript 、 VBScript 、 Perl 等都算是直譯

式語言。

Page 14: EL 1009  計算機概論  ( 電子一 B)

14

接觸 C 語言

Page 15: EL 1009  計算機概論  ( 電子一 B)

15

第一個 C 程式

第一行 int main (void) 稱之為 main () 函式。 main () 前面的 int 是整數的意思 , 表示這個 C

程式在執行結束時 , 會傳回一個整數值到作業系統。

main () 函式main () 函式的內容 寫在{ } 中

Page 16: EL 1009  計算機概論  ( 電子一 B)

16

第一個 C 程式 第三行 /*……*/ 裡面的字 , 稱之為註解。 當編譯器遇到註解時會跳過註解文字不做任何編譯。

編寫程式時 , 程式設計者以口語的方式加註解釋 , 以方便日後查看。

單行註解 : 多行註解 :

// 註解內容 /* 註解內容 */

Page 17: EL 1009  計算機概論  ( 電子一 B)

17

第一個 C 程式 第三行中 “ return 0; ” 的敘述 (statement),就是

將數值 0 傳回給作業系統。

通常在撰寫應用程式時 , 會將程式執行的狀況以 “傳回值” 反應給作業系統。

習慣上會用數值 0 表示程式執行順利 , 無任何錯誤的意思。

Page 18: EL 1009  計算機概論  ( 電子一 B)

18

輸出一行文字的程式

前置處理指令

Page 19: EL 1009  計算機概論  ( 電子一 B)

19

輸出一行文字的程式 第一行 #include <stdio.h> 稱之為前置處理指令

(preprocessing directive) 。

前置處理指令的功用 , 就是把 stdio.h 這個檔案的內容放在原始程式的最開頭。 檔案 stdio.h 會附於安裝編譯器的子資料夾下。

第 4~7 行用 { } 括住的部分 , 就是 main (void) 函式的內容。

Page 20: EL 1009  計算機概論  ( 電子一 B)

20

輸出一行文字的程式 第 5 行的 printf () 是 C 語言裡最基本的輸出函

式 : 將括號 () 中 , 用引號 “…” 包住的程式輸出到

標準輸出裝置。 預設的標準輸出裝置就是螢幕。 所以這行程式的功用 , 就是將 “ C 語言的世

界 , 你好啊 !!” 這段訊息 , 輸出到螢幕上

同樣的 , 在第六行 , 每個程式都需要加上 “ return 0;”, 傳回程式執行無誤的訊息。

Page 21: EL 1009  計算機概論  ( 電子一 B)

21

C 語言的基本語法

Page 22: EL 1009  計算機概論  ( 電子一 B)

22

main (void) 是什麼意思 main (void) 是每個 C 程式都一定要有的函式。

函式 (function) 簡單的說 , 就是一段程式的集合 , 並能產生某項特定的功能。

main (void) 函式中的 void 的意思是空白 , 也就是說 main () 函式不接受任何參數的傳入。

main () 函式比較特別 , 它不像函式庫中的函式 , 都有事先設計好的功用。

Page 23: EL 1009  計算機概論  ( 電子一 B)

23

main (void) 是什麼意思 main () 函式的內容 , 完全由寫程式的人自行決定。

如果我們希望程式能完成某項工作 , 就要將完成該工作的 C 語言敘述放在 main () 函式中。

Page 24: EL 1009  計算機概論  ( 電子一 B)

24

解 x=123 代入 2x+99 的結果

註解

Page 25: EL 1009  計算機概論  ( 電子一 B)

25

解 x=123 代入 2x+99 的結果 第 5 行為宣告變數 x 與 y 都是整數 (int) 。

第 6 行是將 x 值設定為 123 。

第 7 行是用 y 來接受 2x+99 的運算結果 , 在 C 語言中所有的算式都要寫成像本行的模式 : 等號的左邊只能有一個變數。 右邊則是算式。

Page 26: EL 1009  計算機概論  ( 電子一 B)

26

解 x=123 代入 2x+99 的結果 第 8 行是印出 y 的值 , 也就是印出 2x+99 的

結果。 觀察本行內容 , printf () 輸出的是 "答案 =

%d 。 執行結果則是輸出 "答案 = 345“ 。 printf () 函式自動將 %d 的部分代換成 y 的

值 345 。

其中 %d 稱為 printf () 的輸出格式控制符號 ; 將逗號後的變數 y 的值 , 以十進位的格式輸

出在 %d 的位置。

Page 27: EL 1009  計算機概論  ( 電子一 B)

27

解 x=123 代入 2x+99 的結果

關於 printf () 函式其它的輸出格式控制符號 , 在Ch. 2 和 Ch. 3 會做詳細介紹。

Page 28: EL 1009  計算機概論  ( 電子一 B)

28

含括檔 #include <...> 淺說 #include, 稱為前置處理指令 (preprocessing

directive) 。

編譯器在編譯 C 程式前 , 會先由前置處理器 (preprocessor) 來處理程式中的前置處理指令。

在原始程式第 1 行加上 #include<stdio.h>, 會把 stdio.h 這個檔案的內容放在原始程式的最開頭。 此動作稱為含括 (include), 而被含括到程式中

的 stdio.h 則稱為含括檔 , 其特色為副檔名為 .h 。

Page 29: EL 1009  計算機概論  ( 電子一 B)

29

含括檔 #include <...> 淺說 使用函式前 , 必須先宣告 (declare) 函式。

C 語言已經預先將標準函式庫中的函式宣告 , 分門別類放在各個含括檔中。

例如程式中用到了 printf () 函式 , 而其宣告就存放 stdio.h 中。 因此必需在程式開頭加上 #include<stdio.h> 這

一行。 程式的連結階段才不會出現錯誤訊息。

Page 30: EL 1009  計算機概論  ( 電子一 B)

30

含括檔 #include <...> 淺說 在程式一開始先以 #include 的方式 , 將程式中要

使用的函式宣告含括進來。

單一程式中所能含括的檔案數並無限制。

Page 31: EL 1009  計算機概論  ( 電子一 B)

31

程式的分段:使用 {} 與 ; C 語言對其程式寫作格式中有許多嚴謹的規定 , 這

是為了避免編譯器在編譯時無法解讀程式的含意而發生編譯錯誤。

C 語言使用以下兩種符號來標示段落: 大括號 { } 分號 ;

Page 32: EL 1009  計算機概論  ( 電子一 B)

32

大括號 {} 的使用

{ } 中間的程式表示是一小段函式的結束 , 或是一小段的敘述結束 , 我們稱之為程式區塊 (block) 。

Block

Page 33: EL 1009  計算機概論  ( 電子一 B)

33

分號表示敘述的結尾

每一句完整的程式後要加上分號 , 表示該敘述結束:

Page 34: EL 1009  計算機概論  ( 電子一 B)

34

分號表示敘述的結尾 每個由分號結尾的一個程式片段 , 可稱為一段敘述 (Statement) 。

在 C 語言中 , 並未規定每個敘述都必須獨立成一行 , 也沒規定同一敘述都要放在同一行。

只有少數幾個敘述不必在結尾加上分號 (if 、 else 、 while 等流程控制敘述 ), 其它的敘述都一定要用分號做結尾

Page 35: EL 1009  計算機概論  ( 電子一 B)

35

養成良好的寫程式習慣

Page 36: EL 1009  計算機概論  ( 電子一 B)

36

適時的分行 要寫好程式 , 一定要養成良好的觀念。

不要將程式碼排的亂七八糟。 要工整 , 有一定的格式。

就如同寫一篇文章 , 如果沒有分段 , 沒有標點符號 , 閱讀者不知道哪裡該停頓 , 哪裡段落結束。

適時的分行 , 將使程式便於整篇的閱讀。

Page 37: EL 1009  計算機概論  ( 電子一 B)

37

適時的分行 以下哪種程式較容易閱讀 ?

int main (void)

{int x; int y; int z; x=10; y=5; z=20;…}

程式A

程式B

int main (void)

{

int x;

int y;

int z;

x = 10;

y = 5;

z = 20;

}

Page 38: EL 1009  計算機概論  ( 電子一 B)

38

適時的分行 當一行敘述太長時 , 只要是變數和運算符號 ( 簡

稱算符 ) 、逗號、括號之間 , 都可依需要斷行。 在換行處不需要加任何符號 , 只需在運算式結

束處加分號即可。

a = b + c + d + e + f + g + h + i + j + k + l + m;

a = b + c + d + e +

f + g + h + i +

j + k + l + m;

可在任一位置換行

Page 39: EL 1009  計算機概論  ( 電子一 B)

39

適時的分行 斷行時不可將原本完整的

變數名稱分斷。 函式名稱分斷。 關鍵字分斷。 這都將造成編譯器解讀錯誤。

Page 40: EL 1009  計算機概論  ( 電子一 B)

40

程式碼的內縮:表現出層次感

需善用內縮的技巧 ,

將使的程式有層次感 ,

段落明顯 , 章節分明 。

內縮

Page 41: EL 1009  計算機概論  ( 電子一 B)

41

善用註解 寫程式要注意多加註解。

幫助閱讀程式的人能清楚了解 每一行的功能 ; 每一段的功能 ; 進而了解到整個程式的功能以及流程。

Page 42: EL 1009  計算機概論  ( 電子一 B)

42

Dev-C++ 操作簡介

Page 43: EL 1009  計算機概論  ( 電子一 B)

43

執行第一個練習 : 開啟 Dev-C++

1. 開啟 Dev C++ 。

Page 44: EL 1009  計算機概論  ( 電子一 B)

44

執行第一個練習2. 選取 檔案 → 開新檔案 → 專案。

Page 45: EL 1009  計算機概論  ( 電子一 B)

45

執行第一個練習3. 選取 Console Application → C 專案 → 確定。

Page 46: EL 1009  計算機概論  ( 電子一 B)

46

執行第一個練習4. 選取 你的資料夾 → Q1 → 開啟。

Page 47: EL 1009  計算機概論  ( 電子一 B)

47

執行第一個練習5. 選取完資料夾 後按存檔。

Page 48: EL 1009  計算機概論  ( 電子一 B)

48

執行第一個練習6. 此時會跳出以下的畫面 , 即可開始撰寫程式。

Page 49: EL 1009  計算機概論  ( 電子一 B)

49

編譯並執行程式7. 選取 執行→ 編譯並執行 或按 F9 。

Page 50: EL 1009  計算機概論  ( 電子一 B)

50

編譯並執行程式8. 執行結果 , 可查看語法是否有錯誤。

Page 51: EL 1009  計算機概論  ( 電子一 B)

51

Microsoft Visual C++ 6.0 操作簡介

Page 52: EL 1009  計算機概論  ( 電子一 B)

52

執行第一個練習 : 開啟 Visual C++6.0

Page 53: EL 1009  計算機概論  ( 電子一 B)

53

執行第一個練習 開啟新的 Project, 選取 File → New 。

Page 54: EL 1009  計算機概論  ( 電子一 B)

54

執行第一個練習 選取Win32 Console Application 。

Page 55: EL 1009  計算機概論  ( 電子一 B)

55

執行第一個練習 輸入 Project 名稱後 , 點選 “ OK” 。

Page 56: EL 1009  計算機概論  ( 電子一 B)

56

執行第一個練習 勾選 “ An empty project” 後 , 點選 “ Finish” 。

Page 57: EL 1009  計算機概論  ( 電子一 B)

57

執行第一個練習 出現 New Project Information視窗後 , 點選

“ OK” 。

Page 58: EL 1009  計算機概論  ( 電子一 B)

58

執行第一個練習 完成建立新的 Project 。 必須在新的 Project 中加入新的程式檔。

Page 59: EL 1009  計算機概論  ( 電子一 B)

59

執行第一個練習 選取 File → New 。

Page 60: EL 1009  計算機概論  ( 電子一 B)

60

執行第一個練習 選取 C++ Source File 。

Page 61: EL 1009  計算機概論  ( 電子一 B)

61

執行第一個練習 輸入 File名稱後 , 點選 “ OK” 。

Page 62: EL 1009  計算機概論  ( 電子一 B)

62

執行第一個練習 在右邊空白處撰寫程式碼。

此處撰寫程式

Page 63: EL 1009  計算機概論  ( 電子一 B)

63

執行第一個練習 撰寫完成後 , 記得儲存檔案。然後選取 Build →

Compile hello.cpp 完成編譯的動作 ; 也可按 Ctrl+F7 。

儲存檔案

Page 64: EL 1009  計算機概論  ( 電子一 B)

64

執行第一個練習 如果程式語法沒有錯誤 , 在視窗下方會出現以下的訊息。

0 error(s), 0 warning(s)

Page 65: EL 1009  計算機概論  ( 電子一 B)

65

執行第一個練習 然後選取 Build → Build hello.exe 完成連結的動

作 ; 也可按 F7 。

Page 66: EL 1009  計算機概論  ( 電子一 B)

66

執行第一個練習 如果連結過程沒有錯誤 , 在視窗下方會出現以下的訊息。

0 error(s), 0 warning(s)

Page 67: EL 1009  計算機概論  ( 電子一 B)

67

執行第一個練習 最後選取 Build → Eexcute hello.exe 執行程式 ; 也可按 Ctrl + F5 。

Page 68: EL 1009  計算機概論  ( 電子一 B)

68

執行第一個練習 執行結果會出現在 DOS 視窗。

Page 69: EL 1009  計算機概論  ( 電子一 B)

69

課後練習請同學練習寫一個程式印出以下的文字 , 並為程式加上註解。This is my first program!!