220 likes | 347 Views
資料結構設計與 C++ 程式應用 Fundamentals of Data Structures and Their Applications Using C++. 第 1 章 資料結構概觀. 資料結構設計與 C++ 程式應用 版權所有 禁止重製. 1.1 資料 (Data) 與資訊 (Information). 資料 (Data)
E N D
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第1章 資料結構概觀 資料結構設計與C++程式應用 版權所有 禁止重製
1.1 資料(Data)與資訊 (Information) • 資料(Data) • 資訊(Information)
1.2 資料表示法 • 資料分成兩類: 數值資料(Numeric Data) — 可以做加、減、乘、除、運算處理的資料,如學生成績、員工薪水、貨品存量、銷售業績等。 文數資料(Alphanumeric Data) — 不能做運算處理的資料,如學生姓名、地址、圖書目錄、貨品名稱等。只能儲存在計算機中做分類、排序處理。
資料表示法 • 資料表示法有九種 數值資料(Numeric Data): 整數 — 分區十進位式、緊緻十進位式、固定點式、不帶正負符號的固定點式。 實數 —短浮點式、長浮點式。 文數資料(Alphanumeric Data): BCD碼、EBCDIC碼、ASCII碼。
1.2.1 分區十進位式 • 分區十進位式(Zone Decimal Format) • 利用「區域位元」和「數值位元」合併表示一個數字。 • 以最小有效位數的區域位元來當做正、負符號之位元;1100 代表正,1101 代表負而 1111代表沒有正負符號。 ※陰影者為區域位元
1.2.2 緊緻十進位式 • 緊緻十進位式(Packed Decimal Format) • 將分區十進位式的區域位元全部刪除,只保留數值位元; • 在最小有效位數後面加上四個位元當做正負符號之指標,以1100表示正號,1101表示負號,而1111表示沒有正負符號
1.2.3 固定點式 • 固定點式(Fixed Point):短,長固定點式 • 短固定點式佔用兩個位元組(16位元) • 長固定點式佔用四個位元組(32位元) • 短,長固定點式第一個位元用來表示正負符號,0代表+,1代表-;其餘位元是數值位元。 • 數值大小的範圍: 短固定點式: 長固定點式:
1.2.3 固定點式 • 圖示如下: +19 用 8 位元來表示,可以寫成 "00010011" -19 之 1補數表示法為 "11101100" -19 之 2補數表示法為 "11101101"
1.2.4 不帶正負符號的固定點式 • 不帶正負符號的固定點式(Unsigned Integer) • 這種表示法通常佔兩個位元組(16位元),全部的位元均用來表示一個數值,其數值的範圍為0至65535之間。 • 實數資料的輸出格式有兩種: • 1.dd‥d.dd‥d,例如:4372.891。 • 2.0.dd‥dE±dd ,例如:0.4372891E+04。 • 實數資料在電腦有兩種表示法:長,短浮點式。
1.2.5 短浮點式,1.2.6 長浮點式 • 短浮點式(32位元) • 長浮點式(64位元)
例題 • 指數部份(7位元) • 指數部份七個位元表示法之對照如下表 例如:利用短浮點式來表示13.125。 13.125的二進位數為1101.001= 0.1101001× 指數值為4,故指數指數部份的值為4+64=68,即二進位為1000100。 因此13.125短浮點式表示為:
1.2.7 BCD碼 • BCD碼(Binary Code Decimal) • 2個區域位元, • 4個數字位元。
1.2.8 EBCDIC碼 • EBCDIC碼(Extended Binary Code Decimal Interchange Code) • 4個區域位元, • 4個數字位元。
1.2.9 ASCII碼 • ASCII碼( American Standard Code Information Interchange) • 3個區域位元, • 4個數字位元。
1.3 演繹法 一個演繹法必須滿足下列五個條件 1.有限性: 亦即須能在有限個步驟之內解決問題。 2.明確性: 即每一個步驟必須條理分明,意義清楚。 3.得具有輸入資料: 一個演繹法所須之輸入資料可有可無。 4.須具有輸出資料。 5.有效性: 每一個步驟或運算若交給人們用紙筆來執行或計算, 須能在有限時間內完成。
1.4 程式的發展步驟 1.分析問題 2.撰寫演繹法 3.撰寫程式 4.編輯程式 5.編譯、除錯、測試及執行程式 6.文件整理
一個程式的好壞通常有下列的標準 (1).正確性:是否完成所規定之事項,並正確的解決問題。 (2).可讀性:是否讓人容易了解程式之原意。 (3).易維護性:程式是否具有單元程序、結構化、模組化之 基礎。 (4).清晰性:程式中的變數名稱、段落名稱等皆須有意義, 即應有程式編寫的風格。 (5).文書性:是否有完備的程式說明文件。 (6).效率性:是否簡單、明瞭地直接表示程式的意圖,以最少 的程式碼、最快的執行速度來完成。
程式設計師應養成良好的程式編寫風格 (1).程式要段落分明,並以有條不紊的區塊式排列。 (2).識別字的命名須有意義。 (3).須簡單且直接表達程式的意義,若能引用內建函數就 直接引用。 (4).撰寫結構化程式,引用基本的控制流程結構。 (5).儘量少用GOTO,避免不必要之分枝(Branch)。 (6).多開發副程式,儘量使程式單元化。
程式設計師應養成良好的程式編寫風格 (7).儘量將輸入與輸出(Presentation)、處理邏輯(Logic)與 資料儲存(Data Store)三者獨立開來。 (8).輸入資料的次數,儘量不要預定數量,應以特殊記號 代表資料的結尾,如此資料的輸入次數將較有彈性。 (9).先考慮程式的正確性、清晰性、易讀性及可維護性, 接著再考慮程式的效率性。 (10).程式需要適時適地加上一些註解,以提升程式的可讀性。
1.5 資料的組織 • 陣列 — 第2章 • 鏈結串列— 第3章 • 堆疊— 第4章 • 佇列— 第4章 • 樹狀結構— 第6章 • 圖形— 第7章 • 網路— 第7章 • 排序— 第8章 • 搜尋— 第9章 • 赫序— 第10章
第一章習題 • 將2進位 110001011 化成10進位、8進位、16進位 ? • 將10進位正整數13用8位元表示出來,其以1補數及2補數之表示法為何 ? • 將13.125用短浮點數表示出 ? • 設有一可裝滿5ml的量杯A及可裝滿3ml之量杯B,A、B均沒有刻度,試寫一演繹法以量出4ml之水。 • 完成下列演繹法及程式: (1) 輸入3個整數並找出最大數。 (2) 假設班上有5位同學,輸入所有同學姓名和分數,找出所有分數高過班上總平均的同學。 註:習題作業1~5以A4紙張書寫下週上課繳交。