講師:洪安
資料結構基本概念
Data Structure
資料結構(Data Structure)
課程目的
根據資料的特性與數量,將資料作最適當的安排、儲 存,以方便資料的更新及存取 重要性
資料結構暨演算法(Data Structure & Algorithm) 名列電腦相關課程的第一名 (1980 年期末之問卷調 查,調查對象為美國著名大學之電機、資訊系主任)2
2 資料結構與C++程式設計進階班
資料(Data)與資訊(Information) (1/2)
資料 (Data)
表達一個觀念或一個事件的一群文字、數字、符號或 圖表 資訊 (Information)
從一大群資料中,經過有系統的整理、分析、加工處 理所提煉出來的,可以作為參考或決策依據、有意義 的文字、數字、符號或圖表資料(Data)與資訊(Information) (2/2)
4
4 資料結構與C++程式設計進階班
資料表示法 –浮點數
不帶正負符號的固定點式(Unsigned Integer)
這種表示法通常佔兩個位元組,全部的位元均用來表 示一個數值,其數值的範圍為0至65535之間 短浮點式
長浮點式
資料結構課程探討六大主題
1.
節省記憶體空間2.
各種不同的資料結構表示法和其相關的演算法3.
有效地改進演算法的效率,使程式的執行速度更快4.
以最有利於使用者介面之方式來建構資料存取方法、資料儲存之 結構和資料儲存之媒體5.
資料處理的各種技巧,比如:排序、搜尋、合併、更新、分配等 演算法之介紹和比較6.
程式模組織單元化,以有效提昇軟體開發之生產力6
6 資料結構與C++程式設計進階班
選擇資料結構的考量
1. 資料量的多寡?
2. 資料有沒有常常增刪或更新?
3. 資料擷取次數之多寡?
4. 儲存資料所需之記憶體空間?
5. 擷取資料所能忍受的時間?
6. 是否很容易編寫程式碼?
7. 要不要預留很大的記憶體空間?
8. 當找不到所需的資料時,是否花很長的一段時間
才能確定?
程式的發展步驟 (1/2)
1. 分析問題:
分析資料、分析研究問題,決定是否採行計算機作 業,規劃輸入輸出格式,尋求一個解決的方法2. 撰寫演算法:
根據問題規格,撰寫合適之演算法3. 撰寫程式:
選擇適當之程式語言,將演算法的處理邏輯逐步轉 換成程式8 資料結構與C++程式設計進階班 8
程式的發展步驟 (2/2)
4. 編輯程式:
利用電腦終端設備,輸入及編輯程式5. 編譯、除錯、測試及執行程式:
計算機處理、饋入、編譯、執行、除錯及測試6. 文件整理:
包含演算法、操作說明、原始程式列印、測試資料 及測試結果判斷程式好壞的標準 (1/2)
1.正確性:
是否完成所規定之事項,並正確的解決問題2.可讀性:
是否讓人容易了解程式之原意3.易維護性:
程式是否具有單元程序、結構化、模組化之基礎10 資料結構與C++程式設計進階班 10
判斷程式好壞的標準 (2/2)
4.清晰性:
程式中的變數名稱、段落名稱等皆須有意義,即應有 程式編寫的風格5.文書性:
是否有完備的程式說明文件6.效率性:
是否簡單、明瞭地直接表示程式的意圖,以最少的程 式碼、最快的執行速度來完成良好的程式編寫風格 (1/3)
1. 程式要段落分明,並以有條不紊的區塊式排列
2. 識別字 (Identifier: constant or variable) 的命名 須有意義
3. 須簡單且直接表達程式的意義,若能引用內建函 數就直接引用
12 資料結構與C++程式設計進階班 12
良好的程式編寫風格 (2/3)
4. 撰寫結構化程式,引用基本的控制流程結構
5. 儘量少用 GOTO 指令,避免不必要之分枝 (Branch) 6. 多開發副程式 (Subroutine),儘量使程式單元化
7. 儘量輸入與輸出 (Presentation)、處理邏輯 (Logic) 與 資料儲存 (Data Store) 三者獨立開來
良好的程式編寫風格 (3/3)
8. 輸入資料的次數,儘量不要預定數量,應以特殊記 號代表資料的結尾,如此資料的輸入次數將較有彈 性
9. 先考慮程式的正確性、清晰性、易讀性及可維護性,
接著再考慮程式的效率性
10. 程式需要適時適地加上一些註解 (Comments),
以提升程式的可讀性
14 資料結構與C++程式設計進階班 14