計算機二級C公共基礎知識總結_第1頁
計算機二級C公共基礎知識總結_第2頁
計算機二級C公共基礎知識總結_第3頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、二級公共基礎知識總結第一章 數據結構與算法1.1 算法 算法:是一組有窮指令集,是解題方案的準確而完整的描述。通俗地說,算法就是計算 機解題的過程。算法不等于程序,也不等于計算方法,程序的編制不可能優(yōu)于算法的設 計。算法是一組嚴謹地定義運算順序的規(guī)則,每一個規(guī)則都是有效的,且是明確的,此順序 將在有限的次數下終止。所以其四個基本特征包括:(1)確定性,算法中每一步驟都必須有明確定義,不允許有模棱兩可的解釋,不允許 有多義性;(2)有窮性,算法必須能在有限的時間內做完,即能在執(zhí)行有限個步驟后終止;(3)可行性,算法原則上能夠精確地執(zhí)行;(4)擁有足夠的情報。 算法的基本要素:一是對數據對象的運算

2、和操作;二是算法的控制結構。 指令系統(tǒng):一個計算機系統(tǒng)能執(zhí)行的所有指令的集合?;具\算和操作包括:算術運算、邏輯運算、關系運算、數據傳輸。 算法的三種基本控制結構:順序結構、選擇結構、循環(huán)結構。 算法基本設計方法:列舉法、歸納法、遞推、遞歸、減半遞推技術、回溯法。 算法效率的度量算法復雜度:算法時間復雜度和算法空間復雜度。 算法時間復雜度:指執(zhí)行算法所需要的計算工作量。即算法執(zhí)行過程中所需要的基本運 算次數。通常,一個算法所用的時間包括編譯時間和運行時間。算法空間復雜度:指執(zhí)行這個算法所需要的內存空間。包括算法程序所占的空間,輸入 的初始數據所占的空間,算法執(zhí)行過程中所需的額外空間。1.2 數

3、據結構的基本概念 數據結構:指相互有關聯的數據元素的集合。數據結構研究的三個方面:(1)數據集合中各數據元素之間所固有的邏輯關系,即數據的邏輯結構;(2)在對數據進行處理時,各數據元素在計算機中的存儲關系,即數據的存儲結構;(3)對各種數據結構進行的運算。數據的邏輯結構應包含:(1)表示數據元素的信息;(2)表示各數據元素之間的前后件關系 ( 指邏輯關系,與存儲位置無關 )。 數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構 , 也稱數據物理結 構。數據的存儲結構有順序、鏈接、索引等。 線性結構的條件, ( 一個非空數據結構 ):(1)有且只有一個根結點; ( 2)每一個結點最多有

4、一個前件,也最多有一個后件。 非線性結構:不滿足線性結構條件的數據結構。1.3 線性表及其順序存儲結構 線性表是由一組數據元素構成,數據元素的位置只取決于自己的序號,元素之間的相對 位置是線性的。在復雜線性表中,由若干項數據元素組成的數據元素稱為記錄; 由多個記錄構成的線性表稱為文件。非空線性表的結構特征:(1) 且只有一個根結點al,它無前件;(2) 有且只有一個終端結點an,它無后件;( 3)除根結點與終端結點外,其他所有結點有且只有一個前件,也有且只有一個后件。結點個數 n 稱為線性表的長度,當 n=0 時,稱為空表。線性表的順序存儲結構具有以下兩個基本特點:( 1 )線性表中所有元素所

5、占的存儲空間是連續(xù)的;( 2)線性表中各數據元素在存儲空間中是按邏輯順序依次存放的。元素 ai 的存儲地址為: ADR(ai)=ADR(a1)+(i-1)k ,ADR(a1)為第一個元素的地址,k代表每個元素占的字節(jié)數。順序表的運算:查找、插入、刪除。1.4 線性鏈表數據結構中的每一個結點對應于一個存儲單元, 這種存儲單元稱為存儲結點, 簡稱結點。結點由兩部分組成: (1) 用于存儲數據元素值,稱為數據域;(2) 用于存放指針,稱為指針域,用于指向前一個或后一個結點。在鏈式存儲結構中,存儲數據結構的存儲空間可以不連續(xù),各數據結點的存儲順序與數 據元素之間的邏輯關系可以不一致,而數據元素之間的邏

6、輯關系是由指針域來確定的。 鏈式存儲方式即可用于表示線性結構,也可用于表示非線性結構。線性單鏈表中,HEAD為頭指針,HEAD二NULL或0)稱為空表。 如果是雙項鏈表的兩指針:左指針( Llink )指向前件結點,右指針( Rlink )指向后件 結點。線性鏈表的基本運算:查找、插入、刪除。1.5 棧和隊列 棧:限定在一端進行插入與刪除的線性表。其允許插入與刪除的一端稱為棧頂,用指針 top 表示棧頂位置。 不允許插入與刪除的另一端稱為棧底,用指針 bottom 表示棧底。棧按照“先進后出” (FILO)或“后進先出”(LIFO)組織數據,棧具有記憶作用。 棧的存儲方式有順序存儲和鏈式存儲。

7、棧的基本運算: (1) 入棧運算,在棧頂位置插入元素;(2)退棧運算,刪除元素 ( 取出棧頂元素并賦給一個指定的變量 ) ;(3)讀棧頂元素,將棧頂元素賦給一個指定的變量,此時指針無變化。 隊列:指允許在一端(隊尾)進入插入,而在另一端(隊頭)進行刪除的線性表。用 rear 指針指向隊尾,用 front 指針指向隊頭元素的前一個位置。隊列是“先進先出” (FIFO)或“后進后出”(LILO)的線性表。隊列運算包括: (1) 入隊運算:從隊尾插入一個元素; (2) 退隊運算:從隊頭刪除一 個元素。隊列的順序存儲結構一般采用隊列循環(huán)的形式。循環(huán)隊列s=0表示隊列空;s=1且front=rear 表

8、示隊列滿。 計算循環(huán)隊列的元素個數: “尾指針減頭指針” ,若為負數,再加其容量即可。1.6 樹與二叉樹 樹是一種簡單的非線性結構,其所有元素之間具有明顯的層次特性。 在樹結構中,每一個結點只有一個前件,稱為父結點。 沒有前件的結點只有一個,稱為樹的根結點,簡稱樹的根。 每一個結點可以有多個后件,稱為該結點的子結點。沒有后件的結點稱為葉子結點。在樹結構中,一個結點所擁有的后件的個數稱為該結點的度,所有結點中最大的度稱為 樹的度。樹的最大層次稱為樹的深度 二叉樹的特點: (1) 非空二叉樹只有一個根結點;(2) 每一個結點最多有兩棵子樹,且分別稱為該結點的左子樹與右子樹。 滿二叉樹是指除最后一層

9、外,每一層上的所有結點有兩個子結點,則 k 層上有 2k-1 個 結點深度為m的滿二叉樹有2m-1個結點。完全二叉樹是指除最后一層外,每一層上的結點數均達到最大值,在最后一層上只缺少 右邊的若干結點。二叉樹基本性質:(1)在二叉樹的第k層上,最多有2k-1(k 1)個結點;(2) 深度為m的二叉樹最多有2m-1個結點;(3) 度為 0的結點(即葉子結點)總是比度為 2的結點多一個;(4) 具有n個結點的二叉樹,其深度至少為Iog2n+1,其中Iog2n 表示取 Iog2n 的整數部分(5) 具有 n 個結點的完全二叉樹的深度為 Iog2n+1 ;(6) 設完全二叉樹共有 n 個結點。如果從根結

10、點開始,按層序(每一層從左到右)用自然數1,2,n給結點進行編號(k=1,2.n ),有以下結論: 若k=1,則該結點為根結點,它沒有父結點;若 k1,則該結點的父結點編號為INT(k/2) ; 若2k n,則k結點的左子結點編號為2k;否則該結點無左子結點(也無右子結點); 若2k+1 n,則編號為k的結點的右子結點編號為2k+1;否則該結點無右子結點。 補充:增加度為 1 的結點不會影響二叉樹的葉子結點數,每增加一個度為 2的結點便會 增加一個葉子結點,沒有度為 2 的結點時葉子結點數為 1。 已知完全二叉樹有 x 個結點,求其葉子結點數:確定層數為k;第k層的結點數y=x-(2 k-1-

11、1); 第 k-1 層的葉子結點數 n=2 (k-1)-1-y/2; 最后 y+n。 二叉樹存儲結構采用鏈式存儲結構, 對于滿二叉樹與完全二叉樹可以按層序進行順序存 儲。二叉樹的遍歷:(1)前序遍歷(DLR,首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹; (樹根在第一,下走不跳結點)(2)中序遍歷(LDR,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹; (有左先左,再尋根,后找右。最左邊的結點最先遍歷,最右邊的結點最后遍歷)(3)后序遍歷(LRD首先遍歷左子樹,然后訪問遍歷右子樹,最后訪問根結點。 (有左先左,再找右,后尋根,到最右一路上行,樹根在最后)小結:邏輯結構可分為線性表和非線性表

12、。 線性表包括棧、隊列,其存儲方式為順序存儲、鏈式存儲均可。鏈式型有:線性 鏈表,帶鏈的棧,帶鏈的隊列,循環(huán)鏈表等。 非線性表包括樹 ( 二叉樹 ) ,其存儲方式為鏈式存儲。1.7 查找技術只能使用順序查找的兩種情況:( 1 )線性表為無序表,不管是順序存儲還是鏈式存儲;( 2)表采用鏈式存儲結構,即使是有序線性表。二分法查找只適用于順序存儲的有序表,對于長度為 n 的有序線性表,最壞情況只需比 較 log2n 次,而順序查找需要比較 n 次。1.8 排序技術 排序是指將一個無序序列整理成按值非遞減順序排列的有序序列。 交換類排序法:( 1)冒泡排序法,需要比較的次數為 n(n-1)/2 ;

13、(2 ) 快速排序法。插入類排序法:( 1)簡單插入排序法,最壞情況需要 n(n-1)/2 次比較;(2) 希爾排序法,最壞情況需要 O(n1.5) 次比較。 選擇類排序法:( 1)簡單選擇排序法 , 最壞情況需要 n(n-1)/2 次比較;(2) 堆排序法,最壞情況需要 O(nlog2n) 次比較。 相比以上幾種 ( 除希爾排序法外 ),堆排序法的時間復雜度最小。 第二章 程序設計基礎2.1 程序設計設計方法和風格 “清晰第一、效率第二”已成為當今主導的程序設計風格。 形成良好的程序設計風格需注意: ( 詳見書 P27) 1、源程序文檔化; 2 、數據說明的方法; 3 、語句的結構; 4 、

14、輸入和輸出 注釋分序言性注釋和功能性注釋。 語句結構清晰第一、效率第二。2.2 結構化程序設計 結構化程序設計方法的四條原則是: 1、自頂向下; 2 、逐步求精; 3 、模塊化; 4 、限制使用 goto 語句。 結構化程序的基本結構及特點:(1) 順序結構:一種簡單的程序設計,最基本、最常用的結構;(2)選擇結構:又稱分支結構,包括簡單選擇和多分支選擇結構,可根據條件,判斷 應該選擇哪一條分支來執(zhí)行相應的語句序列; (3)循環(huán)結構:又稱重復結構,可根據給定條件,判斷是否需要重復執(zhí)行某一相同或 類似的程序段。結構化程序設計的特點:只有一個入口和出口2.3 面向對象的程序設計面向對象的程序設計的

15、首次提出以 60 年代末挪威奧斯陸大學和挪威計算機中心研制的SIMULA語言為標志。面向對象方法的優(yōu)點:( 1)與人類習慣的思維方法一致; (2)穩(wěn)定性好; ( 3)可重用性好;( 4)易于開發(fā)大型軟件產品; (5)可維護性好。 對象是面向對象方法中最基本的概念,可以用來表示客觀世界中的任何實體,對象是實 體的抽象。面向對象的程序設計方法中,對象是由數據的容許的操作組成的封裝體,是系統(tǒng)中用來 描述客觀事物的一個實體,是構成系統(tǒng)的一個基本單位,由一組表示其靜態(tài)特征的屬性 和它可執(zhí)行的一組操作組成。屬性即對象所包含的信息, 它在設計對象時確定, 一般只能通過執(zhí)行對象的操作來改變。 操作描述了對象執(zhí)

16、行的功能,是對象的動態(tài)屬性,操作也稱為方法或服務。對象的基本特點:( 1)標識惟一性; ( 2)分類性; (3)多態(tài)性; (4)封裝性; (5)模塊獨立性 類是指具有共同屬性、共同方法的對象的集合。類是關于對象性質的描述。類是對象的 抽象,對象是其對應類的一個實例。消息是一個實例與另一個實例之間傳遞的信息。對象間的通信靠消息傳遞。它請求對象 執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數據流和控制流。消息的組成包括:( 1)接收消息的對象的名稱; (2)消息標識符,也稱消息名; (3)零個或多個參 數。繼承是使用已有的類定義作為基礎建立新類的定義技術, 廣義指能夠直接獲得已有的性 質和特征,而不

17、必重復定義他們。繼承具有傳遞性,一個類實際上繼承了他上層的全部基類的特性。 繼承分單繼承和多重繼承。單繼承指一個類只允許有一個父類,即類等級為樹形結構; 多重繼承指一個類允許有多個父類。多態(tài)性是指同樣的消息被不同的對象接受時可導致完全不同的行動的現象第三章 軟件工程基礎3.1 軟件工程基本概念 計算機軟件是包括程序、數據及相關文檔的完整集合。軟件的特點包括: (1)軟件是一種邏輯實體,具有抽象性; (2)軟件的生產與硬件不同,它沒有明顯的制作過程; (3)軟件在運行、使用期間不存在磨損、老化問題;(4)軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導致了軟 件移植的問題;(5)

18、軟件復雜性高,成本昂貴;(6)軟件開發(fā)涉及諸多的社會因素。軟件按功能分為應用軟件、系統(tǒng)軟件、支撐軟件 (或工具軟件 )。 軟件危機主要表現在成本、質量、生產率等問題。軟件工程是應用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標 準和工序。簡單的說就是使軟件走向工程化。軟件工程的核心思想是把軟件產品看作是 一個工程產品來處理。軟件工程包括 3 個要素:方法、工具和過程。 軟件工程過程是把軟件轉化為輸出的一組彼此相關的資源活動,包含4 種基本活動:(1)P(plan) 軟件規(guī)格說明;(2)D(do) 軟件開發(fā);( 3)C(check) 軟件確認;( 4)A(action) 軟件演進

19、。軟件生命周期:軟件產品從提出、實現、使用維護到停止使用退役的過程。 軟件生命周期分三個階段:軟件定義、軟件開發(fā)、運行維護, 主要活動階段是:( 1)可行性研究與計劃制定; (2)需求分析;( 3)軟件設計(概要設計和詳細設計) ; (4)軟件實現; (5)軟件測試; (6)運行和維護。軟件工程的目標: 在給定成本、 進度的前提下, 開發(fā)出具有有效性、 可靠性、 可理解性、 可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的 產品?;灸繕耍焊冻鲚^低的開發(fā)成本;達到要求的軟件功能;取得較好的軟件性能;開發(fā)軟 件易于移植;需要較低的費用;能按時完成開發(fā),及時交付使用。

20、軟件工程的理論和技術性研究的內容主要包括:軟件開發(fā)技術和軟件工程管理。 軟件開發(fā)技術包括:軟件開發(fā)方法學、開發(fā)過程、開發(fā)工具和軟件工程環(huán)境。軟件開發(fā)環(huán)境或軟件工程環(huán)境是指全面支持軟件開發(fā)全過程的軟件工具的集合。 軟件工程管理包括:軟件管理學、軟件工程經濟學、軟件心理學等內容。 軟件管理學包括人員組織、進度安排、質量保證、配置管理、項目計劃等。 軟件工程基本原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可 驗證性。3.2 結構化分析方法 結構化方法的核心和基礎是結構化程序設計理論。 軟件定義階段中,可行性研究與計劃的制定是確定待開發(fā)目標和總的要求,給出它的功 能、性能、可靠性以及

21、接口等方面的可能方案,制定完成開發(fā)的實施計劃。需求分析, 對待開發(fā)軟件提出的需求分析并給出詳細的定義。需求分析階段的工作:需求獲取,需求分析,編寫需求規(guī)格說明書,需求評審。 需求分析方法有:(1)結構化需求分析方法; 面向數據結構的 Jackson 方法( ISD); 面向數據流的結構化分析方法(SA); 面向數據結構的結構化數據系統(tǒng)開發(fā)方法(DSSD;(2)面向對象的分析的方法( OOA)。 從需求分析建立的模型的特性來分:靜態(tài)分析和動態(tài)分析。結構化分析方法的實質:著眼于數據流,自頂向下,逐層分解,建立系統(tǒng)的處理流程, 以數據流圖和數據字典為主要工具,建立系統(tǒng)的邏輯模型。 結構化分析的常用工

22、具:數據流圖;數據字典;判定樹;判定表。(1) 數據流圖(DFD圖):描述數據處理過程的工具,是需求理解的邏輯模型的圖形表 示,它直接支持系統(tǒng)功能建模。 加工(轉換)一一圓框,輸入數據經加工變換產生的輸出。 數據流一一箭頭,沿箭頭方向傳遞數據的通道,一般在旁邊標注數據流名。 存儲文件(數據源)雙橫線,表示處理過程中存放各種數據的文件。 源、潭一一方框,表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體。(2) 數據字典:對所有與系統(tǒng)相關的數據元素的一個有組織的列表,以及精確的、嚴 格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結果有共同的 理解。數據字典是結構化分析的核心。(3) 判定樹

23、:從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結論, 根據描述材料中的連接詞找出判定條件之間的從屬關系、并列關系、選擇關系,根據它 們構造判定樹。( 4)判定表:與判定樹相似,當數據流圖中的加工要依賴于多個邏輯條件的取值,即 完成該加工的一組動作是由于某一組條件取值的組合而引發(fā)的, 使用判定表描述比較適 宜。軟件需求規(guī)格說明書的特點:正確性;無岐義性; 完整性; 可驗證性; 一致性; 可理解性; 可修改性; 可追蹤性。3.3 結構化設計方法軟件設計是確定系統(tǒng)的物理模型。軟件設計是開發(fā)階段最重要的步驟, 是將需求準確地轉化為完整的軟件產品或系統(tǒng)的唯 一途徑。系統(tǒng)設計人員和程序設計人員

24、應該在反復理解軟件需求的基礎上,給出軟件結 構、模塊的劃分、功能的分配以及處理流程。 軟件設計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如何完成預定的任務。 從技術觀點來看,軟件設計包括軟件結構設計、數據設計、接口設計、過程設計。 結構設計:定義軟件系統(tǒng)各主要部件之間的關系。 數據設計:將分析時創(chuàng)建的模型轉化為數據結構的定義。 接口設計:描述軟件內部、軟件和協作系統(tǒng)之間以及軟件與人之間如何通信。 過程設計:把系統(tǒng)結構部件轉換成軟件的過程描述。從工程管理角度來看,軟件設計分兩步:概要設計和詳細設計。軟件設計的一般過程:軟件設計是一個迭代的過程;先進行高層次的結構設計;后進行 低層次的過程設計;

25、穿插進行數據設計和接口設計。軟件設計的基本原理是: (1)抽象; (2)模塊化; (3)信息隱蔽; (4)模塊獨立 性。衡量軟件模塊獨立性使用耦合性和內聚性兩個定性的度量標準。耦合性是模塊見相互連接的緊密程度的度量。 耦合程度取決于各個模塊之間接口的復雜 程度、調用方式以及哪些信息通過接口。內聚性是一個模塊內部各個元素間彼此結合的緊密程度的度量。 在程序結構中各模塊的內聚性越強,則耦合性越弱。優(yōu)秀軟件應高內聚,低耦合,有利 于提高模塊的獨立性。軟件概要設計的基本任務是:(1)設計軟件系統(tǒng)結構;(2)數據結構及數據庫設計; (3)編寫概要設計文檔;(4)概要設計文檔評審 在結構圖中,模塊用一個矩

26、形表示,箭頭表示模塊間的調用關系。 可以用帶注釋的箭頭表示模塊調用過程中來回傳遞的信息。 還可用帶實心圓的箭頭表示傳遞的是控制信息,空心圓箭心表示傳遞的是數據。 結構圖的基本形式:基本形式、順序形式、重復形式、選擇形式。 結構圖有四種模塊類型:傳入模塊、傳出模塊、變換模塊和協調模塊。 典型的數據流類型有兩種:變換型和事務型。 變換型系統(tǒng)結構圖由輸入、中心變換、輸出三部分組成。 事務型數據流的特點是:接受一項事務,根據事務處理的特點和性質,選擇分派一個適 當的處理單元,然后給出結果。詳細設計:是為軟件結構圖中的每一個模塊確定實現算法和局部數據結構,用某種選定 的表達工具表示算法和數據結構的細節(jié)。

27、常見的過程設計工具有:圖形工具(程序流程圖(PFD)、N-S圖、PAD圖、),表格工具(判定表),語言工具(PDL) 程序流程圖中:箭頭為控制流、方框為加工步驟、菱形為邏輯條件。3.4 軟件測試 軟件測試定義:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它 是否滿足規(guī)定的需求或是弄清預期結果與實際結果之間的差別。 軟件測試的目的:發(fā)現錯誤而執(zhí)行程序的過程。軟件測試方法:靜態(tài)測試和動態(tài)測試。 靜態(tài)測試包括代碼檢查、靜態(tài)結構分析、代碼質量度量。不實際運行軟件,主要通過人 工進行。動態(tài)測試:是基本計算機的測試,主要包括白盒測試方法和黑盒測試方法。 白盒測試:也稱結構測試或邏輯測試。在

28、程序內部進行,主要用于完成軟件內部操作的 驗證。白盒測試主要考慮內部的邏輯結構。主要方法有邏輯覆蓋、基本路徑測試。 黑盒測試:也稱功能測試或數據驅動測試。是在軟件接口處進行,完成功能驗證。黑盒 測試完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求和功能規(guī)格說明, 檢查程序的功能是否符合它的設計要求。主要診斷功能不對或遺漏、界面錯誤、數據結 構或外部數據庫訪問錯誤、性能錯誤、初始化和終止條件錯,用于軟件確認測試。主要 方法有等價類劃分法、邊界值分析法、錯誤推測法、因果圖等。驅動測試相當于被測模塊的主程序,它接收測試數據,并傳給被測模塊,輸出實際測試 軟件測試過程一般按 4 個步驟進行:

29、單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試。 單元測試是對模塊(程序單元)進行,靜態(tài)動態(tài)均有,動態(tài)時以白盒為主輔之以黑盒 集成測試是測試、組裝軟件。確認測試的任務是驗證軟件的功能和性能及其他特性是否滿足了需求規(guī)格說明中的各 項需求以及軟件配置是否完全正確,先用黑盒。3.5 程序的調試 程序調試的任務是診斷和改正程序中的錯誤,主要在開發(fā)階段進行。 程序調試的基本步驟:(1)錯誤定位;(2)修改設計和代碼,以排除錯誤;(3)進行回歸測試,防止引進新的錯誤。軟件調試可分為靜態(tài)調試和動態(tài)調試。 靜態(tài)調試主要是指通過人的思維來分析源程序代 碼和排錯,是主要的設計手段,而動態(tài)調試是輔助靜態(tài)調試。

30、主要調試方法有:(1)強行排錯法; (2)回溯法; (3)原因排除法。第四章 數據庫設計基礎4.1 數據庫系統(tǒng)的基本概念 數據:實際上就是描述事物的符號記錄。 軟件的數據是有一定的結構,有型與值之分,如整型、實型、字符型等。而數據的值給 出了符合定型的值,如整型值 15。數據庫:是指在已有數據庫管理系統(tǒng)的基礎上建立數據庫,是數據的集合,具有統(tǒng)一的 結構形式并存放于統(tǒng)一的存儲介質內,是多種應用數據的集成,并可被各個應用程序共 享。數據庫存放數據是按數據所提供的數據模式存放的,具有集成與共享的特點。 數據庫管理系統(tǒng):一種系統(tǒng)軟件,負責數據庫中的數據組織、數據操縱、數據維護、控 制及保護和數據服務等

31、, 數據庫系統(tǒng)中實現各種數據管理功能的核心軟件稱為數據庫管 理系統(tǒng)。數據庫管理系統(tǒng)的六大功能:(1)數據模式定義:即為數據庫構建其數據框架;(2)數據存取的物理構建:為數據模式的物理存取與構建提供有效的存取方法與手段;(3)數據操縱:為用戶使用數據庫的數據提供方便,如查詢、插入、修改、刪除等以 及簡單的算術運算及統(tǒng)計;(4)數據的完整性、安全性定義與檢查;(5)數據庫的并發(fā)控制與故障恢復;(6)數據的服務:如拷貝、轉存、重組、性能監(jiān)測、分析等。 為完成以上功能,數據庫管理系統(tǒng)提供以下的數據語言:(1)數據定義語言(DDL):負責數據的模式定義與數據的物理存取構建;(2)數據操縱語言(DML):

32、負責數據的操縱,如查詢與增、刪、改等;(3)數據控制語言(DCL):負責數據完整性、安全性的定義與檢查以及并發(fā)控制、故障 恢復等。數據語言按其使用方式具有兩種結構形式:交互式命令 (又稱自含型或自主型語言 ) ;宿主型語言(一般可嵌入某些宿主語言中) 。 數據庫管理員:對數據庫進行規(guī)劃、設計、維護、監(jiān)視等的專業(yè)管理人員。數據庫系統(tǒng):由數據庫(數據) 、數據庫管理系統(tǒng)(軟件) 、數據庫管理員(人員) 、硬 件平臺(硬件)、軟件平臺(軟件)五個部分構成的運行實體。對數據庫系統(tǒng)需要操作系統(tǒng)的支持 . 數據庫應用系統(tǒng):由數據庫系統(tǒng)、應用軟件及應用界面三者組成。 數據管理發(fā)展的三個階段:人工管理階段,文

33、件系統(tǒng)階段,數據庫系統(tǒng)階段。 而數據獨立性最高的是數據庫系統(tǒng)。文件系統(tǒng)階段:提供了簡單的數據共享與數據管理能力,但是它無法提供完整的、統(tǒng)一 的、管理和數據共享的能力。層次數據庫與網狀數據庫系統(tǒng)階段 :為統(tǒng)一與共享數據提供了有力支撐。 數據庫系統(tǒng)的基本特點: 數據的集成性 、數據的高共享性與低冗余性 、數據獨立性(物 理獨立性與邏輯獨立性) 、數據統(tǒng)一管理與控制。物理獨立性:用戶的應用程序與存儲在磁盤在磁盤等介質上的數據庫是相互獨立的數據庫系統(tǒng)的三級模式: (1)概念模式:數據庫系統(tǒng)中全局數據邏輯結構的描述,全體用戶公共數據視圖;(2)外模式:也稱子模式與用戶模式。是用戶的數據視圖,也就是用戶所

34、見到的數據 模式;(3)內模式:又稱物理模式,它給出了數據庫物理存儲結構與物理存取方法。 數據庫系統(tǒng)的兩級映射:(1)概念模式到內模式的映射;(2)外模式到概念模式的映射。4.2 數據模型 數據模型:是數據特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束 條件,為數據庫系統(tǒng)的信息表與操作提供一個抽象的框架。描述了數據結構、數據操作 及數據約束。關系模型屬于非格式化模型,而模型和網狀模型屬于格式化模型。E-R模型(實體聯系模型)的基本概念(1)實體:現實世界中的事物;(2)屬性:事物的特性;(3)聯系:現實世界中事物間的關系。實體集間的聯系有一對一、一對多、多對多的 聯系。E-R 模

35、型基本概念之間的聯接關系:實體是概念世界中的基本單位,屬性有屬性域,每 個實體可取屬性域內的值。一個實體的所有屬性值叫元組。E-R模型的圖示法:(1)實體集表示法矩形;(2)屬性表法橢圓形; (3)聯系表示法菱 層次模型的基本結構是樹形結構,具有以下特點:(1)每棵樹有且僅有一個無雙親結點,稱為根; (2)樹中除根外所有結點有且僅有一個雙親。 從圖論觀點看,網狀模型是一個不加任何條件限制的無向圖。 關系模型是數學化的模型。要用到集合論、離散數學等理論知識。 關系模型采用二維表來表示,簡稱表,由表框架及表的元組組成。一個二維表就是一個 關系。每行數據稱為元組。在二維表中凡能唯一標識元組的最小屬性

36、稱為鍵或碼。從所有侯選 鍵中選取一個作為用戶使用的鍵稱主鍵。表 A 中的某屬性是某表 B 的鍵,則稱該屬性集 為 A 的外鍵或外碼。關系中的數據約束: (1)實體完整性約束:約束關系的主鍵中屬性值不能為空值; (2)參照完全性約束:是關系之間的基本約束;(3)用戶定義的完整性約束:它反映了具體應用中數據的語義要求。4.3 關系代數關系數據庫系統(tǒng)的特點之一是它建立在數據理論的基礎之上, 有很多數據理論可以表示 關系模型的數據操作,其中最為著名的是關系代數與關系演算。關系數據庫管理系統(tǒng)能實現的專門關系運算包括:選擇、投影、連接。 關系模型的基本運算:( 1)插入 (2)刪除 (3) 修改 (4)查

37、詢(包括投影、選擇、笛卡爾積運算) 還有擴充運算交、除、連接及自然連接運算。在關系運算中,連接運算后得到的新表的屬性是運算前表中屬性相加。即多于原來關系中屬性的個數。4.4 數據庫設計與管理 數據庫設計是數據應用的核心。數據庫設計的根本目標是解決數據共享問題 . 數據庫設計的兩種方法:(1)面向數據:以信息需求為主,兼顧處理需求;(2)面向過程:以處理需求為主,兼顧信息需求。 數據庫的生命周期:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、編 碼階段、測試階段、運行階段、進一步修改階段。數據庫設計分為四個階段:需求分析階段,概念設計階段,邏輯設計階段,物理設計階 段。需求分析常用結構

38、析方法和面向對象的方法。結構化分析(簡稱SA方法用自頂向下、逐層分解的方式分析系統(tǒng)。 用數據流圖表達數據和處理過程的關系。 對數據庫設計來講, 數據字典是進行詳細的數據收集和數據分析所獲得的主要結果。數據字典是各類數據描述的集合,包括 5 個部分:數據項、數據結構、數據流(可以是 數據項,也可以是數據結構) 、數據存儲、處理過程。數據庫概念設計的目的是分析數據內在語義關系。設計的方法有兩種 (1)集中式模式設計法(適用于小型或并不復雜的單位或部門) ; ( 2)視圖集成設計法。使用E-R模型與視圖集成進行設計。視圖設計一般有三種設計次序:自頂向下、由底向上、由內向外。 視圖集成的幾種沖突:命名

39、沖突、概念沖突、域沖突、約束沖突。關系視圖設計又稱外模式設計。關系視圖的主要作用:(1)提供數據邏輯獨立性;(2)能適應用戶對數據的不同需求;(3)有一定數據保密功能。數據庫的物理設計主要目標是對數據內部物理結構作調整并選擇合理的存取路徑,以提高數據庫訪問速度有效利用存儲空間。一般RDBM中留給用戶參與物理設計的內容大致有索引設計、集成簇設計和分區(qū)設計。數據庫管理的內容:(1)數據庫的建立;(2)數據庫的調整;(3)數據庫的重組;(4)數據庫安全性與完整性控制;(5)數據庫的故障恢復; (6)數據庫監(jiān)控。使用說明:公共基礎的復習沒有技巧,就是背誦、背誦、再背誦!劃線字體是至關重要的部分,框 起

40、來的字體為填空題的??荚~匯,一定要背熟牢記,這里面有100分里30分的原題。提醒:考前需要經常訪問的兩個網站:C語言最重要的知識點復習資料總體上必須清楚的:1)程序結構是三種:順序結構,循環(huán)結構(三個循環(huán)結構),選擇結構(if和switch)2) 讀程序都要從 main() 入口 , 然后從最上面順序往下讀 ( 碰到循環(huán)做循環(huán) , 碰到選擇做 選擇)。3) 計算機的數據在電腦中保存是以 二進制的形式 . 數據存放的位置就是 他的地址 .4) bit 是位 是指為 0 或者 1。 byte 是指字節(jié) , 一個字節(jié) = 八個位 .5) 一定要記住 二進制 如何劃成 十進制。概念??嫉降模壕幾g預處理

41、不是 C 語言的一部分,不占運行時間,不要加分號。 C 語言編譯的程序稱為 源程序,它以 ASCII 數值存放在文本文件中。每個C語言程序中main函數是有且只有一個。在函數中不可以再定義函數。 算法的是一定要有輸出的,他可以沒有輸入。 break 可用于循環(huán)結構和 switch 語句。逗號運算符的級別最低。第一章1) 合法的用戶標識符考查: 合法的要求是由字母,數字,下劃線組成。有其它元素就錯了。 并且第一個必須為字母或則是下劃線。第一個為數字就錯了。 關鍵字不可以作為用戶標識符號。 main define scanf printf都不是關鍵字。迷惑你的地方 If 是可以做為用戶標識符。 因

42、為 If 中的第一個字母大寫了, 所以不是關鍵字。2) 實型數據的合法形式:2.333e-1 就是合法的,且數據是 2.333 X 10-1??荚嚳谠E: e 前 e 后必有數, e 后必為整數。 .3)字符數據的合法形式 : :1 是字符占一個字節(jié), 1 是字符串占兩個字節(jié) ( 含有一個結束符號 ) 。0 的 ASCII 數值表示為 48,a 的 ASCII 數值是 97, A 的 ASCII 數值是 65。 一般考試表示單個字符錯誤的形式: 65 1 字符是可以進行算術運算的,記?。?0-0=48 大寫字母和小寫字母轉換的方法: A+32=a 相互之間一般是相差 32。4)整型一般是兩個字節(jié)

43、 , 字符型是一個字節(jié),雙精度一般是 4 個字節(jié): 考試時候一般會說,在 16位編譯系統(tǒng),或者是 32 位系統(tǒng)。碰到這種情況,不要去 管,一樣做題。掌握整型一般是兩個字節(jié) , 字符型是一個字節(jié),雙精度一般是 4 個字節(jié) 就可以了。5)轉義字符的考查:在程序中int a = 0x6d,是把一個十六進制的數給變量 a注意這里的Ox必須存在。 在程序中 int a = 06d, 是一個八進制的形式。在轉義字符中, x6d 才是合法的, O 不能寫,并且 x 是小寫。 141 是合法的, O 是不能寫的。108 是非法的,因為不可以出現 8。6)算術運算符號的優(yōu)先級別: 同級別的有的是從左到右,有的是

44、從右到左。7)強制類型轉換:一定是 (int)a不是int (a),注意類型上一定有括號的。注意(int)(a+b)和(int)a+b的區(qū)別。前是把a+b轉型,后是把a轉型再加b8)表達式的考查:是表達式就一定有數值。賦值表達式:表達式數值是最左邊的數值, a=b=5; 該表達式為 5,常量不可以賦值。 自加、自減表達式:假設 a=5, +a (是為6), a+ (為5);運行的機理: +a 是先把變量的數值加上 1,然后把得到的數值放到變量 a 中,然后再 用這個+a表達式的數值為6,而a+是先用該表達式的數值為5,然后再把a的數值加上1 為 6,再放到變量a中。進行了 +a和a+后在下面的

45、程序中再用到a的話都是變量a中的6 了。考試口訣: +在前先加后用, +在后先用后加。逗號表達式:優(yōu)先級別最低 ; 表達式的數值逗號最右邊的那個表達式的數值。(2, 3, 4)的表達式的數值就是 4。9)位運算的考查:會有一到二題考試題目??偟奶幚矸椒ǎ簬缀跛械奈贿\算的題目都要按這個流程來處理(先把十進制變成二進 制再變成十進制) 。例 1 : char a = 6, b;b = a2;這種題目的計算是先要把a的十進制6化成二進制,再做位運算。例 2: 一定要記住,異或的位運算符號。 0 異或 1 得到 1。0異或 0 得到 0。兩個女的生不出來。1 異或 1 得到 0。兩個男的生不出來???/p>

46、試記憶方法:一男 (1) 一女(0) 才可以生個小孩 (1) 。例 3: 在沒有舍去數據的時候, 右移一位表示除以 210) 018的數值是非法的,八進制是沒有 8的,逢 8進 1。11) %符號兩邊要求是整數。不是整數就錯了。12) 三種取整丟小數的情況:1、int a =1.6;2、(int)a ;3、1/2 ; 3/2 ;13) 字符型和整數是近親:char a = 65 ;printf(“%c”, a);得到的輸出結果: aprintf( “%d”, a); 得到的輸出結果: 65第二章1 )printf 函數的格式考查:%d 對應整型;c對應字符;%f對應單精度等等。寬度的,左對齊等

47、修飾。%ld 對應 long int ; %lf 對應 double 。2) scanf 函數的格式考察:注意該函數的第二個部分是 &a 這樣的地址,不是 a;scanf( “%d%d%*d%”d,&a,&b,&c); 跳過輸入的第三個數據。3) putchar ,getchar函數的考查:char a = getchar()是沒有參數的,從鍵盤得到你輸入的一個字符給變量 aputchar( y ) 把字符 y 輸出到屏幕中。4)如何實現兩個變量 x ,y 中數值的互換(要求背下來)不可以把 x=y ,y=x; 要用中間變量 t=x ;x=y;y=t 。5)如何實現保留三位小數,第四位四舍五入

48、的程序, (要求背下來) 這個有推廣的意義,注意 x = ( int )x 這樣是把小數部分去掉。第三章特別要注意: c 語言中是用非 0 表示邏輯真的,用 0表示邏輯假的。1)關系表達式:表達式的數值只能為 1(表示為真),或 0(表示假)當關系的表達是為真的時候得到1。如 98 這個是真的,所以表達式的數值就是1;2)邏輯表達式:只能為 1(表示為真),或 0(表示假)共有 & | ! 三種邏輯運算符號。! &| 優(yōu)先的級別。注意短路現象??荚嚤容^喜歡考到。要表示 x 是比 0 大,比 10 小的方法。 0x10 是不可以的(一定記?。?。是先計算 0x 得 到的結果為 1 或則 0;再用

49、0,或 1 與 10 比較得到的總是真(為 1)。所以一定要用 (0x)&(x10) 表示比 0 大比 10小。3)i f語句else 是與最接近的 if 且沒有 else 的相組合的。4)條件表達式:表達式 1 ? 表達式 2 : 表達式 3注意是當非0時候 是表達式2的數值,當為0是就是表達式2的數值??荚嚳谠E:真前假后。5) switch 語句:a) 一定要注意有break和沒有break的差別,書上(34頁)的兩個例子,沒有break 時候,只要有一個case匹配了,剩下的都要執(zhí)行,有break則是直接跳出了 swiche語 句。b) switch 只可以和break 一起用,不可以和

50、continue用。c) switch(x) x:是整型常量,字符型常量,枚舉型數據。case 1:.不可以是變量。case 2:第四章1) 三種循環(huán)結構:a ) for (); while() ; do- while() 三種。b ) for循環(huán)當中必須是兩個分號,千萬不要忘記。c )寫程序的時候一定要注意,循環(huán)一定要有結束的條件,否則成了死循環(huán)。d) do-while()循環(huán)的最后一個while();的分號一定不能夠丟。(當心上機改錯),do while循環(huán)是至少執(zhí)行一次循環(huán)。2) break 和 contin ue 的差別記憶方法: break :是打破的意思,(破了整個循環(huán))所以看見

51、break 就退出真?zhèn)€一層循環(huán)。 continue : 是繼續(xù)的意思,(繼續(xù)循環(huán)運算) ,但是要結束本次循環(huán),就是循環(huán)體內剩 下的語句不再執(zhí)行,跳到循環(huán)開始,然后判斷循環(huán)條件,進行新一輪的循環(huán)。3)嵌套循環(huán)就是有循環(huán)里面還有循環(huán),這種比較復雜,要一層一層一步一步耐心的計算,一般 記住兩層是處理二維數組的。4)while (c=getchar() )!= n ) 和 while (c=getchar() != n )的差別 先看 a = 3 != 2 和 ( a=3)!=2 的區(qū)別:(!二號的級別高于二號所以第一個先計算3 ! =2)第一個a的數值是得到的1第二 個 a 的數值是 3??荚囎⒁恻c

52、 : 括號在這里的重要性。第五章函數:是具有一定功能的一個程序塊;是 C語言的基本組成單位1)函數的參數,返回數值(示意圖) :mai n()nt a = 5,b=6,c;c = addb).調用函數printf( %d”c);*-*a,b 是實參整個函數得到一個數值就是TAdd函數的返回數值。程序是在從上往下順序執(zhí) 行,當碰到了函數add后, 把a, b的數值穿給調用函 數,程序暫時中斷等待返 回數值。當得到了返回數 值后,再順序的往下執(zhí)行intadd ( int x, int y) . 被調用函數x,y是形式參數int乙*函數返回數值是整型z=x+y;return z;.z就是這個add函

53、數計算后得到的結果,就是函數返回給主程序的返回數值。2) 定要注意參數之間的傳遞實參和形參之間 傳數值,和傳地址的差別。(考試的重點)傳數值的話,形參的變化不會改變實參的變化。傳地址的話,形參的變化就會有可能改變實參的變化3) 函數聲明的考查:一定要有:函數名,函數的返回類型,函數的參數類型。 不一定要有:形參的名稱。4) 要求掌握的庫函數:sqrt() fabs() pow() sin()其中 pow(a,b)是重點。23是由 pow(2,3)表示的。第六章指針變量的本質是用來放地址,而一般的變量是放數值的。int *p 中*p 和p的差別:*p可以當做變量來用;*的作用是取后面地址p里面的

54、數值 p 是當作地址來使用。*p+ 和 ( *p )+的之間的差別:改錯題目中很重要*p+ 是 地址會變化。( *p )+ 是數值會要變化。三名主義:(考試的重點)數組名:表示第一個元素的地址。數組名不可以自加,他是地址常量名。 (考了很多 次)函數名:表示該函數的入口地址。字符串常量名:表示第一個字符的地址。考試重要的話語:指針變量是存放地址的。并且指向哪個就等價哪個,所有出現*p的地方都可以用它等價 的代替。例如: int a=2, *p=&a;*p=*p+2;(由于*p指向變量a ,所以指向哪個就等價哪個,這里*p等價于a,可以相當于是a=a+2)指針變量兩種初始化方法一: int a=

55、2 , *p=&a;( 定義的同時初始化 )方法二: int a=2 , *p;(定義之后初始化 )p=&a;第七章1)一維數組的重要概念:對 a10 這個數組的討論。1、a表示數組名,是第一個元素的地址,也就是元素a10的地址。2、a是地址常量,所以只要出現 a+,或者是a=a+2賦值的都是錯誤的。3、a是一維數組名,所以它是列指針,也就是說a+1是跳一列。對 a33 的討論。1、a 表示數組名,是第一個元素的地址,也就是元素 a10 的地址。2、a是地址常量,所以只要出現 a+,或者是a=a+2賦值的都是錯誤的。3、a 是二維數組名,所以它是行指針,也就是說 a+1 是跳一行。4、a0、a1、a2也都是地址常量,不可以對它進行賦值操作,同時它們都是列指 針, a0+1 , a1+1 , a2+1 都是跳一列。5、注意a和a0 、a1、a2是不同的,它們的基類型是不同的。前者是一行元素, 后三者是一列元素。2) 二維數組做題目的技巧:如果有 a33=1,2,3,4,5,6,7,8,9 這樣的題目。步驟一:把他們寫成:第一列 第二列 第三列a0123第一行a1456第二行a2789第三行步驟二:這樣作題目間很簡單:*(a0+1)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論