1、2023/2/712023/2/72本章學習目標本章學習目標 1.1.讓讀者了解讓讀者了解、及及之間的關係,以及之間的關係,以及的的。2.2.讓讀者了解讓讀者了解與與的的差異差異。2023/2/73本章內容本章內容 1-1 1-1 認識資料與資訊的關係認識資料與資訊的關係1-2 1-2 何謂資料結構?何謂資料結構?1-3 1-3 何謂演算法何謂演算法?1-4 1-4 程式設計概念程式設計概念1-5 1-5 結構化程式設計結構化程式設計1-6 1-6 物件導向程式設計物件導向程式設計1-7 1-7 演算法的效率評估演算法的效率評估 2023/2/741-1 認識資料與資訊的關係認識資料與資訊的關
2、係1.資料資料(Data):是指:是指未經過處理未經過處理的的原始記錄原始記錄,例如學生考試的,例如學生考試的原始成績原始成績。2.資訊資訊(Information):就是:就是有經過處理有經過處理的的結果結果,例如全班同學,例如全班同學成績之排名成績之排名 及及分佈圖分佈圖。*資料處理資料處理(DP):是將:是將資料資料轉換成轉換成資訊資訊的一連串的處理過程。的一連串的處理過程。2023/2/751.資料資料(Data)(1)(1)是是客觀客觀存在的、存在的、具體的具體的、事實的事實的記錄。記錄。(2)(2)簡單來說,日常生活中所記錄的簡單來說,日常生活中所記錄的事實資料事實資料(姓名、生日
3、、電話及地址姓名、生日、電話及地址)或學生在期中考的或學生在期中考的各科原始成績各科原始成績,這些都是,這些都是未經過資料處理未經過資料處理的資料。的資料。如表如表1-11-1所示。所示。2023/2/762.資訊資訊(Information)(1)(1)經過經過資料處理之後資料處理之後的的結果結果即為即為資訊資訊。其資料與資訊的特性比較。其資料與資訊的特性比較。如表如表1-21-2所示。所示。2023/2/77(2)(2)處理程序處理程序(例如:成績處理系統例如:成績處理系統)會將會將原始資料原始資料以加整理、計算及分析以加整理、計算及分析 之後,變成之後,變成有用的資訊有用的資訊(含含總成
4、績、平均及排名次總成績、平均及排名次)。如表。如表1-3 1-3 所示。所示。2023/2/78(3)(3)是是決策者決策者在思考某一個問題時所在思考某一個問題時所需用到的資料,需用到的資料,它是它是主觀認定主觀認定的。例的。例 如:如:班導師班導師(決策者決策者)在學生考完期中考之後,想依學生在學生考完期中考之後,想依學生考試成績來獎考試成績來獎 勵勵,因此,班導師必須要有一份,因此,班導師必須要有一份全班排名的成績單全班排名的成績單(資訊資訊),以做為獎,以做為獎 勵的依據。勵的依據。2023/2/791-2 何謂資料結構?何謂資料結構?(Data Structures)主要是探討如何將資
5、料主要是探討如何將資料更有組織更有組織地存放地存放到到電腦記憶體電腦記憶體中,以中,以提昇提昇程式之程式之執行效率執行效率的一門學問。的一門學問。因此,有因此,有(Data structure)及)及(Algorithm)將可以大大的)將可以大大的提昇程式的執行效率提昇程式的執行效率。2023/2/710在電腦科學在電腦科學(Computer Science)的領域中,我們如何透過電腦來取得的領域中,我們如何透過電腦來取得即時即時的的、有用的資訊有用的資訊,那就必須先要撰寫,那就必須先要撰寫有效率有效率及及正確正確的的去運作,而去運作,而就是由就是由和和所構成的。所構成的。其公式如下:其公式如
6、下:其中:其中:是指:是指資料在記憶體中的儲存方式資料在記憶體中的儲存方式,:則是則是如何將資料作有效率的處理過程如何將資料作有效率的處理過程。因此,當我們在撰寫程式時,只有因此,當我們在撰寫程式時,只有,才能夠設計,才能夠設計出出,進而轉換成為,進而轉換成為。2023/2/711 基本上,資料結構包含有基本上,資料結構包含有遞迴遞迴(Recursive)、陣列陣列(Array)、堆疊堆疊(Stack)、佇列佇列(Queue)、串列串列(List)、樹狀樹狀(Tree)、圖形圖形(Graph)、排序排序(Sort)及及搜尋搜尋(Search)等單元,雖然這幾種資料結構單元乍看之下,好像非常理等
7、單元,雖然這幾種資料結構單元乍看之下,好像非常理論與抽象,但是在我們日常生活中,卻經常可以看到論與抽象,但是在我們日常生活中,卻經常可以看到。2023/2/712【舉例舉例】遞迴遞迴(Recursive):老鼠走迷宮的問題老鼠走迷宮的問題就是屬於遞迴結構。就是屬於遞迴結構。陣列陣列(Array):教室座位排列方式教室座位排列方式就是屬於陣列結構。就是屬於陣列結構。堆疊堆疊(Stack):碗盤的疊法碗盤的疊法、小朋友排積木小朋友排積木、書本裝箱書本裝箱或或座電梯座電梯等都等都 具有具有後進先出後進先出的特性就是屬於堆疊結構。的特性就是屬於堆疊結構。佇列佇列(Queue):排隊買票看球賽排隊買票看
8、球賽,先到先買先到先買的方式就是所謂的的方式就是所謂的 佇列結構佇列結構2023/2/713【舉例舉例】串列串列(List):高鐵火車的:高鐵火車的車箱串接方式車箱串接方式就是屬於串列結構。就是屬於串列結構。樹狀樹狀(Tree):如果球賽的:如果球賽的賽程方式是採用淘汰制賽程方式是採用淘汰制,就是一種樹狀結構。,就是一種樹狀結構。圖形圖形(Graph):當看完球賽要回家的:當看完球賽要回家的行駛路線圖行駛路線圖,則可視為所謂的圖形,則可視為所謂的圖形 結構。結構。排序排序(Sort):球賽:球賽成績的結果之排名方式成績的結果之排名方式就是屬於排序結構。就是屬於排序結構。搜尋搜尋(Search)
9、:球賽比賽之前:球賽比賽之前找尋某一隊的賽程找尋某一隊的賽程就是屬於搜尋結構。就是屬於搜尋結構。2023/2/714【老師上課動態展示老師上課動態展示】檔案在附書光碟中。檔案在附書光碟中。2023/2/715【實例實例】撰寫一個程式來計算撰寫一個程式來計算5 5位同學的資料結構平均成績,並且比較位同學的資料結構平均成績,並且比較沒沒有有使用使用資料結構資料結構與與演算法演算法的差異。的差異。2023/2/716第一種方法沒有使用資料結構與演算法,而是使用一般變數的宣告方式第一種方法沒有使用資料結構與演算法,而是使用一般變數的宣告方式來個別存放成績資料。雖然也可以順利的計算出所需要的結果,但是,
10、來個別存放成績資料。雖然也可以順利的計算出所需要的結果,但是,因為,當我們要計算的,因為,當我們要計算的,程式將會,程式將會。例如:全班學生人數為例如:全班學生人數為50人時,則行號人時,則行號04的程式碼就會變數非常的長,的程式碼就會變數非常的長,2023/2/717第二種方法是使用第二種方法是使用來存放來存放5位同學的成績資料,然後位同學的成績資料,然後再使用再使用來計算來計算5位同學的成績,最後再列印出結果。位同學的成績,最後再列印出結果。比較分析:比較分析:第二種方法的程式第二種方法的程式,也就是說,當我們要計算的學生,也就是說,當我們要計算的學生時,只要時,只要及及即可。即可。202
11、3/2/7181-3 何謂演算法何謂演算法?演算法在演算法在中定義為:中定義為:。我們可以把。我們可以把定義成:定義成:。它可以是利用它可以是利用、或、或或或的方式,來表示解決問題的的方式,來表示解決問題的 步驟。步驟。2023/2/719一、撰寫演算法應遵守五點原則:一、撰寫演算法應遵守五點原則:不一定不一定要有輸入。要有輸入。可能沒有可能沒有,也可能是,也可能是多個資料輸入多個資料輸入。例如例如(1):取得系統目前的時間,不須要輸入取得系統目前的時間,不須要輸入,只要寫一行,只要寫一行now()函數,函數,就可以輸出系統時間。就可以輸出系統時間。例如例如(2):求某數為奇偶數時求某數為奇偶
12、數時,則必須,則必須先要有一個整數輸入先要有一個整數輸入,才能進行,才能進行 判斷。判斷。2023/2/720一、撰寫演算法應遵守五點原則:一、撰寫演算法應遵守五點原則:(續續):至少一個輸出至少一個輸出。例如:在電腦中,處理資料的基本過程有三個步驟:例如:在電腦中,處理資料的基本過程有三個步驟:輸入輸入 處理處理 輸出輸出 (原始資料原始資料)(程式程式)(有用的資訊有用的資訊)所以,使用電腦來為我們處理資料時,有可能是系統自動接收到一個訊號,所以,使用電腦來為我們處理資料時,有可能是系統自動接收到一個訊號,來當作輸入資料,但是來當作輸入資料,但是系統至少會輸出一項系統至少會輸出一項讓使用者
13、參考的讓使用者參考的有用資訊有用資訊。2023/2/721一、撰寫演算法應遵守五點原則:一、撰寫演算法應遵守五點原則:(續續):每一行每一行指令指令都都必須明確,不可模稜兩可。必須明確,不可模稜兩可。例如:判斷某一數值是否為偶數。例如:判斷某一數值是否為偶數。首先我們試著用下列文字來加以描述:首先我們試著用下列文字來加以描述:(1)(1)輸入一個正整數。輸入一個正整數。(2)(2)作餘除運算是否為作餘除運算是否為0 0。(3)(3)為為0 0即為偶數。即為偶數。以上描述看來似乎正確,但是從演算法觀點來看,其中的第以上描述看來似乎正確,但是從演算法觀點來看,其中的第(2)(2)點並點並不符合明確
14、性,因它並未說明不符合明確性,因它並未說明餘除運算餘除運算是如何運算,容易造是如何運算,容易造成混淆與不解。我們應該改寫為:成混淆與不解。我們應該改寫為:(1)(1)輸入一個正整數輸入一個正整數N N。(2)(2)如果如果N N 除以除以2 2,其餘數為,其餘數為0 0。(3)(3)則其則其N N為偶數。為偶數。不具明確性具明確性2023/2/722一、撰寫演算法應遵守五點原則:一、撰寫演算法應遵守五點原則:(續續)例如:例如:用功的學生用功的學生才能領獎學金就才能領獎學金就不具有明確性不具有明確性,因為每一個人對用功,因為每一個人對用功的定義可能不盡相同,而如果改為的定義可能不盡相同,而如果
15、改為成績成績9090以上以上的學生才能領的學生才能領獎學金就是獎學金就是具有明確性具有明確性,因為,因為9090分分是一個是一個比較客觀的定義比較客觀的定義。2023/2/723一、撰寫演算法應遵守五點原則:一、撰寫演算法應遵守五點原則:(續續):演算法:演算法不能有無窮迴路不能有無窮迴路,必須能終止執行必須能終止執行。由於由於演算法並非是真正可以執行的程式演算法並非是真正可以執行的程式,而是設計者所推演出解決問題,而是設計者所推演出解決問題的步驟,因此,必須在的步驟,因此,必須在有限的步驟有限的步驟內要完成內要完成解決問題的程序解決問題的程序。但是,真。但是,真正的程式是可以有無窮迴路的動作
16、。正的程式是可以有無窮迴路的動作。例如:例如:Windows Windows 作業系統除非系統關機或當機,否則它會永遠執行一個作業系統除非系統關機或當機,否則它會永遠執行一個等待迴圈,來等待使用者從鍵盤輸入或其他的輸入設備。等待迴圈,來等待使用者從鍵盤輸入或其他的輸入設備。2023/2/724一、撰寫演算法應遵守五點原則:一、撰寫演算法應遵守五點原則:(續續):既然既然演算法演算法是是解決問題的方法解決問題的方法,因此,因此,正確性是正確性是最基本的要求最基本的要求。例如:以下判斷某數為奇偶數的演算法,雖然符合明確性,但是例如:以下判斷某數為奇偶數的演算法,雖然符合明確性,但是 不正確不正確,
17、因為,因為N 除以除以2,其餘數為,其餘數為0,則,則N應該為偶數,應該為偶數,而非奇數。而非奇數。輸入一個正整數輸入一個正整數N。如果如果N 除以除以2,其餘數為,其餘數為0。則其則其N為為奇數奇數。應該改為應該改為偶數偶數 2023/2/725【日常生活中的例子日常生活中的例子】一組可用來解決特定問題的有限指令或步驟,依循這些指令或步驟,可以進一組可用來解決特定問題的有限指令或步驟,依循這些指令或步驟,可以進行解題。行解題。食譜食譜 -做蛋糕做蛋糕圖片來源:163.23.171.96/cornliu/cornppt/第六章.ppt 2023/2/726好吃的蛋糕怎麼來好吃的蛋糕怎麼來?圖片
18、來源:163.23.171.96/cornliu/cornppt/第六章.ppt 2023/2/727二、描述演算法有三種方法:二、描述演算法有三種方法:(一一)文字敘述文字敘述演算法可用文字加以描述,但是採用口語化的文字敘述來加以描述,其演算法可用文字加以描述,但是採用口語化的文字敘述來加以描述,其缺缺點點在於在於冗長且較不精確冗長且較不精確,在撰寫、閱讀、會意時,在撰寫、閱讀、會意時可能會有誤差可能會有誤差,因此,因此一般一般較不常用。較不常用。例如:請利用文字敘述使用者登入帳號與密碼時,系統檢查的過程。例如:請利用文字敘述使用者登入帳號與密碼時,系統檢查的過程。步驟一:輸入使用者帳號與密
19、碼步驟一:輸入使用者帳號與密碼步驟二:判斷帳號與密碼是否正確步驟二:判斷帳號與密碼是否正確步驟三:如果正確時,則可以登入系統步驟三:如果正確時,則可以登入系統 否則,就無法登入!否則,就無法登入!2023/2/728(二二)流程圖(流程圖(FlowchartFlowchart)是指利用是指利用來表達欲來表達欲。當我們想利。當我們想利用電腦程式語言來處理問題時,先要了解問題並想出許多方案來解決用電腦程式語言來處理問題時,先要了解問題並想出許多方案來解決問題,並且分析那些資料是要問題,並且分析那些資料是要,經過,經過之後,要之後,要那些結果。那些結果。2023/2/7292023/2/730202
20、3/2/731【舉例舉例】請繪出使用者登入帳號與密碼時,系統檢查的流程圖。請繪出使用者登入帳號與密碼時,系統檢查的流程圖。2023/2/732(三三)虛擬碼(虛擬碼(Pseudo Code)虛擬碼虛擬碼兼具兼具文字描述文字描述及及流程圖流程圖的優點,其方式是用文字摻雜程式語的優點,其方式是用文字摻雜程式語言,來描述解題步驟與方法。言,來描述解題步驟與方法。例如例如1:請利用:請利用虛擬碼(虛擬碼(Pseudo Code)敘述使用者登入帳號與密敘述使用者登入帳號與密碼時,系統檢查的過程。碼時,系統檢查的過程。(1)Input:UserName,Password(2)IF(UserName And
21、 Password)ALL True Output:You Can Pass!else Output:You Can not Pass!2023/2/733例如:例如:1+2+3+10虛擬碼可以描述如下:虛擬碼可以描述如下:(1)設設Count=1,Total=0;(2)Total=Total+Count;(3)Count=Count+1;(4)若若Count 10 則至步驟則至步驟(5),否則回步驟,否則回步驟(2)(5)印出印出Total2023/2/7341-4 程式設計概念程式設計概念我們要開始程式設計時,一定要進行下面五個步驟:我們要開始程式設計時,一定要進行下面五個步驟:2023/
22、2/7352023/2/7362023/2/737實例實例計算國文與英文的平均成績,並依照平均成績來求顯示及格與不及計算國文與英文的平均成績,並依照平均成績來求顯示及格與不及格。格。1.1.分析及定義問題。分析及定義問題。兩個等級分別如下:兩個等級分別如下:(1)(1)及格:及格:60(60(含含)以上。以上。(2)(2)不及格:不及格:6060以下。以下。2.2.畫出整合問題的流程圖或撰寫問題的演算法。畫出整合問題的流程圖或撰寫問題的演算法。2023/2/7383.3.撰寫及建立程式模組。撰寫及建立程式模組。2023/2/7394.4.對每一個程式模組進行測試及除錯,直到沒有錯誤為止。對每一
23、個程式模組進行測試及除錯,直到沒有錯誤為止。當使用者輸入國文為當使用者輸入國文為60分,英文為分,英文為61分時,是否可以計算出平均成分時,是否可以計算出平均成績為績為60.5,如果沒有則必須要進行除錯,亦即要將,如果沒有則必須要進行除錯,亦即要將Average的資料型態的資料型態改為改為Single(單精準度單精準度)2023/2/740【重要觀念重要觀念】系統發展的生命週期與程式設計之步驟比較系統發展的生命週期與程式設計之步驟比較 2023/2/7411-4.1 演算法與程式的差異?演算法與程式的差異?1.1.是以是以為主,亦即任何人都可以閱讀的程式碼,為主,亦即任何人都可以閱讀的程式碼,
24、因此,必須特別強調因此,必須特別強調。2.2.則是以則是以為主,它強調程式的執行結果為主,它強調程式的執行結果、可、可及及。2023/2/7421-4.2為什麼要撰寫程式為什麼要撰寫程式?我們為什麼要花那麼多時間來撰寫程式呢?其主要的目的:它可以我們為什麼要花那麼多時間來撰寫程式呢?其主要的目的:它可以快快速解決複雜的問題速解決複雜的問題。甲同學說:請電腦幫我計算甲同學說:請電腦幫我計算1 1加到加到1010的總合。的總合。或許你會認為這簡單的問題,你我都會算,何必寫程式呢?或許你會認為這簡單的問題,你我都會算,何必寫程式呢?但是,如果甲同學又說:請電腦幫我計算但是,如果甲同學又說:請電腦幫我
25、計算1 1加到加到5000050000時,我想我們就時,我想我們就無法馬上計算出結果。由上面的例子,無法馬上計算出結果。由上面的例子,我們可以非常清楚的知道,程式我們可以非常清楚的知道,程式語言幫忙人類解決複雜的問題語言幫忙人類解決複雜的問題。2023/2/7431-5 結構化程式設計結構化程式設計何謂何謂結構化程式設計結構化程式設計呢?它是利用呢?它是利用由上而下由上而下的技巧,將程式的技巧,將程式分解分解成多個具有成多個具有獨立功能獨立功能的的模組模組。如圖。如圖1-51-5所示。所示。圖圖1-5 1-5 結構化程式設計的示意圖結構化程式設計的示意圖2023/2/744結構化程式設計由結構
26、化程式設計由Dijkstra(1969)提出:提出:1.消除程式因消除程式因goto而造成如麵條式的而造成如麵條式的混亂狀態混亂狀態。2.強調任何程式邏輯均可由強調任何程式邏輯均可由三種結構三種結構組成。如圖組成。如圖1-6所示。所示。(1)循序循序(Sequence):簡單命令式的指令簡單命令式的指令如如 COMPUTE,READ,WRITE 與代數指令與代數指令如如X=Y+Z。(2)選擇選擇(Condition):需:需做決策做決策時,用時,用 IF-THEN-ELSE 指令指令與與 CASE 指令指令。(3)重複重複(Repetition):當:當需反覆需反覆時,用時,用 DO-WHIL
27、E 與與 DO-UNTIL 指令指令。2023/2/7452023/2/7461-5.1 循序結構循序結構所謂所謂循序結構循序結構,是指程式,是指程式由上而下,依序逐一執行由上而下,依序逐一執行。亦即。亦即程式碼被程式碼被執行的順序為由上而下,一個敘述接著一個敘述依序執行執行的順序為由上而下,一個敘述接著一個敘述依序執行。此種結。此種結構是最基本的結構。如圖構是最基本的結構。如圖1-71-7所示:所示:2023/2/7471-5.2 選擇結構選擇結構如果只希望在如果只希望在某種條件成立某種條件成立時時才執行才執行某些敘述,而某種條件某些敘述,而某種條件不成立不成立才才執行另一種敘述執行另一種敘
28、述,來,來過濾一些條件過濾一些條件。那我們就必須使用選擇結構。那我們就必須使用選擇結構的方式了。如圖的方式了。如圖1-81-8所示。所示。2023/2/748此種結構是此種結構是最常被使用最常被使用的方式,因為大部份的的方式,因為大部份的選擇結構選擇結構的情況的情況可能是兩種可能是兩種。例如:判斷例如:判斷及格及格與與不及格不及格、判斷、判斷奇數奇數與與偶數偶數、判斷、判斷男生男生與與女生女生 等情況,都可以利用此種結構來完成。等情況,都可以利用此種結構來完成。2023/2/7491.語法:語法:其中其中(條件式條件式)是一是一關係運算式關係運算式 或或 邏輯運算式邏輯運算式2.說明:如果說明
29、:如果條件式成立條件式成立(真真),就,就執行執行 Then後面後面的的敘述區塊敘述區塊1 ,否則就執行敘述區塊,否則就執行敘述區塊2。3.使用時機:當條件只有使用時機:當條件只有二種情況二種情況時最佳方法。時最佳方法。2023/2/7505.5.流程圖:如圖流程圖:如圖1-91-9所示:所示:2023/2/7511-5.3 重複結構重複結構 在處理在處理一再重複的相同動作一再重複的相同動作,這對,這對電腦而言電腦而言,是一件,是一件非常非常Easy的的事事,但對我們,但對我們人類人類而言卻是一而言卻是一件苦差事件苦差事,因此驅使電腦做這樣的事情,因此驅使電腦做這樣的事情的方式,就是迴圈的方式
30、,就是迴圈(Loop),亦即,亦即讓某一段程式反覆執行多次的敘述讓某一段程式反覆執行多次的敘述,我們稱此結構為我們稱此結構為迴圈結構迴圈結構。2023/2/752如果我們想要撰寫一段程式,來輸出如果我們想要撰寫一段程式,來輸出1,2,100時,怎麼辦?目前最少時,怎麼辦?目前最少有兩種方法可以使用。如圖有兩種方法可以使用。如圖1-10所示:所示:2023/2/7531-6 物件導向程式設計物件導向程式設計(選讀選讀)物件導向設計物件導向設計是以是以物件物件為主,首先為主,首先規劃整個系統規劃整個系統需要需要那些物那些物件件,再,再分析分析這些這些物件有什麼特性物件有什麼特性(屬性屬性)、如何、
31、如何操作操作(方法方法),以及,以及物件物件與與物件物件之間的之間的關連性關連性,然後開始撰寫各個,然後開始撰寫各個物件模組物件模組,最後再依照,最後再依照系統的系統的需求需求,將各個,將各個封裝封裝良好的物件模組良好的物件模組由下向上由下向上架構出整個系統。架構出整個系統。2023/2/754每一個物件模組就是一個定義好的類別,其內容包括一些私有的資料項每一個物件模組就是一個定義好的類別,其內容包括一些私有的資料項目和功能目和功能(即屬性即屬性),以及供外界來操作的一些方法。如圖,以及供外界來操作的一些方法。如圖1-11所示。所示。2023/2/7551-6.1 物件導向的基本觀念物件導向的
32、基本觀念 物件導向可以說是現代最新的一種思考方式,而每一個物件都物件導向可以說是現代最新的一種思考方式,而每一個物件都具有其特有的具有其特有的屬性屬性(Attribute)(Attribute)及及行為行為(Behavior)(Behavior)及及方法方法(Method)(Method),並,並且可以是一個抽象物、觀念、概念、或是一個有明確界定範圍的事物。且可以是一個抽象物、觀念、概念、或是一個有明確界定範圍的事物。2023/2/756一、何謂物件一、何謂物件(Object)何謂物件?何謂物件?簡單的說,簡單的說,物件就是東西物件就是東西。日常生活中,日常生活中,看得到看得到、摸摸得到得到、
33、感覺得到感覺得到的都是的都是物件物件。任何東西任何東西都可以當作都可以當作物件物件,像,像人人也可以當也可以當作一個物件,作一個物件,每個人每個人(物件物件)都有它的都有它的特性特性(屬性屬性),包括:,包括:身高、體重、身高、體重、性別、年齡性別、年齡等描述。因此,我們就可以等描述。因此,我們就可以區別出區別出人與人之間的人與人之間的不同之處不同之處。然而小物件還可以再組成一個大物件,例如:車子是一個大物件,它是然而小物件還可以再組成一個大物件,例如:車子是一個大物件,它是由四個輪子、四個車門、方向盤由四個輪子、四個車門、方向盤等其他小物件所組成的。等其他小物件所組成的。2023/2/757
34、若以電腦世界來說,若以電腦世界來說,VBVB設計模式中的設計模式中的工具箱工具箱之之所有元件所有元件,其實都,其實都可以當作可以當作物件物件,而這,而這物件物件就是撰寫程式時的重要就是撰寫程式時的重要零件零件,我們,我們可以把它當成是在可以把它當成是在堆積木堆積木一般的一般的排列組合排列組合,進一步的設計屬於自己的,進一步的設計屬於自己的程式。我們可以將下圖中的程式。我們可以將下圖中的小算盤小算盤應用程式視為一個應用程式視為一個大物件大物件,它是由,它是由數個按鈕數個按鈕、一個、一個文字方塊文字方塊及及功能表功能表的的小物件小物件所組成的。所組成的。2023/2/7582023/2/75920
35、23/2/760二、何謂屬性二、何謂屬性(Property)屬性屬性可以說是可以說是物件的性質物件的性質,是用來,是用來區分不同的物件區分不同的物件。例如每一。例如每一個人都具有髮色、身高、體重、性別個人都具有髮色、身高、體重、性別等等不同不同的屬性的屬性。而。而屬性的內容屬性的內容稱為稱為屬性值屬性值,如人的性別屬性之屬性,如人的性別屬性之屬性值有男與女兩種情況,因此我們就可以區分出不同性別的人,如值有男與女兩種情況,因此我們就可以區分出不同性別的人,如圖圖1-131-13所示:所示:2023/2/761 每一個每一個人人(物件物件)都有他們的姓名、身高、性別及外貌等等,這都有他們的姓名、身
36、高、性別及外貌等等,這些都是他們的些都是他們的屬性屬性。每一個人。每一個人一定會有這樣屬性一定會有這樣屬性,但是每一個人可能,但是每一個人可能都有都有不同的屬性值不同的屬性值,也就是說小明與小華的姓名、身高、體重、性別,也就是說小明與小華的姓名、身高、體重、性別及外貌有可能皆不相同,就是因為如此,我們才能及外貌有可能皆不相同,就是因為如此,我們才能分辨出小明與小華分辨出小明與小華的不同點的不同點。2023/2/7622023/2/763因此,我們在撰寫物件導向的程式時,我們可以藉由改變屬性的屬性值,因此,我們在撰寫物件導向的程式時,我們可以藉由改變屬性的屬性值,即可改變物件的外觀。而改變屬性的
37、方法有二種:即可改變物件的外觀。而改變屬性的方法有二種:第一種:靜態設定第一種:靜態設定(在在屬性視窗的對話方塊中設定屬性視窗的對話方塊中設定)。如圖。如圖1-151-15所示:所示:在設計階段時,在該物件的屬性視窗直接設定之,馬上顯示效果。在設計階段時,在該物件的屬性視窗直接設定之,馬上顯示效果。2023/2/764第二種:第二種:動態設定動態設定(在在程式碼視窗的程序中撰寫程式碼視窗的程序中撰寫)。如圖。如圖1-161-16所示:所示:物件名稱和屬性名稱中間使用點號加以區隔。物件名稱和屬性名稱中間使用點號加以區隔。2023/2/765二、何謂事件二、何謂事件(Event)所謂所謂事件事件?
38、可說是?可說是一種被動性的動作一種被動性的動作或或某一情境下所產生的行為某一情境下所產生的行為。例。例如:當小孩被父母打時,他的反應動作是手痛得跳起來,並如:當小孩被父母打時,他的反應動作是手痛得跳起來,並發出尖叫的聲音,連下來可能開始哭。綜合上述,小孩被父發出尖叫的聲音,連下來可能開始哭。綜合上述,小孩被父母母打打是一種是一種事件事件,當這個事件被啟動之後,小孩便產生了,當這個事件被啟動之後,小孩便產生了一一連串的動作連串的動作:手痛得跳起來、尖叫、開始哭:手痛得跳起來、尖叫、開始哭等動作,等動作,稱為稱為事件程序事件程序,通常物件會具備設許多個事件,我們只要在,通常物件會具備設許多個事件,
39、我們只要在必要的事件中,指定其動作即可。必要的事件中,指定其動作即可。事件事件是一種加在物件上的是一種加在物件上的作用作用,而,而事件程序事件程序則是則是物件對此作用所物件對此作用所產生的反應產生的反應。事件程序的表達方式。事件程序的表達方式。2023/2/7662023/2/767四、何謂方法四、何謂方法(Method)所謂所謂方法方法,是指為了,是指為了在物件完成某件事在物件完成某件事或或達成某項目標達成某項目標,所採取,所採取的處理方式。物件原來內含的函數或程序就叫做方法。物件的的處理方式。物件原來內含的函數或程序就叫做方法。物件的屬性屬性或事件程序或事件程序都都可以重新設定或修改可以重
40、新設定或修改,但是,但是方法方法的的內容是固定、內容是固定、不能修改的不能修改的。在。在VBVB中,物件與方法的表達方式為:中,物件與方法的表達方式為:2023/2/768例如,在表單物件中提供了清除、列印、畫點、畫線、例如,在表單物件中提供了清除、列印、畫點、畫線、等功能,這等功能,這些功能通稱為方法。些功能通稱為方法。譬如,我們想要將表單中的譬如,我們想要將表單中的TextBox文字框文字框內容清除,只要撰寫內容清除,只要撰寫TextBox1.Clear()即可。即可。2023/2/7691-6.2 物件導向程式設計的特性物件導向程式設計的特性 物件導向程式設計物件導向程式設計的的最主要精
41、神最主要精神就是就是物件物件,但是,但是支援物件的程式支援物件的程式語言並不一定語言並不一定是是物件導向程式語言物件導向程式語言(例如例如VB6.0)VB6.0),它只是一種以物件,它只是一種以物件為基礎的程式語言(為基礎的程式語言(Object-based LanguagesObject-based Languages),亦即提供物件觀念。),亦即提供物件觀念。而而VB.NETVB.NET、Visual Basic 2005Visual Basic 2005、C#C#、C+C+及及JavaJava才是真正的才是真正的物件導向物件導向程式語言程式語言。物件導向主要是由物件導向主要是由四個基礎概
42、念所構成四個基礎概念所構成,分別為,分別為封裝性封裝性(Encapsulation)(Encapsulation)、抽象化抽象化(Abstraction)(Abstraction)、繼承性繼承性(Inheritance)(Inheritance)及及多型多型(Polymorphism)(Polymorphism)這四個觀念。這四個觀念。2023/2/770一、封裝性一、封裝性(Encapsulation)(Encapsulation)封裝性封裝性就是將物件的就是將物件的屬性與操作或方法屬性與操作或方法一起一起封裝到類別封裝到類別中。中。這是一種這是一種資訊隱藏(資訊隱藏(information
43、 hiding)的概念。因此,可以提供的概念。因此,可以提供安全安全性性,因為物件的狀態,因為物件的狀態無法被外界直接控制無法被外界直接控制;另一方面,介面可以;另一方面,介面可以簡化簡化對於對於物件狀態的了解,因為物件狀態的了解,因為外界不必了解物件狀態的細節外界不必了解物件狀態的細節。如圖。如圖1-18所示所示。2023/2/771例如以例如以電視機電視機來說明封裝性的概念:如圖來說明封裝性的概念:如圖1-19所示。所示。在日常生活中的在日常生活中的“電視機電視機”提供給使用者的是提供給使用者的是螢幕螢幕和和一組功能按鈕一組功能按鈕,使用,使用者透過對這組者透過對這組功能按鈕功能按鈕的操作
44、和的操作和螢幕螢幕來觀賞電視節目,而使用者來觀賞電視節目,而使用者不必知道電視機是如何實作不必知道電視機是如何實作這些功能的。因為電視機把這些功能的。因為電視機把選擇頻道選擇頻道、控制音控制音量量、調整色彩調整色彩、對比度對比度和和亮度亮度等功能的實作都等功能的實作都起來了,以避免使起來了,以避免使用者任意破壞。用者任意破壞。2023/2/772二、繼承性二、繼承性(Inheritance)繼承性繼承性就是物件可以就是物件可以繼承其他物件繼承其他物件的的屬性及操作屬性及操作。例如。例如兒兒子繼承爸爸或媽媽子繼承爸爸或媽媽的特色的特色(屬性或方法屬性或方法),且兒子會再擁有自己新的特色。,且兒子
45、會再擁有自己新的特色。繼承性的目的是繼承性的目的是增加再用性增加再用性,避免了屬性及,避免了屬性及操作的重複操作的重複。被繼承被繼承的類別的類別可稱為可稱為父類別父類別(parent class)、超類別、超類別(supperclass)或基底類或基底類別別(base class),而,而 繼承的類別繼承的類別可稱為可稱為子類別子類別(child class)、次類別、次類別(subclass)或衍生類別或衍生類別(derived class)。2023/2/773例如:當我們將各物件抽象化為例如:當我們將各物件抽象化為交通工具交通工具類別後,我們可以再依類別後,我們可以再依 據物件導向的繼承
46、性之特性,將據物件導向的繼承性之特性,將交通工具交通工具再細分為陸上再細分為陸上交交 通工具、水上交通工具、空中交通工具通工具、水上交通工具、空中交通工具等三個類別。如圖等三個類別。如圖1-20 所示。所示。2023/2/774三、三、抽象化抽象化(Abstraction)在真實世界中,我們可以把在真實世界中,我們可以把汽車當作是一個物件汽車當作是一個物件,也可以把,也可以把貨車、吉普車貨車、吉普車等當作是一個物件等當作是一個物件,若我們,若我們沒有從抽象化的觀點沒有從抽象化的觀點來看待這些物件時,則會來看待這些物件時,則會發現這個發現這個世界將會充滿無數的類似物件世界將會充滿無數的類似物件,
47、使我們會不知如何去了解它們。,使我們會不知如何去了解它們。但若透過但若透過,則我們可以將這些物件抽,則我們可以將這些物件抽象化為交通工具這個類別。如圖象化為交通工具這個類別。如圖1-21所示。所示。2023/2/775四、多型性四、多型性(Polymorphism)多型的概念常以一句話來解釋:多型的概念常以一句話來解釋:一個介面,多個方法一個介面,多個方法。這代表有。這代表有可能可以設計一個通用的介面給一組相關動作。亦即可能可以設計一個通用的介面給一組相關動作。亦即同一個名稱同一個名稱的操的操作作,在不同的類別當中表示在不同的類別當中表示不同的行為不同的行為。例如,。例如,父類別父類別(Sup
48、er Class)中中有一個名叫做有一個名叫做 show()的方法,用來顯示學生的的方法,用來顯示學生的姓名資料姓名資料,子類別子類別中也中也有一個名叫有一個名叫 show()的方法,用來顯示學生的的方法,用來顯示學生的成績資料成績資料,這二個方法都,這二個方法都稱為稱為 show()。2023/2/7762023/2/7771-7 演算法的效率評估演算法的效率評估演算法的效率評估演算法的效率評估指的是用來計算指的是用來計算某些演算法某些演算法所撰寫的所撰寫的程式程式在在經過編譯經過編譯之之後後實際執行所需要的時間實際執行所需要的時間。但是,實務上有可能因為程式。但是,實務上有可能因為程式編譯
49、的過程編譯的過程或是或是電腦設備的差異電腦設備的差異使得效率分析會因電腦的使得效率分析會因電腦的軟硬體不同而有不同的結果軟硬體不同而有不同的結果,因,因此,一般而言,效率的評估方式可分為兩大類:此,一般而言,效率的評估方式可分為兩大類:一、時間複雜度(一、時間複雜度(Time Complexity)二、空間複雜度(二、空間複雜度(Space Complexity)2023/2/778一、時間複雜度(一、時間複雜度(Time Complexity)是指從是指從呼叫該呼叫該開始到完成之過程開始到完成之過程,所有花費的所有花費的。基本上,基本上,影響程式影響程式的因素的因素,有種兩因素:,有種兩因素
50、:1.演算法效率的好壞演算法效率的好壞2.機器的機器的CPU執行速度執行速度所以,所以,執行時間執行時間=執行次數執行次數*每次執行所需的時間每次執行所需的時間。2023/2/779由於由於每一行程式每一行程式所所需的時間需的時間必須考慮到必須考慮到機器本身的機器本身的CPUCPU執行速度執行速度及及編編譯器譯器的功能,所以,的功能,所以,在評估上比較不客觀在評估上比較不客觀。因此,通常只考慮。因此,通常只考慮,所以,在,所以,在相同功能的條件之下相同功能的條件之下,往往是用來,往往是用來。也就是說,我們必須先計算出程式中。也就是說,我們必須先計算出程式中每一敘每一敘述的執行次數述的執行次數,
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。