Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Programming

Similar presentations


Presentation on theme: "Introduction to Programming"— Presentation transcript:

1 Introduction to Programming

2 電腦與程式

3 電腦包含了實際提供計算功能的硬體與使用硬體計算功能的程式 我們平常使用電腦,是透過裡面的各式各樣不同的程式來達到不同的目的
程式又細分為系統程式與應用程式 系統程式:管理硬體資源,大多時候不是針對特定目的而撰寫 例:Windows、Mac、iOS、Linux 應用程式:針對某些特定目的而撰寫、大多時候運行在系統程式之上 例:Office、Angry Bird、Firefox

4 電腦所使用的語言是機械碼,程式是存在硬體上面的機械碼組合,將這些機械碼送到負責運算的硬體上後,負責運算的硬體會做出對應的反應,進而達到程式所要達到的目的
由於現今人們難以直接以機械碼的方式撰寫程式,故人們以比較接近人類自然語言的方式創造了程式語言,來便利程式設計師撰寫程式

5 因為程式設計師並不是直接撰寫機器看得懂的機械碼,而是用程式語言撰寫程式碼,故需要一套機制將程式碼將程式碼轉換成機械碼的過程,下面我們將介紹這套機制的轉換

6 程式碼與執行檔

7 程式碼是提供程式設計師撰寫程式時使用,但由於真正可以讓電腦硬體看得懂的是機械碼,而只有以機械碼撰寫的檔案才可以被電腦執行,故我們稱呼可以以機械碼組成而被電腦看得懂、可以被執行的檔案為「執行檔」
程式設計師撰寫的程式碼需要透過一連串的流程才能變成執行檔,而這套過程在不同程式語言當中會有些許不同,我們下面以C語言作為例子,看以C語言撰寫的程式碼如何變成可執行檔

8 從程式碼到執行檔的流程 text editor hello.c source code compiler & assembler
hello.obj object code libc.so library code linker startup code hello.exe executable code

9 程式設計師在撰寫程式的可選用任意的文字編輯器撰寫後,再使用Compiler將該檔案編譯成執行檔
在實際使用上,通常會把Assembler(組譯器)、Linker(連結器)包在Compiler(編譯器)當中,故對大家目前來說只需要記得需要透過Compiler把程式碼變成執行檔即可 程式設計師在撰寫程式的可選用任意的文字編輯器撰寫後,再使用Compiler將該檔案編譯成執行檔 例如可以用Sublime、vi/vim、UltraEditor撰寫好程式碼,存成***.c 再透過Compiler將其編譯成***.exe或***.out

10 也有另外一些程式設計師會使用整合性開發環境(Integrated Development Environment,簡稱IDE)來開發,IDE整合了文字編輯器與編譯器,有時也會包含一些除錯與版本控制等等的功能 關於如何使用文字編輯器+編譯器編譯出程式以及如何使用IDE來編譯程式,在助教課當中會提供更多細部的資訊

11 程式輸出介面

12 程式在輸出其結果時,主要可以透過兩個介面輸出
CLI(Commend Line Interface) GUI(Graphic User Interface) CLI是以輸出到終端機的純文字介面方式輸出,對同學來說可能比較陌生,但是由於此種輸出方式的控制上較為簡易,本堂課程主要是以此種方式來介紹 GUI多是以視窗方式呈現,目前大多數的應用上是使用此種輸出方式,但是操控上較為複雜,故在本堂課程當中基本上不涉及

13 程式語言簡介

14 前面談到程式設計師是用較接近人類語言的程式語言撰寫程式碼,撰寫完畢後,再將其轉換成電腦讀的懂得機械碼使其可被執行,在這個部分我們將會討論程式語言的特性,以及本堂課要討論的C語言為何
由於程式語言當初發明的目的是為了方便人類能夠將自己的邏輯撰寫成接近人類使用的語句,但在各個程式語言發明的過程當中,因為諸多的因素,有些程式語言比較接近機械碼,有些程式語言比較接近人類自然語言,我們依照接近人類語言的程度與否,將程式語言分類為高階語言與低階語言

15 程式語言的高低階並不代表該語言可以做到事情的多寡,只是代表與人類自然語言的距離而已
高階語言多會將許多功能包裝好讓你直接使用,但相對的調整彈性也會降低,也較難依照需求優化已經包好的功能。就像你買筆記型電腦時,廠商已經將零件組裝好,容易上手但較難客製化。 低階語言只會提供基本的功能,但程式設計師可以依照自己的需求組合出你所需要的。就像你自行組裝電腦時,可以依照自己的需求選配適合你自己的硬體設備規格,較能符合你自己的需求。

16 程式語言的高低階 語言 特性 應用 Ruby 提供極多API、Machine Independent、全物件、可快速開發、運行效能較慢
Web framework Java 有物件導向特性、提供更多API、原則上Machine Independent App on Android C 相較組合語言較接近人類語言、運行效能較快、較其他高階語言可更直接控制硬體 OS、http server 等追求效能之程式 組合語言 與機械碼可完全對應 Machine Dependent OS部分程式碼 Bootloader

17 在本堂課當中,我們要介紹C語言,基本上程式撰寫主要思維是邏輯,故只要熟悉一種程式語言之後再學習其他程式語言就相當容易上手
由於C語言較Ruby、Java等語言更接近硬體機械碼,故能有更多的硬體控制能力,因此學習C語言亦可學習到電腦硬體的行為 故學習C語言可學習到抽象程式邏輯的撰寫與底層硬體的行為與控制,對未來不管往上層與底層發展都有幫助

18 Ref: http://zh.wikipedia.org/wiki/C语言
C語言簡介 Ref:

19 發明目的 發明者 特色 為了用更高階的語言撰寫UNIX作業系統,降低跨平台移植的快難 Ken Thompson Dennis Ritchie
承先:能直接控制系統底層硬體資源,適合用於系統程式的撰寫上 啟後:能夠抽離CPU相依指令,絕大多數開發時只需要針對抽象邏輯來撰寫即可,與當今多數高階程式語言相仿

20 C語言各版本 K&R C 在1978年” The C Programming Language”被定義出來的C語言,其中的許多語法與當今習慣有相當的不同,但此標準仍為許多編譯器的基本標準,使用此語法仍能於許多當今編譯器中正確被編譯 C89 於1989年,被ANSI標準化後的C語言 後此標準又被ISO組織納為國際標準 亦稱為ANSI C或ISO C 絕大多數編譯器皆支援此標準

21 C語言各版本 C99 C11 於1999年大幅修訂C語言標準 強化Preprocessor、新增新關鍵字等中多功能
針對對齊處理標準化、多執行序(Thread)納為語言層級標準而不再為OS-dependent、增強檔案處理與字串處理等

22 除了上述討論的C語言各版本外,各個編譯器設計者皆會在自己的編譯器上實作部分特殊函式、關鍵字、語法,在本課程當中將不會特別提及
PS:在後面附錄的部份有提供開發C語言開發環境的使用教學,同學們可自行參考。

23 Appendix

24 Appendix A Windows 開發環境

25

26 Download

27

28

29

30 Setup

31 Next, Next, Next….

32 Open

33 GNU GCC Compiler -> OK

34 OK

35 Settings - Editor

36 Encoding: UTF-8

37 Font: Consolas Size: 12

38 Settings – Compiler and debugger

39 New file

40 Write and save

41 Build – Build and run (F9)

42 Run

43 Plugins – Source code formatter

44 其他注意事項 程式碼副檔名為c而非cpp hw1_1.c  hw1_1.cpp  閱讀編譯訊息( errors & warnings)

45 Appendix B 泛UNIX 開發環境

46 說明 以下將介紹如何在UNIX環境下開發程式 不強迫一定要在UNIX下開發 若你已經習慣在UNIX環境下開發,歡迎持續下去
Free BSD / Solaris Mac OS X Linux (Ubuntu, Fedora, OpenSUSE, …) 不強迫一定要在UNIX下開發 若你已經習慣在UNIX環境下開發,歡迎持續下去 Demo時不限定平台

47 What is UNIX UNIX是美國AT&T公司1971年在PDP-11上執行的當時最先進的作業系統。
C語言是當初為了寫UNIX而開發出來的語言

48 What is UNIX? UNIX有很多子孫 Free BSD SUN Solaris, Open Solaris
Mac OS X, iOS Linux

49

50 UNIX的好處 Developer-friendly Fantastic Command Line Interface 問題簡單化 很潮
很多工具都是內建的 Fantastic Command Line Interface 問題簡單化 很潮 Apple Mac OS X、iOS Android底層使用Linux

51 如何取得UNIX? 連線到工作站 安裝在桌機上 系上工作站(BSD, Solaris, Linux) 若有需要我們也可提供 Linux
Ubuntu( Fedora( Mac

52 方法1 連線到工作站上開發

53 Step 1 打開終端機

54 先下載連結工作站的程式 Putty Pietty
Pietty

55 直接打開Putty/Pietty

56 輸入工作站IP並連線

57 按「是」認證RSA Key

58 就可以用了!

59 方法2 在UNIX環境下直接開發

60 Step 1 打開終端機

61 For Mac User

62 For Mac User

63 For Mac User

64 For Mac user

65 For Fedora Linux User

66 For Fedora Linux User

67 For Fedora Linux User

68 For Fedora Linux User

69 For Fedora Linux User

70 For Fedora Linux User

71 Step 2 建立資料夾

72 指令: ls 目的:看看我這個資料夾下有什麼

73 指令: mkdir 目的:新增資料夾

74 指令: cd 某某 目的:換到某某資料夾

75 Step 3 開啟編輯器

76

77 Step 4 開始寫程式

78

79

80

81 Step 5 編譯程式

82

83 gcc –o 輸出檔案名稱 原始碼名稱

84

85 Step 6 執行程式

86

87 附錄 UNIX指令表 http://www.mgt.ncu.edu.tw/~dino/unix/cmd01.htm

88 附錄 VIM編輯器教學


Download ppt "Introduction to Programming"

Similar presentations


Ads by Google