• 沒有找到結果。

01程式設計概論.pdf

N/A
N/A
Protected

Academic year: 2021

Share "01程式設計概論.pdf"

Copied!
27
0
0

加載中.... (立即查看全文)

全文

(1)程式設計概論 王元俊 Wang Yuan-Jiun. islwangyj@gmail.com 1.

(2) 學習目標 • 什麼是程式設計 (Programming)? • 程式設計的流程 • 寫好的程式,要怎樣讓電腦執行? – 什麼是「編譯」?什麼是「直譯」? • 程式設計的方法 • 程式的架構 – 輸入、處理、輸出 • 我們的課程內容有些什麼? • 結構化程式設計簡介 • 物件導向程式設計簡介 2.

(3) 3.

(4) 4.

(5) 程式設計 (Programming) (1) • 程式是為完成某項工作,依照達成這個工作所 定義或設計的邏輯順序,編寫成的一連串指令 (instruction) 的集合。程式設計的目標即是設計 出能完成某項工作的程式。 • 高階語言的程式使用敘述 (statement) 為最小的 描述單位,也就是說高階語言的程式是利用敘 述,按照其語法規則及所要處理工作的順序, 編排而成的一連串指令。 • 程式設計的目的,是要電腦依照我們設定好的 敘述的步驟,逐步執行,以完成特定的工作。. 5.

(6) 程式設計 (Programming) (2) • 程式設計可以是指「為解決某個問題或完成某 項工作,依照所構思的解決方案,建立邏輯順 序(步驟)後產生規劃藍圖,再利用程式語言 依規劃藍圖撰寫程式,經過測試後能符合解決 問題或完成工作的目的所從事的行為」。. 6.

(7) 程式設計的流程 (1) 以設計程式解決問題,通常區分為以下幾個步驟: 1. 分析問題 (analysis):在設計程式以前,需要 先與客戶先確認程式要完成的工作是什麼, 也就是要解決的問題為何,有時簡稱為程式 的功能。此外還要確認輸入、輸出的格式。 依照要解決的問題,想好如何解決問題的方 法,以及如何使用適當的資料結構,才能夠 設計出有效率的程式。 演算法 程式設計 資料結構 7.

(8) 程式設計的流程 (2) 2. 繪製流程圖或撰寫程式虛擬碼:表達演算法 (algorithms) 最常用的兩個方法是  流程圖 (flow chart):以圖型化的演繹邏輯 來表達程式操作順序的方法。  虛擬碼 (pseudo code):類似於一種程式語 言。在虛擬碼中,自然語言和高階程式語 言並用,描述資料結構與演算法,兼具文 字描述及流程圖優點的表示方式,是系統 分析師和程式設計師之間的溝通工具。. 8.

(9) 程式設計的流程 (3) 3. 編寫程式 (coding):根據流程圖或虛擬碼,以 程式語言撰寫程式。程式經過編輯 (edit)、編 譯 (compile)、執行 (run)、除錯 (debug) 與測 試 (test) 等工作,獲得符合需求的可執行碼 (executable codes)。 編輯 編譯 執行 除錯. 測試 除錯. 完成. 除錯 9.

(10) 程式設計的流程 (4) 4. 程式安裝 (installation) 佈署 (deployment)、管 理 (management) 與維護 (maintenance):程式 完成後,將程式放在客戶的硬體上,進行安 裝、佈署、設定等工作,讓程式能夠完成符 合客戶需求的工作。正式上限執行後,仍必 須持續追蹤與維護,包含程式碼、文件說明 等。. 10.

(11) 編譯與直譯 (1) • 編譯:原始程式經由編譯程式 (complier) 轉譯 成目的程式,目的程式再與其他相關函式或目 的程式連結後組合成可執行的程式碼,載入後 執行。例如 COBOL、Pascal、C / C++ / C#、 Java 等。 • 直譯:原始程式經由直譯程式 (interpreter) 轉譯 後,不需要建立目的程式,原始程式一個敘述 接著一個敘述,轉譯並且執行。例如 BASIC、 腳本語言等。【說明:也有支援 BASIC 語言 的編譯程式,例如 Visual BASIC。】. 11.

(12) 編譯與直譯 (2) • 中間碼:原始程式經由編譯程式產生與特定機 器無關,但需要再經由直譯器轉譯才能執行的 中間代碼,例如在 Java 稱為位元組碼 (bytecode)。 – 這種中間碼的目的主要是為了實現程式執行 與軟、硬體環境無關,從而實作「一次編譯、 到處執行」的跨平台特性。然而,這樣的執 行方式,將會降低程式執行的效率。. 12.

(13) 程式設計的方法 1. 單一程序設計法:這是最直接的設計方法, 整個程式不分段落區塊,其中程式的架構只 有程式設計者自己知道。 2. 模組化程式設計法  程式按照「功能」分成若干個模組 (Module),必要時才加以串起來使用。  目的是為了節省程式大小,但是它並沒有 提供任何副程式切割的方法或準則。 3. 結構化程式設計 4. 物件導向程式設計 13.

(14) 結構化程式設計 (1) • 結構化程式設計 (Structured programming) 是一 種程式設計典範。它採用副程式、程式碼區塊、 for、while 迴圈等結構,取代傳統的 goto 敘述。 希望藉此改善電腦程式,達成程式碼的清晰性, 提昇品質以及減少開發時間,並且避免寫出麵 條式的程式。 • 結構化程式設計對於處理資料的方式採用「資 訊隱藏 (Information Hiding)」,它要求各個模 組間能盡量獨立,各個模組負責自己資料的讀 與寫。. 14.

(15) 結構化程式設計 (2) • 結構化設計方法的缺點:在實作階段完成前, 很難判斷設計的好壞,若有所調整時,將牽一 髮而動全身。此外隨著軟體規模加大,由上向 下分解的距離相當遠,往往會迷失其中,無法 全盤控制。. 15.

(16) 物件導向程式設計 • 前述方法的共同問題:問題領域與程式設計工 具的領域之間有一個鴻溝存在。 • 物件導向技術在實體世界與程式之間建立一個 直接而且一致的對應關係。 • 一個軟體系統由物件所組合而成,這些物件分 別扮演了問題領域中的一個角色。系統所需的 行為與功能,便是藉由這些物件間的互動來完 成。. 16.

(17) 輸入、處理、輸出 • 輸入 (Input) • 處理 (Process) • 輸出 (Output). IPO. 17.

(18) 命令列 (Command Line) 程式. 結構化程式設計. 基本語法. 視窗 (Window) 程式. 我們的 課程. 物件導向程式設計. 類別與函數. 18.

(19) 結構化程式設計簡介 (1) • 結構化程式設計的意義 1. 由上而下 (top-down) 的程式設計方法。 2. 依照功能分解:先將整個程式依照要完成的 工作分成數個功能,再將每個功能細分為多 個較小的次要功能,如此繼續細分,盡可能 讓每個功能是獨立的。 3. 設計模組 (module):為每個小功能設計模組, 讓一個模組只負責一個小功能。 4. 組合 (combination):再將次要功能利用小模 組組合出來,建立次要模組;繼續組合完成 整個工作。 19.

(20) 結構化程式設計簡介 (2) • 結構化程式設計的意義 5. 整個程式分解成若干個模組。 6. 每個模組完成一個獨立的功能,因此每個模 組具有較高的內聚力 (cohesion)。 7. 模組之間的關聯性應該盡量降低,因此模組 間具有較低的耦合力 (coupling)。. 20.

(21) 結構化程式設計簡介 (3) • 三種基本的流程控制結構 1. 循序 (Sequence):程式碼由上而下一個敘述 接著一個敘述的順序被執行。. 循序結構 21.

(22) 結構化程式設計簡介 (4) 2. 選擇 (Selection):程式執行時,依據條件, 也就是比較運算式的結果,決定程式碼是 否被執行。程式語法有 if、if … else、 switch case 等。 真. 條件. 假. 選擇結構 22.

(23) 結構化程式設計簡介 (5) 3. 重複 (Repetition):部分程式碼依據條件能 夠重複被執行多次。程式語法有 for、while、 do … while、for each 等。 條件. 假. 真. 重複結構 23.

(24) 物件導向程式設計簡介 (1) • 類別 (Class) – 類別是物件的抽象化,也就是建構物件的藍 圖。 – 建立物件前,先定義物件的各種性質與行為 (能力),然後再建立物件。物件在程式中 依照流程,執行完成設定的任務。 – 描述物件的性質就是屬性 (Attribute),這是物 件的資料。 – 描述物件的行為就是方法 (Method)。方法實 作時寫成副程式或者函數。. 24.

(25) 物件導向程式設計簡介 (2) • 物件 (Object) – 物件是類別所產生的案例 (Instance)。物件具 有根據類別定義的性質與能力。 • 事件 (Event) – 事件是觸發物件行為的動作。 – 在程式的實作中,使用者按滑鼠、網路連線 等都是事件,將會觸發預先寫好的方法,也 就是執行實作的副程式或函數。. 25.

(26) 物件導向程式設計簡介 (3) • 封裝 (Encapsulation) – 將屬性(資料)和方法(行為)包裝成一個 物件,稱為封裝。 • 繼承 (Inheritance) – 繼承定義了類別之間的關係,也就是讓此關 係中的其他類別獲得此類別的屬性與方法, 達成已經定義的類別能重覆使用的目的。. 26.

(27) 物件導向程式設計簡介 (4) • 多型 (Polymorphism) – 在不同物件(或類別)中,利用相同名稱的 操作,以不同方式處理資料。 – 多型還可分為:  動態多型 (Dynamic Polymorphism):透過類 別繼承和虛擬函式機制,在執行時期根據 其物件,決定呼叫的方法。程式設計以 方法覆寫 (Method Overriding) 實作。  靜態多型 (Static Polymorphism):用相同的 運算子(符號)或函式執行不同的功能, 在編譯時期就能知道呼叫的方式,又稱 多載 (Overloading)。 27.

(28)

參考文獻

相關文件

 MATLAB 程式使用 pass-by-value 的方 式,進行程式與函式間的溝通聯絡,當 程式呼叫函式時, MATLAB

Caption 出現的文字 Enabled 是否有致能 Value

考試科目(編號):日文閱讀與翻譯

Ctrl+N 建立一個新的 VI Ctrl+B 將程式方塊圖中所有壞線移除 Ctrl+R 執行目前的的 VI Ctrl+T 將人機介面與程式方塊圖左右並列 Ctrl+W 關閉目前的的 VI Ctrl+E

微算機原理與應用 第6

命令解釋程式 作業系統 (MS-DOS,UNIX, WINDOWS 98/NT, 2000, XP, LINUX).

z請利用 struct 記錄 Bob 和 Alice 的相關資訊 z列印出 Bob 及 Alice 分別花多少錢. z再列印出

private void closeBTN_Click(object sender, System.EventArgs