1-2資料與結構
1.計算機處理的對象就是資料 (data)
2.所謂資料就是指所有可以輸入到計算機中,並且被計算機程式處理的符號的總稱。
(1)數值資料 (含整數﹑浮點數等)
(2)字串資料 (含字元),
(3)目前多媒體軟體所處理的影像﹑聲音﹑視訊或者是資料庫所處理的複雜資料等。
3.在學習程式語言的過程中,首先就是了解什麼是它的基本資料,每個資料都有屬於它的基本資料型態 (type)。
4. Java 語言裡的基本資料型態有:
位元組(byte)﹑字元(char)﹑整數 (int)﹑浮點數 (float)﹑倍精數 (double)﹑布林 (boolean) 和其他修飾型態 (long, short) 等等。
5.所謂整數是指 1, 0, -1, 100 等數字,在 Java 程式語言中,int, long, short 等等都是整數的資料形態,不同類型的整數形態,其位元組個數也不一樣,int 含 4 個位元組,long 含 8 個位元組,short 則含 2 個位元組。
6.所謂浮點數是指 1.0, 3.14, -123.456 等實數,float 和 double 都是 Java 用於表示浮點數的資料形態,float 佔 4 個位元組,double 佔 8 個位元組,不論是大小範圍和精準度,double 都優於 float。
7.資料集合 (data set) 是指性質相同的資料元素所成的集合,
例如整數資料的集合為
N = {0, 1, –1, 2, –2, 3, –3, … }
8.字元資料的集合為
C = {‘A’, ‘B’, ‘一’, ‘二’, … }
9.我們說二筆資料是屬同一資料集合,意謂著它們有相同的基本運算。
10.不同資料集合的資料,如果要同時進行某一種運算時,必須要將它們轉換成相同的資料型態(強制轉換),有時候則是由系統做型態"自動轉換"。
11.換成相同的資料型態在 Java 稱之為型態提升,例如整數和浮點數相加,系統會自動將整數轉換為浮點數,再做相加運算,所以其運算結果也是浮點數。有時候是由程式師主動將其中一個做型態強制轉換 (cast),也就是在資料變數或常數之前,加上型態名稱,例如︰
(int)3.14
會將 3.14 轉換成整數 3;
或是 (double) n
會將整數 n 轉換成倍精浮點數。
12.資料結構 (data structure) 是指相互之間存在一種或多種特定關係(relation) 的資料元素所成的集合,例如先後順序﹑大小關係﹑階層關係或是連結關係;
我們可以用比較淺白的話來說,就是....
>>>「資料的結構」,或是「有結構的資料」
藉由資料的結構化,可以加快處理速度,或者減少儲存的空間,亦可降低程式設計﹑維護的困難度。
13.在任何問題中,資料元素都不是孤立存在的,而是在它們之間存在著某種關係,這種資料元素相互之間的關係,就稱為結構 (structure),根據資料元素之間關係的不同特性,通常有下列四類基本關係:
(1)集合結構 (set):
就像是數學中的集合關係一樣,資料元素的關係就是「同屬於一個集合」,此種結構所強調的不是資料彼此之間的先後次序或是大小的關係,而是資料是否存在 (或屬於) 集合之中,資料如何進行交集﹑聯集等集合運算。
(2)線性結構 (linear structure):
資料元素之間存在一對一的關係,是一種邏輯或實體上的先後關係,如陣列 (array)﹑串列 (list)﹑堆疊 (stack)﹑佇列 (queue) 等,我們除了要了解資料是否存在資料集合裡,還要確定資料儲存的位置﹑和前後資料之間的順序,我們將在第二﹑三﹑四﹑五章介紹這些資料結構。
(3)樹狀結構 (tree):
結構中的元素存在一對多的關係,邏輯上,彼此之間構成階層化的關係,如二元搜尋樹 (binary search tree)﹑累堆樹 (heap tree) 或是一般樹狀結構,其對應關係為單一筆資料對應到下一層多筆資料,前者稱之為父親,後者稱之為兒子,兒子彼此之間稱之為兄弟。
(4)圖形結構 (graph):
資料元素彼此之間存在多對多關係,但所謂的先後順序或是上下關係,在這類結構中會變得模糊。
14.資料結構包括二部份:
(1)資料 (data) - 所謂資料是指資料元素的有限集合
(2)結構 (structure) - 結構則是指資料元素之間關係的集合
15.
通常我們將這種有結構性的資料就稱為資訊 (information),建立資料與資料之間邏輯關係。
主要目的:
(1)節省資料儲存所需的空間
(2)加快資料處理的速度
16.
二個角度來討論資料結構..
(1)邏輯的(logical) 資料結構:
關心的是資料元素之間的關係,和它的基本運算,例如整數之間可以進行加﹑減﹑乘﹑除﹑同餘等運算,堆疊資料增加和刪除的順序一定是先進後出等。
(2)實體的 (physical) 資料結構:
所關心的是它們在計算機記憶體中如何儲存﹑實作技巧﹑計算機是否直接提供運算子或是要以軟體程式來模擬,例如一個字元必須要用八個位元 (bits) 來表示﹑用一個陣列和一個整數就可以實作所有堆疊運算。在討論演算法階段,大概都是偏向邏輯資料結構,但是當進入程式設計階段,就得決定使用哪一種實體資料結構來儲存資料了。
Used to example note from MobileLearning project created for KanCheng 2014-03-27.
沒有留言:
張貼留言