




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
47/47全國計算機二級公共基礎知識一、數據結構與算法數據結構指的是數據之間的相互關系,即數據的組織形式。數據結構用來反映一個數據的內部構成,即一個數據由哪些成分構成、以什么方式構成、呈現什么樣的結構。數據結構有邏輯上的數據結構和物理上的數據結構之分。邏輯上的數據結構反映數據之間的邏輯關系,而物理上的數據結構反映數據在計算機內部的存儲安排。數據結構是數據存在的形式。算法是解題的步驟,是指令的有限序列。它們規定了解決某一特定類型問題的一系列運算,是對解題方案的準確與完整的描述。一個問題的解決方案要以算法為基礎。1.1概念介紹◆算法的時間復雜度:算法的時間復雜度是指執行算法所需要的計算工作量。算法的工作量用算法所執行的基本運算次數來度量,而算法所執行的基本運算次數是問題規模的函數,即算法的工作量=f(n)其中n是問題的規模。例如,兩個n階矩陣相乘所需要的基本運算(即兩個實數的乘法)次數為n3,即計算工作量為n3,也就是時間復雜度為n3。◆算法的空間復雜度:算法的空間復雜度一般是指執行這個算法所需要的內存空間。◆數據的邏輯結構數據元素相互之間的關系,稱為結構。數據的邏輯結構:是指反映數據元素之間邏輯關系的數據結構。◆數據的存儲結構數據的存儲結構:是數據的邏輯結構在計算機存儲空間中的存放形式。也稱數據的物理結構。各數據元素在計算機存儲空間中的位置關系與它們的邏輯關系不一定是相同的。同一種數據的邏輯結構可以根據需要表示成任意一種或幾種不同的存儲結構。數據的順序存儲方式:是將邏輯上相鄰的結點存儲在物理位置上亦相鄰的存儲單元里。也就是將所有存儲結點相繼存入在一個連續相鄰的存儲區里。數據的鏈式存儲方式:是在存儲每個結點信息的同時,增加一個指針來表示結點間的邏輯關系。該方式不要求邏輯上相鄰結點在物理位置上亦相鄰,結點間的邏輯關系是由附加的指針字段表示的。因此,鏈式存儲結構中的每個結點都由兩部分組成:一部分用于存儲結點本身的信息,稱為數據域;另一部分用于存儲該結點的后繼結點(或前驅結點)的存儲單元地址,稱為指針域。指針域可以包含一個或多個指針,這由結點之間的關系所決定。◆線性結構和非線性結構如果在一個線性結構中,一個數據元素都沒有,則稱該數據結構為空數據結構。線性結構的邏輯特征:在一個非空的數據結構中,除第一個數據元素只有一個后繼沒有前驅、最后一個數據元素只有一個前驅沒有后繼外,其他的每一個數據元素僅有一個前驅和一個后繼。線性結構也稱為線性表。注:某個元素直接相鄰的前一個元素稱為此元素的前驅、直接相鄰的后一個元素稱為此元素的后繼。非線性結構的邏輯特征:在一個非空的數據結構中,某數據元素可能有多于一個前驅或后繼。如樹型結構等。習題:(一)選擇題(單選)1.算法的時間復雜度是指(D)A)算法的執行時間B)算法所處理的數據量C)算法程序中的語句或指令條數D)算法在執行過程中所需要的基本運算次數1.2線性表線性表是由同一類型的數據元素構成的一種線性的數據結構。是一種最基本、最常用的數據結構。線性表常用的存儲方式有兩種:順序存儲方式和鏈接存儲方式。線性表的數學定義:L=(a1,a2,a3,…,an)說明:線性表是具有相同類型的n(n≥0)個數據元素組成的有限序列。L:為表的名稱。ai(i=1,2,…,n):為表的元素,也稱為線性表中的一個結點。它可以是一個數、一個字符、一個字符串,也可以是一條記錄,還可以是復雜的數據對象。a1是a2的前驅、a2是a1的后繼,a2是a3的前驅、a3是a2的后繼,…,依次類推。n:為線性表的長度(元素個數),當n=0時稱線性表為空表。線性表的特點:在非空的線性表中:存在唯一的一個“第一個元素”(根結點)。存在唯一的一個“最后一個元素”(終端結點)。除第一個元素外,其他的元素均有唯一的前驅。除最后一個元素外,其他的元素均有唯一的后繼。1.3棧和隊列棧和隊列本質上也是線性表,只是它們的操作受到了限制。1.3棧是限定僅在表尾進行插入和刪除操作的線性表。表尾稱為棧頂(top),表頭稱為棧底(bottom)。棧這種數據結構,類似于子彈夾,底端是封閉的,最后壓入的子彈總是最先被彈出,最先壓入的子彈只能最后被彈出。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后能被刪除的元素。即棧是按照“先進后出”或“后進先出”的原則組織數據的。因此,棧也被稱為“先進后出”表或“后進先出”表。由此可以看出,棧具有記憶作用。1.3隊列是指只允許在表的一端插入元素、在另一端刪除元素的線性表。允許插入的一端稱為隊尾(rear),允許刪除的一端稱為隊頭(front)。在隊列這種數據結構中,最先插入的元素將最先能夠被刪除,反之最后插入的元素將最后才能被刪除。因此,隊列又稱為“先進先出”或“后進后出”的線性表。1.4樹和二叉樹1.4樹形結構是數據結構中一種很重要的非線性結構。在樹形結構中,所有數據元素之間的關系具有明顯的層次特性。樹形結構很像自然界中的樹,像一棵倒長的樹。在現實生活中,能用樹形結構表示的例子很多。參見下面的圖形:樹形結構的基本特征及基本術語:以下圖為例:樹的根:在樹形結構中,沒有前驅的結點只有一個,稱為樹的根結點,簡稱為樹的根。如:上圖中的“R”。父結點:在樹形結構中,每一個結點(除了樹的根結點)只有一個前驅,稱為父結點。如:上圖中的“R”是K、P、Q、D的父結點;“N”是X、Y的父結點。子結點:在樹形結構中,每個結點可以有多個后繼,稱為該結點的子結點。如:上圖中的K、P、Q、D是“R”的子結點;X、Y是“N”的子結點。葉子結點:在樹形結構中,沒有后繼的結點稱為葉子結點,也稱終端結點。如:上圖中的C、M、F、E、X、G、S、L、Z、A均為葉子結點。結點的度:在樹形結構中,一個結點所擁有的后繼個數稱為該結點的度。如:上圖中根結點R的度是4;結點T的度是3;結點P、Q、D、O、Y、W的度都為1。葉子結點的度為0。樹的度:在樹形結構中,所有結點中的最大的度稱為樹的度。如:上圖中樹的度為4,因為結點R的度最大,是4。樹的深度:在樹形結構中,樹的最大層數稱為樹的深度(或高度)。如:上圖中樹的深度是5。說明:樹形結構具有明顯的層次關系,即樹是一種層次結構。在樹形結構中一般按如下原則分層:1)根結點在第1層。2)其余結點的層數等于其父結點的層數加1。子樹:在樹形結中,以某結點的一個子結點為根構成的樹稱為該結點的一棵子樹。如:上圖中,結點R有4棵子樹,它們分別以K、P、Q、D為根結點;結點P有1棵子樹,其根結點為N;結點T有3棵子樹,它們分別以W、Z、A為根結點。在樹形結構中,子樹間互不相交,葉子結點沒有子樹。森林:森林是M(M≥0)棵互不相交的樹的集合。刪去一棵樹的根,就得到一個森林;反之,加上一個結點作樹根,森林就變為一棵樹。1.4(1)二叉樹的特點①非空二叉樹只有一個根結點。②二叉樹中的每個結點,最多有兩棵子樹,分另稱為該結點的左子樹與右子樹。當一個結點即沒有左子樹也沒有右子樹時,該結點就是葉子結點。在下面的圖中,左面是只有根結點的二叉樹,右面是深度為4的二叉樹:(2)滿二叉樹與完全二叉樹1)滿二叉樹:滿二叉樹是指除最后一層外,每一層上的所有結點都有兩個子結點。就是說,在滿二叉樹中,每一層上的結點數都達到最大值,即在滿二叉樹的第k層上有2i-1(k≥1)個結點,且深度為k的滿二叉樹有2k-1(k≥1)個結點。在下圖中分別是深度為2、3、4的滿二叉樹:滿二叉樹中不存在度數為1的結點,每個分支結點均有兩棵深度相同的子樹,且葉子結點都在最下一層。2)完全二叉樹:若一棵二叉樹最多只有最下面的兩層上結點的度數可以小于2,并且最下一層上的所有結點都集中在該層最左邊的若干位置上,則此二叉樹稱為完全二叉樹。在下圖的4棵二叉樹中,分別是深度為3和4的完全二叉樹:滿二叉樹是完全二叉樹,完全二叉樹不一定是滿二叉樹。在滿二叉樹的最下一層上,從最右邊開始連續刪去若干結點后得到的二叉樹仍然是一棵完全二叉樹。在完全二叉樹中,若某個結點沒有左子結點,則它一定沒有右子結點,即該結點必是葉子結點。(3)二叉樹的性質假設定義根結點的層數為1(注意:有些資料中規定根結點的層數為0)。性質1:在二叉樹的第i層上,最多有2i-1(i≥1)個結點。性質2:深度為k的二叉樹最多有2k-1(k≥1)個結點。性質3:在任意二叉樹中,若度為0的結點(即葉子結點)的個數為n0,度為2的結點的個數為n2,則:n0=n2+1(對于完全二叉樹還有如下屬性)性質4:具有n個結點的完全二叉樹,其深度為[log2n]+1。注:[log2n]表示取log2n的整數部分。性質5:如果將一棵有n個結點的完全二叉樹自頂向下、同一層自左向右連續給結點編號1、2、3、…、n,則對于任意結點i(1≤i≤n)有如下結論:1)如果i=1,此結點為根結點,無前驅(即無父結點);如果i>1,則該結點的父結點編號為Int(i/2)。也可表示成[i/2],都表示取整數。2)如果2i>n,則結點i無左子結點,顯然也沒有右子結點,是葉子結點。如果2i≤n,則結點i的左子結點是編號為2i的結點。3)如果2i+1>n,則結點i無右子結點。如果2i+1≤n,則結點i的右子結點的編號為2i+1。(4)二叉樹的遍歷二叉樹的遍歷就是遵從某種次序,訪問二叉樹中的所有結點,使得每個結點僅被訪問一次。一棵非空二叉樹是由根結點、左子樹和右子樹三部分組成。因此遍歷一棵非空二叉樹的問題就可以分解為三項“子任條”:①訪問根結點(假設用D表示)。②遍歷左子樹(假設用L表示)。③遍歷右子樹(假設用R表示)。在遍歷二叉樹的過程中,一般先遍歷左子樹,然后再遍歷右子樹。在先左后右的原則下,根據訪問根結點的次序,二叉樹的遍歷可分為三種:前序遍歷(DLR)、中序遍歷(LDR)、后序遍歷(LRD)。以下圖中的二叉樹為例:前序遍歷(DLR):首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹。在遍歷左、右子樹時,仍然先訪問子樹的根結點,然后遍歷其左子樹,最后遍歷其右子樹。即,前序遍歷是指訪問所有的根結點(包括子樹的根結點)都在遍歷其左、右子樹之前。前序遍歷的操作:若二叉樹為空,則結束反返回。否則:①訪問根結點②前序遍歷左子樹③前序遍歷右子樹如,對上圖中的二叉樹進行前序遍歷的結果是:FCADBEGHP中序遍歷(LDR):首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。在遍歷左、右子樹時,仍然先遍歷其左子樹,然后訪問子樹的根結點,最后遍歷其右子樹。即,中序遍歷是指訪問所有的根結點(包括子樹的根結點)都在遍歷其左子樹之后、在遍歷其右子樹之前。中序遍歷的操作:若二叉樹為空,則結束反返回。否則:①中序遍歷左子樹②訪問根結點③中序遍歷右子樹如,對上圖中的二叉樹進行中序遍歷的結果是:ACBDFEHGP后序遍歷(LRD):首先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。在遍歷左、右子樹時,仍然先遍歷其左子樹,然后遍歷其右子樹,最后訪問子樹的根結點。即,后序遍歷是指訪問所有的根結點(包括子樹的根結點)都在遍歷其左、右子樹之后。后序遍歷的操作:若二叉樹為空,則結束反返回。否則:①后序遍歷左子樹②后序遍歷右子樹③訪問根結點如,對上圖中的二叉樹進行后序遍歷的結果是:ABDCHPGEF1.5查找查找又稱檢索。查找是指在一個給定的數據結構中查找某個指定的元素。通常,根據不同的數據結構,應采用不同的查找方法。1.5.1順序查找順序查找又稱順序搜索或線性查找。順序查找一般是指在線性表中查找指定的元素。順序查找的基本思想:在n個結點組成的線性表中,從線性表的一端開始,依次將線性表中的元素與被查元素進行比較,若相等則表示找到,即查找成功;若線性表中所有的元素都與被查元素進行了比較但都不相等,則表示線性表中沒有要找的元素,即查找失敗。在順序查找中,查找成功時最多需要比較n次、最少比較1次、平均比較次數約為表長的一半。查找失敗時比較n+1次。順序查找的時間復雜度為O(n)。對于無序表(即表中的元素的排列是無序的)和鏈式存儲結構的線性表(有序的和無序的),只能用順序查找。順序查找的優點:算法簡單而適用范圍廣。對表中元素的排列次序無要求,既可以是按關鍵字排列的有序表,也可以是無序表;對表的存儲結構也無任何要求,既適用于順序存儲的順序表,也適用于鏈接存儲的鏈表。順序查找的缺點:查找效率低,平均查找長度較大。當n很大時不宜采用順序查找。1.5.2二分查找二分查找又稱折半查找。它是一種查找效率較高的查找方法。該方法只適用于順序存儲結構的有序表。通常是指有序表中的元素按值升序排列(非遞減有序排列)。二分查找不能用于鏈式存儲結構的線性表。二分查找的基本思想:參見“C語言程序設計”或“VB程序設計”課件的相應內容動畫。對于長度為n的有序線性表,查找成功時最多需要比較log2(n+1)次、最少比較1次、平均查找長度近似log2n。當查找失敗時,比較log2n或log2(n+1)次。不管二分查找成功與否,其時間復雜度均為O(log2n)。二分查找的最壞性能和平均性能相當接近。1.6排序排序就是將文件中的記錄進行整理,使之按照關鍵字進行遞增或遞減的順序排列起來,成為一個有序序列的過程。在本節所介紹的排序方法中,其排序的對象一般認為是順序存儲的線性表,在程序設計語言中就是一維數組。這里的排序算法,都是針對升序排序。1.6.1交換排序交換排序是兩兩比較待排序記錄的關鍵字,若發現兩個記錄關鍵字的次序相反時即進行交換,直到沒有反序的記錄為止。下面介紹兩種常用的交換排序。(1)冒泡排序冒泡排序的基本思想:參見“C語言程序設計”或“VB程序設計”課件的相應內容動畫。對于長度為n的線性表,在最壞情況下,冒泡排序需要經過n/2遍的掃描,比較次數為n(n-1)/2。冒泡排序算法的平均時間復雜度為O(n2),空間復雜度為O(1)。(2)快速排序快速排序的基本思想:參見下圖:從線性表中選取一個元素,設為T,將線性表后面小于T的元素移到前面,將線性表前面大于T的元素移到后面,結果就把線性表分成了兩部分(稱為兩個子表),T插入到其分界線的位置處,這個過程稱為線性表的分割。通過對線性表的一次分割,就以T為分界線,將線性表分成了前后兩個子表,且前面子表中的所有元素均不大于T,后面子表中的所有元素均不小于T。如果對分割后的各子表再按上述原則進行分割,并且這種分割過程可以一直做下去,隨著對各子表不斷地進行分割,劃分出的子表會越來越多(一次只能對一個子表進行再分割處理),直到所有子表中的元素都排好序為止,則此時的線性表就變成了有序表。對于長度為n的線性表:在最壞情況下,快速排序比較次數為n(n-1)/2。算法的時間復雜度為O(n2),空間復雜度為O(n)。在最好情況下,快速排序算法的時間復雜度為O(nlog2n),空間復雜度為O(log2n)。快速排序算法的平均時間復雜度是O(nlog2n),平均比較次數不大于(n+1)log2n1.6.2插入排序插入排序是每次將一個待排序的記錄按其關鍵字大小,插入到前面已排好的序列中的適當位置,直到全部記錄插入為止。(1)直接插入排序快速排序的基本思想:請查看相關資料。對于長度為n的線性表:在最壞情況下,直接插入排序比較次數為n(n-1)/2。算法的時間復雜度為O(n2)。(2)希爾排序希爾排序的基本思想:請查看相關資料。對于長度為n的線性表:在最壞情況下希爾排序比較次數為O(n1.5)。1.6.3選擇排序選擇排序的基本思想是:每一遍在n-i+1(i=1,2,…,n-1)個待排序記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄,直到全部記錄排完為止。(1)直接選擇排序選擇排序的基本思想:參見“C語言程序設計”或“VB程序設計”課件的相應內容動畫。在最壞情況下,直接選擇排序比較次數為n(n-1)/2。(2)堆排序希爾排序的基本思想:請查看相關資料。在最壞情況下,堆排序比較次數為O(nlog2n)。習題:(一)選擇題(單選)1.下列敘述中正確的是(D)A)棧是“先進先出”的線性表B)隊列是“先進后出”的線性表C)循環隊列是非線性結構D)有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構2.下列關于棧的敘述中正確的是(A)A)棧頂元素最先被刪除B)棧頂元素最后才能被刪除C)棧底元素永遠不能被刪除D)以上三種說法都不對3.下列敘述中正確的是(B)A)有一個以上根結點的數據結構不一定是非線性結構B)只有一個根結點的數據結構不一定是線性結構C)循環鏈表是非線性結構D)雙向鏈表是非線性結構4.支持子程序調用的數據結構是(A)A)棧B)樹C)隊列D)二叉樹5.某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是(C)A)10B)8C)6D)4提示:在任意二叉樹中,若度為0的結點(即葉子結點)的個數為n0,度為2的結點的個數為n2,則:n0=n2+1即n0(葉子結點數)=5+1=66.某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第一層)(D)A)3B)4C7.下列排序方法中,最壞情況下比較次數最少的是(D)A)冒泡排序B)簡單選擇排序C)直接插入排序D)堆排序8.下列敘述中正確的是(A)A)對長度為n的有序鏈表進行查找,最壞的情況下需要的比較次數為nB)對長度為n的有序鏈表進行對分查找,最壞的情況下需要的比較次數為(n/2)C)對長度為n的有序鏈表進行對分查找,最壞的情況下需要的比較次數為(log2n)D)對長度為n的有序鏈表進行對分查找,最壞的情況下需要的比較次數為(nlog2n)(二)填空題1.假設用一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有________個元素。答案:202.一個隊列的初始狀態為空。現將元素A、B、C、D、E、F、5、4、3、2、1一次入隊,然后再一次退隊,則元素退隊的順序為________________________。答案:A、B、C、D、E、F、5、4、3、2、13.設某循環隊列的容量為50,如果頭指針front=45(指向隊頭元素的前一個位置),尾指針rear=10(指向隊尾元素),則該循環隊列中共有_____個元素。答案:154.設二叉樹如下:AABCDEFGH對該二叉樹進行后序遍歷的結果為________________________。答案:E、D、B、G、H、F、C、A5.一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF,則后序遍歷結果為_________。答案:DEBFCA6.有序線性表能進行二分查找的前提是該線性表必須是________存儲。答案:順序二、軟件工程基礎計算機軟件是計算機系統中與硬件相互依存的另一部分,是包括程序、數據及相關文檔的完整集合。軟件由兩部分組成:一是機器可執行的程序和數據;二是機器不可執行的,與軟件開發、運行、維護、使用等有關的文檔。軟件的分類軟件按功能可以分為:應用軟件、系統軟件、支撐軟件(或工具軟件)。應用軟件:是為解決特定領域的應用而開發的軟件。系統軟件:是計算機管理自身資源,提高計算機使用效率并為計算機用戶提供各種服務的軟件。支撐軟件:是介于系統軟件和應用軟件之間,協助用戶開發軟件的工具性軟件。軟件生命周期通常將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為軟件生命周期。參見下圖:結構化分析方法結構化分析的常用工具:數據流圖(DFD):是描述數據處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統的功能建模。數據字典(DD):是結構化分析方法的核心。判定樹判定表結構化設計方法常見的過程設計工具:圖形工具:程序流程圖,N-S圖,PAD圖(問題分析圖),HIPO表格工具:判定表。語言工具:PDL(偽碼)軟件設計的基本原理1)抽象:是一種思維工具,就是把事物本質的共同特性提取出來而不考慮其他細節。2)模塊化:是指把一個待開發的軟件分解成若干小的簡單的部分。如高級語言中的過程、函數、子程序等。每個模塊可以完成一個特定的子功能,各個模塊可以按一定的方法組裝起來成為一個整體,從而實現整個系統的功能。3)信息隱蔽:是指在一個模塊內包含的信息(過程或數據),對于不需要這些信息的其他模塊來說是不能訪問的。4)模塊獨立性:是指每個模塊只完成系統要求的獨立的子功能,并且與其他模塊的聯系最少且接口簡單。模塊的獨立程度是評價設計好壞的重要度量標準。衡量軟件的模塊獨立性使用耦合性和內聚性兩個定性的度量標準。內聚性:是一個模塊內部各個元素間彼此結合的緊密程度的度量。內聚是從功能角度來度量模塊內的聯系。內聚性是信息隱蔽和局部化概念的自然擴展。一個模塊的內聚性越強則該模塊的模塊獨立性越強。作為軟件結構設計的設計原則,要求每一個模塊的內部都具有很強的內聚性,它的各個組成部分彼此都密切相關。耦合性:耦合性是模塊間相互連接的緊密程度的度量。一個模塊與其他模塊的耦合性越強則該模塊的模塊獨立性越弱。原則上講,模塊化設計總是希望模塊間的耦合表現為非直接耦合方式。但是,由于問題所固有的復雜性和結構化設計的原則,非直接耦合往往是不存在的。耦合性與內聚性是模塊獨立性的兩個定性標準,耦合性與內聚性是相互聯系的。在程序結構中,各模塊的內聚性越強,則耦合性越弱。一般優秀的軟件設計,應盡量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的的內聚性,有利于提高模塊的獨立性。軟件測試軟件測試是在軟件投入運行前對軟件需求、設計、編碼的最后審核。軟件測試是為了發現錯誤而執行程序的過程。軟件測試應當制定明確的測試計劃并按計劃執行。軟件測試的目的:是發現錯誤。軟件測試方法和技術:若從是否需要執行被測軟件的角度,可以分為靜態測試和動態測試方法。若按照功能劃分可以分為白盒測試和黑盒測試方法。靜態測試:包括代碼檢查、靜態結構分析、代碼質量度量等。靜態測試不實際運行軟件,主要通過人工進行。動態測試:是基于計算機的測試,是為了發現錯誤而執行程序的過程。需要精心設計一批測試用例,并利用這些測試用例去運行程序,以發現程序錯誤的過程。測試用例的格式為:[(輸入值集),(輸出值集)]白盒測試:也稱結構測試或邏輯驅動測試。它是根據軟件產品的內部工作過程,檢查內部成分,以確認每種內部操作符合設計規格要求。白盒測試把測試對象看作一個打開的盒子,允許測試人員利用程序內部的邏輯結構及有關信息來設計或選擇測試用例,對程序所有的邏輯路徑進行測試。通過在不同點檢查程序的狀態來了解實際的運行狀態是否與預期的一致。所以,白盒測試是在程序內部進行,主要用于完成軟件內部操作的驗證。白盒測試的主要方法有邏輯覆蓋、基本路徑測試等。黑盒測試:也稱功能測試或數據驅動測試。黑盒測試是對軟件已經實現的功能是否滿足需求進行測試和驗證。黑盒測試完全不考慮程序內部的邏輯結構和內部特征,只依據程序的需求和功能規格說明,檢查程序的功能是否符合它的功能說明。所以,黑盒測試是在軟件接口處進行,完成功能驗證。黑盒測試只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息,并且保持外部信息(如數據庫或文件)的完整性。黑盒測試主要診斷功能不對或遺漏、界面錯誤、數據結構或外部數據庫訪問錯誤、性能錯誤、初始化和終止條件錯誤。黑盒測試方法主要有等價類劃分法、邊界值分析法、錯誤推測法、因果圖等,主要用于軟件確認測試。程序調試在對程序進行了成功的測試之后,將進入程序調試(通常稱Debug,即排錯)。程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤,并找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調試主要在開發階段。習題:(一)選擇題(單選)1.軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是(C)A)編譯程序B)操作系統C)教務管理系統D)匯編程序2.軟件按功能可分為:應用軟件、系統軟件、和支撐軟件(或工具軟件)。下面屬于系統軟件的是(B)A)編輯軟件B)操作系統C)教務管理系統D)瀏覽器、3.軟件(程序)調試的任務是(A)A)診斷和改正程序中的錯誤B)盡可能多的發現程序中的錯誤C)發現并改正程序中的所有錯誤D)確定程序中錯誤的性質4.下面敘述中錯誤的是(A)A)軟件測試的目的是發現錯誤并改正錯誤B)對被調試的程序進行“錯誤定位”是程序調試的必要步驟C)程序調試通常也稱為DebugD)軟件測試應嚴格執行測試計劃,排除測試的隨意性5.耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是(B)A)提高耦合性、降低內聚性有利于提高模塊的獨立性B)降低耦合性、提高內聚性有利于提高模塊的獨立性C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度D)內聚性是指模塊間互相連接的緊密程度6.數據流圖(DFD圖)是(C)A)軟件概要設計的工具B)軟件詳細設計的工具C)結構化方法的需求分析工具D)面向對象方法的需求分析工具7.軟件生命周期可分為定義階段,開發階段和維護階段。詳細設計屬于(B)A)定義階段B)開發階段C)維護階段D)上述三個階段8.在軟件開發中,需求分析階段產生的主要文檔是(D)A)軟件集成測試計劃B)軟件詳細設計說明書C)用戶手冊D)軟件需求規格說明書9.結構化程序所要求的基本結構不包括(B)A)順序結構B)GOTO跳轉C)選擇(分支)結構D)重復(循環)結構10.下面描述中錯誤的是(A)A)系統總體結構圖支持軟件系統的詳細設計B)軟件設計是將軟件需求轉換為軟件表示的過程C)數據結構與數據庫設計是軟件設計的任務之一D)PAD圖是軟件詳細設計的表示工具(二)填空題1.軟件測試可分為白盒測試和黑盒測試。基本路徑測試屬于______________測試。答案:白盒2.符合結構化原則的三種基本控制結構是:選擇結構、循環結構和______________。答案:順序結構3.軟件是________、數據和文檔的集合。答案:程序4.對軟件設計的最小單位(模塊或程序單元)進行的測試通常為_______測試。答案:單元或模塊三、數據庫設計基礎計算機應用的三大領域:科學計算、數據處理、過程控制。數據庫系統的基本概念數據(Data):就是描述事物的符號記錄。數據庫(DB):是數據的集合,它具有統一的結構形式并存放于統一的存儲介質內,是多種應用數據的集成,并可被各個應用程序所共享。數據庫中的數據具有“集成”、“共享”的特點。數據庫管理系統(DBMS):是數據庫的機構,是一種系統軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等。數據庫管理系統是數據庫系統的核心。數據庫管理系統一般提供相應的數據語言(DataLanguage)來完成相應的功能:數據定義語言(DDL):負責數據的模式定義與數據的物理存取構建。數據操縱語言(DML):負責數據的操縱,包括查詢及增、刪、改等操作。數據控制語言(DCL):負責數據完整性、安全性的定義與檢查以及并發控制、故障恢復等功能,包括系統初啟程序、文件讀寫與維護程序、存取路徑管理程序、緩沖區管理程序、安全性控制程序、完整性檢查程序、并發控制程序、事務管理程序、運行日志管理程序、數據庫恢復程序等。數據庫管理員(DBA):由于數據庫的共享性,因此對數據庫的規劃、設計、維護、監視等需要有專人管理,稱他們為數據庫管理員。數據庫系統(DBS):由數據庫(數據)、數據庫管理系統(軟件)、數據庫管理員(人員)、系統硬件平臺(硬件)、系統軟件平臺(軟件)這五部分組成,稱為數據庫系統。數據庫應用系統(DBAS):是數據庫系統再加上應用軟件及應用界面這三者所組成。E-R模型該模型將現實世界的要求轉化成實體、聯系、屬性等幾個基本概念,以及它們間的兩種基本聯接關系,并且可以用一種圖非常直觀地表示出來。下面是E-R模型的基本概念。目前較為有名的概念模型有E-R模型、擴充的E-R模型、面向對象模型及謂詞模型等。實體:現實世界中的事物可以抽象成為實體。實體是概念世界中的基本單位,它們是客觀存在的且又相互區別的事物。凡是有共性的實體可組成一個集合稱實體集。如學生A和學生B,他們都是實體,他們又都是學生,從而組成一個學生實體集。屬性:現實世界中的事物均有一些特性,這些特性可以用屬性來表示。屬性刻畫了實體的特征。一個實體往往可以有若干個屬性。聯系:現實世界中事物間的關聯稱為聯系。在概念世界中聯系反映了實體集間的一定關系。如工人與設備間的操作關系,上、下級間的領導關系等。實體集間的聯系有多種,就實體集的個數而言有:1)兩個實體集間的聯系。2)多個實體集間的聯系。3)一個實體集內部的聯系:是一個實體集內的不同實體間的聯系。實體集間聯系的個數可以是單個也可以是多個,包括:一對一的聯系,簡記為1:1一對多或多對一的聯系,簡記為1:M或M:1(其中M也可以小寫)多對多的聯系,簡記為M:N或m:nE-R模型由上面三個基本概念組成。由實體、聯系、屬性三者結合起來才能表示現實世界。E-R圖:E-R模型可以用一種非常直觀的圖的形式表示,這種圖稱為E-R圖。在E-R圖中我們分別用下面不同的幾何圖形表示E-R模型中的三個概念與兩個聯接關系。1)實體集表示法用矩形表示實體集,在矩形內寫上該實體集的名字。如實體集學生(student)、課程(course)可表示為:2)屬性表示法用橢圓形表示屬性,在橢圓形內寫上該屬性的名稱。如學生有屬性:學號(S#)、姓名(Sn)及年齡(Sa),可表示為:3)聯系表示法用菱形表示聯系,在菱形內寫上聯系名。如學生與課程間的聯系SC,可表示為:上面是三個基本概念分別用三種幾何圖形表示。下面是它們之間的聯接關系的圖形表示。4)實體集或聯系與屬性間的聯接關系屬性依附于實體集,屬性也依附于聯系,因此它們之間分別有聯接關系。參見下圖:其中:C#(課程號)、Cn(課程名)、P#(預修課號)5)實體集與聯系間的聯接關系如下圖表示實體集與聯系間的聯接關系:還可以在線段邊上注明其對應的函數關系,如1:1、1:n、n:m等。下圖表示student與course間有多對多聯系:兩個實體集間聯系叫二元聯系,多個實體集間聯系叫多元聯系。下圖聯系FPU是一種三元聯系(工廠、產品與用戶間的聯系):下面是實體間多種聯系圖:(a)圖:公司職工(enployee)間上、下級管理(manage)的聯系。即一個實體集內部可以有多種聯系。(b)圖:教師(T)與學生(S)之間可以有教學(E)聯系也可以有管理(M)聯系。即實體集間可以有多種聯系。下面是E-R圖的一個實例圖關系模型關系模型采用二維表來表示,簡稱表。二維表由表框架(Frame)及表的元組(Tuple)組成。表框架由n個命名的屬性(Attribute)組成,n稱為屬性元數(Arity)。每個屬性有一個取值范圍,稱為值域(Domain)。表框架對應了關系的模式,即類型的概念。在表框架中按行可以存放數據,每行數據稱為元組,實際上,一個元組是由n個元組分量所組成,每個元組分量是表框架中每個屬性的投影值。一個表框架可以存放m個元組,m稱為表的基數(Cardinality)。一個n元表框架及框架內m個元組構成了一個完整的二維表。關系框架與關系元組構成了一個關系。一個語義相關的關系集合構成一個關系數據庫。關系的框架稱為關系模式,而語義相關的關系模式集合構成了關系數據庫模式。滿足下面7個性質的二維表稱為關系(Relation):1)元組個數有限性:二維表中元組個數是有限的。2)元組的惟一性:二維表中元組均不相同。3)元組的次序無關性:二維表中元組的次序可以任意交換。4)元組分量的原子性:二維表中元組的分量是不可分割的基本數據項。5)屬性名惟一性:二維表中屬性名各不相同。6)屬性的次序無關性:二維表中屬性與次序無關,可任意交換。7)分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域。以二維表(關系)為基本結構所建立的模型稱為關系模型。在關系模型中的一個重要概念是鍵(Key)或碼。鍵具有標識元組、建立元組間聯系等重要作用。鍵或碼:在二維表中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。候選鍵或候選碼:二維表中可能有若干個鍵,它們稱為該表的候選鍵(CandidataKey)或候選碼。主鍵或主碼:從二維表的所有候選鍵中選取一個作為用戶使用的鍵,稱為主鍵(PrimaryKey)或主碼。一般主鍵也簡稱為鍵或碼。外鍵或外碼:表A中的某屬性集是某表B的鍵,則稱該屬性集為A的外鍵(ForeignKey)或外碼。表中一定要有鍵,因為如果表中所有屬性的子集均不是鍵,則表中屬性的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年川南幼兒師范高等專科學校高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025年山西管理職業學院高職單招職業適應性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年山西體育職業學院高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025年宜春職業技術學院高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025年安徽廣播影視職業技術學院高職單招職業適應性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年寧德職業技術學院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年寧夏民族職業技術學院高職單招職業適應性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年寧夏體育職業學院高職單招職業適應性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年天津鐵道職業技術學院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- ASNT培訓課件教學課件
- 輪扣式模板支撐架安全專項施工方案
- 起重傷害事故現場應急處置卡
- 公安機關業務技術用房和辦公用房規劃設計規范
- (完整版)食品安全管理制度文本(完整版)
- DB4228∕T 24-2021 包裝用箬葉
- 運維工作大綱
- 素雅古典花鳥中國風PPT模板
- 大數據時代下的人力資源管理創新研究——以智聯招聘為例
- 放棄治療同意書
- USP 1225檢驗方法驗證和USP1226檢驗方法確認(中英文稿)
- IDC數據中心項目建議書范文
評論
0/150
提交評論