Ⅰ 常用數據結構有哪些
數據結構分為8類有:數組、棧、隊列、鏈表、樹、散列表、堆、圖。數據結構是指相互之間存在著一種或多種關系的數據元素的集合和該集合中數據元素之間的關系組成 。
1、數組
數組是可以再內存中連續存儲多個元素的結構,在內存中的分配也是連續的,數組中的元素通過數組下標進行訪問,數組下標從0開始。例如下面這段代碼就是將數組的第一個元素賦值為 1。
2、棧
棧是一種特殊的線性表,僅能在線性表的一端操作,棧頂允許操作,棧底不允許操作。 棧的特點是:先進後出,或者說是後進先出,從棧頂放入元素的操作叫入棧,取出元素叫出棧。
3、隊列
隊列與棧一樣,也是一種線性表,不同的是,隊列可以在一端添加元素,在另一端取出元素,也就是:先進先出。從一端放入元素的操作稱為入隊,取出元素為出隊。
4、鏈表
鏈表是物理存儲單元上非連續的、非順序的存儲結構,數據元素的邏輯順序是通過鏈表的指針地址實現,每個元素包含兩個結點,一個是存儲元素的數據域 (內存空間),另一個是指向下一個結點地址的指針域。根據指針的指向,鏈表能形成不同的結構,例如單鏈表,雙向鏈表,循環鏈表等。
5、樹
樹是一種數據結構,它是由n(n>=1)個有限節點組成一個具有層次關系的集合。把它叫做 「樹」 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。
6、散列表
散列表,也叫哈希表,是根據關鍵碼和值 (key和value) 直接進行訪問的數據結構,通過key和value來映射到集合中的一個位置,這樣就可以很快找到集合中的對應元素。
7、堆
堆是一種比較特殊的數據結構,可以被看做一棵樹的數組對象,具有以下的性質:堆中某個節點的值總是不大於或不小於其父節點的值;堆總是一棵完全二叉樹。將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆、斐波那契堆等。
8、圖
圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。
Ⅱ 程序員要學什麼
這個大綱有啥就得學啥
程序員考試大綱
一、 考試說明
1. 考試要求:
(1)掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;
(2)理解計算機的組成以及各主要部件的性能指標;
(3)掌握操作系統、程序設計語言的基礎知識;
(4)熟練掌握計算機常用辦公軟體的基本操作方法;
(5)熟練掌握基本數據結構和常用演算法;
(6)熟練掌握C程序設計語言,以及C++、Java、Visual Basic中的一種程序設計語言;
(7)熟悉資料庫、網路和多媒體的基礎知識;
(8)掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;
(9)了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;
(10)了解信息化、計算機應用的基礎知識;
(11)正確閱讀和理解計算機領域的簡單英文資料。
2.通過本考試的合格人員能根據軟體開發項目管理和軟體工程的要求,按照程序設計規格說明書編制並調試程序,寫出程序的相應文檔,產生符合標准規范的、實現設計要求的、能正確可靠運行的程序;具有助理工程師(或技術員)的實際工作能力和業務水平。
3.本考試設置的科目包括:
(1)計算機硬軟體基礎知識,考試時間為150分鍾,筆試;
(2)程序設計,考試時間為150分鍾,筆試。
二、考試范圍
考試科目1:計算機硬軟體基礎知識
1. 計算機科學基礎
1.1 數制及其轉換
二進制、十進制和十六進制等常用數制及其相互轉換
1.2 數據的表示
數的表示(原碼、反碼、補碼表示,整數和實數的機內表示方法,精度和溢出)
非數值表示(字元和漢字的機內表示、聲音和圖像的機內表示)
校驗方法和校驗碼(奇偶校驗碼、海明校驗碼)
1.3 算術運算和邏輯運算
計算機中二進制數的運算方法
邏輯代數的基本運算和邏輯表達式的化簡
1.4 數學應用
常用數值計算(矩陣、方程的近似求解、插值)
排列組合、應用統計(數據的統計分析)
1.5 常用數據結構
數組(表態數組、動態數組)、線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)、隊列、棧、樹(二叉樹、查找樹)、圖的定義、存儲和操作
1.6 常用演算法
常用的排序演算法、查找演算法、數值計算、字元串
Ⅲ 計算機二級c語言知識點
2017計算機二級c語言知識點精選
計算機二級C語言考試內容是什麼?為幫助大家更好備考3月計算機考試,我為大家分享計算機C語言二級考試知識點如下:
第一章 數據結構與演算法
1.1 演算法
1.演算法的基本概念
(1) 概念:演算法是指一系列解決問題的清晰指令。
(2) 4個基本特徵:可行性、確定性、有窮性、擁有足夠的情報。
(3) 兩種基本要素:對數據對象的運算和操作、演算法的控制結構(運算和操作時問的順序)。
(4) 設計的基本方法:列舉法、歸納法、遞推法、遞歸法、減半遞推技術和回溯法。
2.演算法的復雜度
(1) 演算法的時間復雜度:執行演算法所需要的計算工作量。
(2) 演算法的空間復雜度:執行演算法所需的內存空間。
1.2 數據結構的基本概念
數據結構指相互有關聯的數據元素的集合,即數據的組織形式。其中邏輯結構反映數據元素之間邏輯關系;存儲結構為數據的邏輯結構在計算機存儲空間中的存放形式,有順序存儲、鏈式存儲、索引存儲和散列存儲4種方式。
數據結構按各元素之間前後件關系的復雜度可劃分為:
(1) 線性結構:有且只有一個根節點,且每個節點最多有一個直接前驅和一個直接後繼的非空數據結構。
(2) 非線性結構:不滿足線性結構的數據結構。
1.3 線性表及其順序存儲結構
1.線性表的基本概念
線性結構又稱線性表,線性表是最簡單也是最常用的一種數據結構。
2.線性表的順序存儲結構
元素所佔的存儲空間必須連續。
元素在存儲空間的位置是按邏輯順序存放的。
3.線性表的插入運算
在第i個元素之前插入一個新元素的步驟如下:
步驟一:把原來第n個節點至第i個節點依次往後移一個元素位置。
步驟二:把新節點放在第i個位置上。
步驟三:修正線性表的節點個數。
在最壞情況下,即插入元素在第一個位置,線性表中所有元素均需要移動。
4.線性表的刪除運算
刪除第i個位置的元素的步驟如下:
步驟一:把第i個元素之後不包括第i個元素的n-i個元素依次前移一個位置;
步驟二:修正線性表的結點個數。
1.4 棧和隊列
1.棧及其基本運算
(1) 基本概念:棧是一種特殊的線性表,其插入運算與刪除運算都只在線性表的一端進行,也被稱為「先進後出」表或「後進先出」表。
棧頂:允許插入與刪除的一端。
棧底:棧頂的另一端。
空棧:棧中沒有元素的棧。
(2) 特點。
棧頂元素是最後插入和最早被刪除的元素。
棧底元素是最早插入和最後被刪除的元素。
棧有記憶作用。
在順序存儲結構下,棧的插入和刪除運算不需移動表中其他數據元素。
棧頂指針top動態反映了棧中元素的變化情況
(3) 順序存儲和運算:入棧運算、退棧運算和讀棧頂運算。
2.隊列及其基本運算
(1) 基本概念:隊列是指允許在一端進行插入,在另一端進行刪除的線性表,又稱「先進先出」的線性表。
隊尾:允許插入的一端,用尾指針指向隊尾元素。
排頭:允許刪除的一端,用頭指針指向頭元素的前一位置。
(2) 循環隊列及其運算。
所謂循環隊列,就是將隊列存儲空間的最後一個位置繞到第一個位置,形成邏輯上的環狀空間。
入隊運算是指在循環隊列的隊尾加入一個新元素。
當循環隊列非空(s=1)且隊尾指針等於隊頭指針時,說明循環隊列已滿,不能進行人隊運算,這種情況稱為「上溢」。
退隊運算是指在循環隊列的隊頭位置退出一個元素並賦給指定的變數。首先將隊頭指針進一,然後將排頭指針指向的元素賦給指定的變數。當循環隊列為空(s=0)時,不能進行退隊運算,這種情況稱為「下溢」。
1.5 線性鏈表
在定義的鏈表中,若只含有一個指針域來存放下一個元素地址,稱這樣的鏈表為單鏈表或線性鏈表。
在鏈式存儲方式中,要求每個結點由兩部分組成:一部分用於存放數據元素值,稱為數據域;另一部分用於存放指針,稱為指針域。其中指針用於指向該結點的前一個或後一個結點(即前件或後件)。
1.6 樹和二叉樹
1.樹的基本概念
樹是簡單的非線性結構,樹中有且僅有一個沒有前驅的節點稱為「根」,其餘節點分成m個互不相交的有限集合T1,T2,…,T}mm,每個集合又是一棵樹,稱T1,T2,…,T}mm為根結點的子樹。
父節點:每一個節點只有一個前件,無前件的節點只有一個,稱為樹的根結點(簡稱樹的根)。
子節點:每~個節點可以後多個後件,無後件的節點稱為葉子節點。
樹的度:所有節點最大的度。
樹的深度:樹的最大層次。
2.二叉樹的定義及其基本性質
(1) 二叉樹的定義:二叉樹是一種非線性結構,是有限的節點集合,該集合為空(空二叉樹)或由一個根節點及兩棵互不相交的左右二叉子樹組成。可分為滿二叉樹和完全二叉樹,其中滿二叉樹一定是完全二叉樹,但完全二叉樹不一定是滿二叉樹。二叉樹具有如下兩個特點:
二叉樹可為空,空的二叉樹無節點,非空二叉樹有且只有一個根結點;
每個節點最多可有兩棵子樹,稱為左子樹和右子樹。
(2) 二叉樹的基本性質。
性質1:在二叉樹的第k層上至多有2k-1個結點(k≥1)。
性質2:深度為m的二叉樹至多有2m-1個結點。
性質3:對任何一棵二叉樹,度為0的結點(即葉子結點)總是比度為2的結點多一個。
性質4:具有n個結點的完全二叉樹的深度至少為[log2n]+1,其中[log2n]表示log2n的整數部分。
3.滿二叉樹與完全二叉樹
(1) 滿二叉樹:滿二叉樹是指這樣的一種二叉樹:除最後一層外,每一層上的所有結點都有兩個子結點。滿二叉樹在其第i層上有2i-1個結點。
從上面滿二叉樹定義可知,二叉樹的每一層上的結點數必須都達到最大,否則就不是滿二叉樹。深度為m的滿二叉樹有2m-1個結點。
(2) 完全二叉樹:完全二叉樹是指這樣的二叉樹:除最後一層外,每一層上的結點數均達到最大值;在最後一層上只缺少右邊的若干結點。
如果—棵具有n個結點的深度為k的二叉樹,它的每—個結點都與深度為k的滿二叉樹中編號為1~n的結點——對應。
3.二叉樹的存儲結構
二叉樹通常採用鏈式存儲結構,存儲節點由數據域和指針域(左指針域和右指針域)組成。二叉樹的鏈式存儲結構也稱二叉鏈表,對滿二叉樹和完全二叉樹可按層次進行順序存儲。
4.二叉樹的遍歷
二叉樹的遍歷是指不重復地訪問二叉樹中所有節點,主要指非空二叉樹,對於空二叉樹則結束返回。二叉樹的遍歷包括前序遍歷、中序遍歷和後序遍歷。
(1) 前序遍歷。
前序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹;並且,在遍歷左右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。前序遍歷描述為:若二叉樹為空,則執行空操作;否則①訪問根結點;②前序遍歷左子樹;③前序遍歷右子樹。
(2) 中序遍歷。
中序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹;並且,在遍歷左、右子樹時,仍然先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。中序遍歷描述為:若二叉樹為空,則執行空操作;否則①中序遍歷左子樹;②訪問根結點;③中序遍歷右子樹。
(3) 後序遍歷。
後序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點,並且,在遍歷左、右子樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。後序遍歷描述為:若二叉樹為空,則執行空操作;否則①後序遍歷左子樹;②後序遍歷右子樹;③訪問根結點。
1.7 查找技術
(1) 順序查找:在線性表中查找指定的元素。
(2) 最壞情況下,最後一個元素才是要找的元素,則需要與線性表中所有元素比較,比較次數為n。
(3) 二分查找:二分查找也稱折半查找,它是一種高效率的查找方法。但二分查找有條件限制,它要求表必須用順序存儲結構,且表中元素必須按關鍵字有序(升序或降序均可)排列。對長度為n的有序線性表,在最壞情況下,二分查找法只需比較log2n次。
1.8 排序技術
(1) 交換類排序法。
冒泡排序:通過對待排序序列從後向前或從前向後,依次比較相鄰元素的排序碼,若發現逆序則交換,使較大的元素逐漸從前部移向後部或較小的元素逐漸從後部移向前部,直到所有元素有序為止。在最壞情況下,對長度為n的線性表排序,冒泡排序需要比較的次數為n(n-1)/2。
快速排序:是迄今為止所有內排序演算法中速度最快的一種。它的基本思想是:任取待排序序列中的某個元素作為基準(一般取第一個元素),通過一趟排序,將待排元素分為左右兩個子序列,左子序列元索的排序碼均小於或等於基準元素的排序碼,右子序列的排序碼則大於基準元素的排序碼,然後分別對兩個子序列繼續進行排序,直至整個序列有序。最壞情況下,即每次劃分,只得到一個序列,時間效率為O(n2)。
(2) 插人類排序法。
簡單插入排序法:把n個待排序的元素看成為一個有序表和一個無序表,開始時有序表中只包含一個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第一個元素,把它的排序碼依次與有序表元素的排序碼進行比較,將它插入到有序表中的適當位置,使之成為新的有序表。在最壞情況下,即初始排序序列是逆序的情況下,比較次數為n(n-1)/2,移動次數為n(n-1)/2。
希爾排序法:先將整個待排元素序列分割成若干個子序列(由相隔某個「增量」的元素組成的)分別進行直接插入排序。待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。
(3) 選擇類排序法。
簡單選擇排序法:掃描整個線性表。從中選出最小的元素。將它交換到表的最前面;然後對剩下的子表採用同樣的方法,直到子表空為止。最壞情況下需要比較n(n-1)/2次。
堆排序的方法:首先將一個無序序列建成堆;然後將堆頂元素(序列中的最大項)與堆中最後一個元素交換(最大項應該在序列的最後)。不考慮已經換到最後的那個元素,只考慮前n-1個元素構成的子序列,將該子序列調整為堆。反復做步驟②,直到剩下的子序列空為止。在最壞情況下,堆排序法需要比較的次數為0(nlog2n)
第二章 程序設計基礎
2.1 程序設計方法與風格
(1)設計方法:指設計、編制、調試程序的方法和過程,主要有結構化程序設計方法、軟體工程方法和面向對象方法。
(2)設計風格:良好的'設計風格要注重源程序文檔化、數據說明方法、語句的結構和輸入輸出。
2.2 結構化程序設計
1.結構化程序設計的原則
結構化程序設計強調程序設計風格和程序結構的規范化,提倡清晰的結構。。
(1)自頂向下:即先考慮總體,後考慮細節;先考慮全局目標,後考慮局部目標。
(2)逐步求精:對復雜問題,應設計一些子目標做過渡,逐步細化。
(3)模塊化:把程序要解決的總目標分解為分目標,再進一步分解為具體的小目標,把每個小目標稱為一個模塊;
(4)限制使用GOT0語句。
2.結構化程序的基本結構與特點
(1)順序結構:自始至終嚴格按照程序中語句的先後順序逐條執行,是最基本、最普遍的結構形式。
(2)選擇結構:又稱為分支結構,包括簡單選擇和多分支選擇結構。
(3)重復結構:又稱為循環結構,根據給定的條件,判斷是否需要重復執行某一相同的或類似的程序段。
結構化程序設計中,應注意事項:
(1)使用程序設計語言中的順序、選擇、循環等有限的控制結構表示程序的控制邏輯。
(2)選用的控制結構只准許有一個人口和一個出口。
(3)程序語言組成容易識別的塊,每塊只有一個入口和一個出口。
(4)復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現。
(5)語言中所沒有的控制結構,應該採用前後一致的方法來模擬。
(6)盡量避免GOT0語句的使用。
2.3 面向對象的程序設計
面向對象方法的本質是主張從客觀世界固有的事物出發來構造系統,強調建立的系統能映射問題域。
對象:用來表示客觀世界中任何實體,可以是任何有明確邊界和意義的東西。
類:具有共同屬性、共同方法的對象的集合。
實例:一個具體對象就是其對應分類的一個實例。
消息:實例間傳遞的信息,它統一了數據流和控制流。
繼承:使用已有的類定義作為基礎建立新類的定義技術。
多態性:指對象根據所接受的信息而作出動作,同樣的信息被不同的對象接收時有不同行動的現象。面向對象程序設計的優點:與人類習慣的思維方法一致、穩定性好、可重用性好、易於開發大型軟體產品、可維護性好。
第三章 軟體工程基礎
3.1 軟體工程基本概念
1.軟體的定義與特點
(1)定義:軟體是指與計算機系統的操作有關的計算機程序、規程、規則,以及可能有的文件、文檔和數據。
(2)特點。
是邏輯實體,有抽象性。
生產沒有明顯的製作過程。
運行使用期間不存在磨損、老化問題。
開發、運行對計算機系統有依賴性,受計算機系統的限制,導致了軟體移植問題。
復雜性較高,成本昂貴。
開發涉及諸多社會因素。
2.軟體的分類
軟體可分應用軟體、系統軟體和支撐軟體3類。
(1)應用軟體是特定應用領域內專用的軟體。
(2)系統軟體居於計算機系統中最靠近硬體的一層,是計算機管理自身資源,提高計算機使用效率並為計算機用戶提供各種服務的軟體。
(3)支撐軟體介於系統軟體和應用軟體之間,是支援其它軟體的開發與維護的軟體。
3.軟體危機與軟體工程
軟體危機指在計算機軟體的開發和維護中遇到的一系列嚴重問題。軟體工程是應用於計算機軟體的定義、開發和維護的一整套方法、工具、文檔、實踐標准和工序,包括軟體開發技術和軟體工程管理。
4.軟體生命周期
軟體產品從提出、實現、使用維護到停止使用的過程稱為軟體生命周期。
在國家標准中,軟體生命周期劃分為8個階段①軟體定義期:包括問題定義、可行性研究和需求分析3個階段。②軟體開發期:包括概要設計、詳細設計、實現和測試4個階段。③運行維護期:即運行維護階段。
5.軟體工程的原則
軟體工程的原則包括:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
3.2 結構化分析方法
需求分析的任務是發現需求、求精、建模和定義需求的過程,可概括為:需求獲取、需求分析、編寫需求規格說明書和需求評審。
1.常用的分析方法
結構化分析方法:其實質著眼於數據流,自頂向下,逐層分解,建立系統的處理流程。
面向對象分析方法。
2.結構化分析常用工具
結構化分析常用工具包括數據流圖、數字字典(核心方法)、判斷樹和判斷表。
(1)數據流圖:即DFD圖,以圖形的方式描繪數據在系統中流動和處理的過程,它只反映系統必須完成的邏輯功能。是一種功能模型。
符號名稱作用:
箭頭代表數據流,沿箭頭方向傳送數據的通道
圓或橢圓代表加工,輸入數據經加工變換產生輸出
雙杠代表存儲文件,表示處理過程中存放各種數據文件
方框代表源和潭,表示系統和環境的介面
(2)數據字典:結構化分析方法的核心。數據字典是對所有與系統相關的數據元素的一個有組織的列表。以及精確的、嚴格的定義,使得用戶和系統分析員對於輸入、輸出、存儲成分和中間計算結果有共同的理解。
(3)判定樹:使用判定樹進行描述時,應先從問題定義的文字描述中分清判定的條件和判定的結論,根據描述材料中的連接詞找出判定條件之問的從屬關系、並列關系、選擇關系,根據它們構造判定樹。
(4)判定表:與判定樹相似,當數據流圖中的加工要依賴於多個邏輯條件的取值,即完成該加工的一組動作是由於某一組條件取值的組合引發的,使用判定表比較適宜。
3.軟體需求規格說明書
軟體需求規格說明書是需求分析階段的最後成果,是軟體開發的重要文檔之一。
(1)軟體需求規格說明書的作用:①便於用戶、開發人員進行理解和交流;②反映出用戶問題的結構,可以作為軟體開發工作的基礎和依據;③作為確認測試和驗收的依據。
(2)軟體需求規格說明書的內容:①概述;②數據描述;③功能描述;④性能描述;⑤參考文獻;⑥附錄。
(3)軟體需求規格說明書的特點:①正確性;②無歧義性;③完整性;④可驗證性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追蹤性。
3.3 結構化設計方法
1.軟體設計的基本概念和方法
軟體沒計是一個把軟體需求轉換為軟體表示的過程。
(1)基本原理:抽象、模塊化、信息隱藏、模塊獨立性(度量標准:耦合性和內聚性,高耦合、低內聚)。
(2)基本思想:將軟體設計成由相對獨立、單一功能的模塊組成的結構。
2.概要設計
(1)4個任務:設計軟體系統結構、數據結構及資料庫設計、編寫概要設計文檔、概要設計文檔評審。
(2)面向數據流的設計方法:數據流圖的信息分為交換流和事物流,結構形式有交換型和事務型。
3.詳細設計的工具
詳細設計的工具包括:
圖形工具:程序流程圖、N-S、PAD、HIPO。
表格工具:判定表。
語言工具:PDL(偽碼)。
3.4 軟體測試
1.目的
為了發現錯誤而執行程序的過程。
2.准則
所有測試應追溯到用戶需求。
嚴格執行測試計劃,排除測試的隨意性。
充分注意測試中的群集現象。
程序員應避免檢查自己的程序。
窮舉測試不可能。
妥善保存設計計劃、測試用例、出錯統計和最終分析報告。
3.軟體測試技術和方法
軟體測試的方法按是否需要執行被測軟體的角度,可分為靜態測試和動態測試,按功能分為白盒測試和黑盒測試。
(1)白盒測試:根據程序的內部邏輯設計測試用例,主要方法有邏輯覆蓋測試、基本路徑測試等。
(2)黑盒測試:根據規格說明書的功能來設計測試用例,主要診斷方法有等價劃分法、邊界值分析法、錯誤推測法、因果圖法等,主要用於軟體確認測試。
4.軟體測試的實施
軟體測試是保證軟體質量的重要手段,軟體測試是一個過程,其測試流程是該過程規定的程序,目的是使軟體測試工作系統化。
軟體測試過程分4個步驟,即單元測試、集成測試、驗收測試和系統測試。
單元測試是對軟體設計的最小單位——模塊(程序單元)進行正確性檢驗測試。
單元測試的目的是發現各模塊內部可能存在的各種錯誤。
單元測試的依據是詳細的設計說明書和源程序。
單元測試的技術可以採用靜態分析和動態測試。
3.5 程序的調試
(1)任務:診斷和改正程序中的錯誤。
(2)調試方法:強行排錯法、回溯法和原因排除法。
第四章 資料庫設計基礎
4.1 資料庫系統的基本概念
(1) 數據(Data):描述事物的符號記錄。
(2) 資料庫(DataBase):長期存儲在計算機內的、有組織的、可共享的數據集合。
(3) 資料庫管理系統的概念
資料庫管理系統(DataBase Management System,DBMS)是資料庫的機構,它是一種系統軟體,負責資料庫中的數據組織、數據操作、數據維護、數據控制及保護和數據服務等。為完成以上6個功能,DBMS提供了相應的數據語言;數據定義語言(負責數據的模式定義與數據的物理存取構建);數據操縱語言(負責數據的操縱);數據控制語言(負責數據完整性、安全性的定義)。資料庫管理系統是資料庫系統的核心,它位於用戶和操作系統之間,從軟體分類的角度來說,屬於系統軟體。
(4) 資料庫技術發展經歷了3個階段。
人工管理階段→文件系統階段→資料庫系統階段
(5) 資料庫系統的特點:集成性、高共享性、低冗餘性、數據獨立性、數據統一管理與控制等。
(6) 資料庫系統的內部機構體系:三級模式(概念模式、內模式、外模式)和二級映射(外模式/概念模式的映射、概念模式/內模式的映射)構成了資料庫系統內部的抽象結構體系。
4.2 數據模型
數據模型是數據特徵的抽象,從抽象層次上描述了系統的靜態特徵、動態行為和約束條件,描述的內容有數據結構、數據操作和數據約束。有3個層次:概念數據模型、邏輯數據模型和物理數據模型。
(1) E—R模型:提供了表示實體、屬性和聯系的方法。實體間聯系有「一對一」、「一對多」和「多對多」。
(2) E-R模型用E-R圖來表示。
(3) 層次模型:利用樹形結構表示實體及其之問聯系。其中節點是實體,樹枝是聯系,從上到下是一對多關系。
(4) 網狀模型:用網狀結構表示實體及其之間聯系。是層次模型的擴展。網路模型以記錄型為節點,反映現實中較為復雜的事物聯系。
(5) 關系模型:採用二維表(由表框架和表的元組組成)來表示,可進行數據查詢、增加、刪除及修改操作。關系模型允許定義「實體完整性」、「參照完整性」和「用戶定義的完整性」三種約束。
鍵(碼):二維表中唯一能標識元組的最小屬性集。
候選鍵(候選碼):二維表中可能有的多個鍵。
主鍵:被選取的一個使用的鍵。
4.3 關系代數
(1) 關系代數的基本運算:投影、選擇、笛卡爾積。
(2) 關系代數的擴充運算:交、連接與自然連接、除。
4.4 資料庫設計與管理
1.資料庫設計概述
基本思想:過程迭代和逐步求精。
方法:面向數據的方法和面向過程的方法。
設計過程:需求分析→概念設計→邏輯設計→物理設計→編碼→測試→運行→進→步修改。
2.資料庫設計的需求分析
需求收集和分析是資料庫設計的第一階段,常用結構化分析方法(自頂向下、逐層分解)和面向對象的方法,主要工作有繪制數據流程圖、數據分析、功能分析、確定功能處理模塊和數據間關系。
數據字典:包括數據項、數據結構、數據流、數據存儲和處理過程,是對系統中數據的詳盡描述。
3.資料庫的設計
(1) 資料庫的概念設計:分析數據問內在的語義關聯,以建立數據的抽象模型。
(2) 資料庫的邏輯設計:從E-R圖向關系模型轉換,邏輯模式規范化,關系視圖設計可以根據用戶需求隨時創建。實體轉換為元組,屬性轉換為關系的屬性,聯系轉換為關系。
(3) 資料庫的物理設計:是數據在物理設備上的存儲結構與存取方法,目的是對資料庫內部物理結構作出調整並選擇合理的存取路徑,以提高速度和存儲空間。
4.資料庫管理
資料庫管理包括資料庫的建立、資料庫的調整、資料庫的重組、資料庫的安全性與完整性控制、資料庫故障恢復和資料庫的監控。
;Ⅳ 程序員必備知識有哪些
根據軟考程序員職稱的考試內容,我們可以得出,程序員需要具備以下的知識。但這些只是基礎,還要不斷擴展。
計算機硬體基礎知識。
1. 計算機科學基礎。
1.1數制及其轉換。
二進制、十進制和十六進制等常用數制及其相互轉換。
1.2數據的表示。
數的表示(原碼、反碼、補碼表示,整數和實數的機內表示方法,精度和溢出)。
校驗方法和校驗碼(奇偶校驗碼、海明校驗碼)。
1.3算術運算和邏輯運算。
計算機中二進制數的運算方法。
邏輯代數的基本運算和邏輯表達式的化簡。
1.5常用數據結構。
數組(表態數組、動態數組)、線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)、隊列、棧、樹(二叉樹、查找樹)、圖的定義、存儲和操作
1.6 常用演算法。
演算法與數據結構的關系,演算法效率,演算法設計,演算法描述(流程圖、偽代碼、決策表)
2. 計算機系統基礎知識。
2.1計算機基礎知識。
2.1.1計算機系統的組成,硬體系統、軟體系統及層次結構。
2.1.3 中央處理器CPU。
運算器和控制器的組成,常用的寄存器、指令系統、定址方式、指令執行控
處理機性能。
2.1.4 主存和輔存。
存儲器系統。
存儲介質(半導體、硬碟、光碟、快閃記憶體、軟盤、磁帶等)。
主存儲器的組成、性能及基本原理。
Cache的概念、虛擬存儲的概念。
輔存設備的類型、特性、性能和容量計算。
2.1.5 I/O介面、I/O設備和通信設備。
I/O介面(匯流排、DMA、通道、SCSI、並行口、RS232C、USB、IEEE1394)。
I/O設備的類型和特性(鍵盤、滑鼠、顯示器、列印機、掃描儀、攝像頭,以及各種輔存設備)。
I/O設備控制方式(中斷控制、DMA)。
通信設備的類型和特性(Modem、集線器、交換機、中繼器、路由器、網橋、網關)及其連接方法和連接介質(串列連接、並行連接,傳輸介質的類型和特性)。
2.2 軟體基礎知識。
2.2.1 操作系統基礎知識。
操作系統的類型和功能。
操作系統的內核(中斷控制)和進程概念。
處理機管理、存儲管理、設備管理、文件管理、作業管理、漢字處理。
2.2.2 程序設計語言和語言處理程序基礎知識。
匯編、編譯、解釋系統的基礎知識。
過程(函數)調用。
2.3 網路基礎知識。
網路的功能、分類、組成和拓撲結構。
網路體系結構與協議(OSI/RM,TCP/IP)。
2.4 資料庫基礎知識。
數據模型,ER圖。
數據操作(關系運算)。
資料庫語言(SQL)。
2.5 多媒體基礎知識。
多媒體基礎概念,常用多媒體設備性能特徵,常用多媒體文件格式類型。
3.軟體開發和運行維護基礎知識。
3.2 軟體需求分析、需求定義及軟體基礎知識。
結構化分析概念(數據流圖(DFD)、實體關系圖(ER))。
面向對象設計、結構化設計基礎知識。
模擬設計、代碼設計、人機界面設計要點。
3.3 程序設計基礎知識。
結構設計程序設計,程序流程圖,NS圖,PAD圖。
程序設計風格。
面向對象設計基礎知識、可視化程序設計基礎知識。
3.4 程序測試基礎知識。
黑盒測試、白盒測試、灰盒測試基礎知識。
4. 安全性基礎知識。
安全性基本概念。
加密與解密基礎知識。
5. 標准化基礎知識
標准化基本概念
6. 信息化基本知識。
有關的法律、法規要點。
7. 計算機專業英語。
考試科目2:程序設計。
1. 內部設計
1.1 理解外部設計。
1.3 物理數據設計。
確定數據組織方式、存儲介質,設計記錄格式和處理方式。
2. 程序設計。
2.1 模擬劃分(原則、方法、標准)。
3. 程序實現。
3.1 編程。
編程方法和標准。
程序設計語言的使用。
4.程序設計語言(C語言為必選,其他語言可以任選一種)。
4.1 C程序設計語言(ANSI C標准)。
程序結構,語法,數據類型說明,可執行語句,函數調用,標准庫函數,指針。
4.2C++程序設計語言(ANSI C++標准)。
C++和面向對象程序設計,語法和程序結構,類、成員、構造函數、析構函數、模板、繼承、多態。
4.3Java程序設計(Java 2)。
語言機制(程序結構和語法,類、成員、構造函數、析構函數、繼承、介面)。
4.4Visual Basic程序設計(Visual Basic 6.0)。
用戶界面設計。
Ⅳ 如果想成為一個程序員應該學習什麼知識
聲明:以後計算機也就沒什麼前景了 只能成為一個輔助工具
(1) 熟練掌握基本演算法和數據結構,用C語言編製程序;
(2) 掌握數據結構、程序變速器和操作系統的基礎知識;
(3) 了解軟體工程、資料庫、多媒體和網路的基礎知識;
(4) 掌握數制、機內代碼及其算術運算和邏輯運算的基礎知識;
(5) 了解計算機的體系結構和主要部件的基礎知識。
1.1按照軟體設計說明書,能熟練使用下列程序語言編製程序
1.1.1C(美國標准)
1.2理解給定程序的功能,能發現程序中的錯誤並加以糾正
1.3具有良好的程序編制風格
1.4基本演算法
1.4.1查找、更新、排序、合並及字元處理
1.4.2迭代、插值、數值積分、矩陣計算、議程求解和搜索求解
1.5程序編制方法
1.5.1分支、循環、子程序(過程和函數)、遞歸
1.5.2輸入輸出和文件的處理
模塊2:基礎知識(程序員級)
2.1軟體基礎知識
2.1.1數據結構基礎
數組、記錄、列表(list)、隊列、棧(stack)、堆(heap)、樹和二叉樹的定義、存儲和操作
2.1.2程序語言基礎知識
·匯編、編譯、解釋系統的基礎知識
·程序語言的數據類型
·程序語言的控制結構
2.1.3操作系統基礎知識
·操作系統的類型和功能
·操作系統的層次結構和進程概念
·作業、處理機、存儲、文件和設備等管理的基礎知識
2.1.4軟體工程基礎知識
·軟體生命周期各階段的任務
·結構化分析和設計方法
·面向對象基本概念
·軟體開發工具與環境基礎知識
2.1.5資料庫基礎知識
·資料庫模型
·資料庫系統的結構
·SQL的使用初步
·常用資料庫管理系統的知識
2.1.6多媒體基礎知識
·多媒體基本概念
·常用圖象文件
·簡單圖形(線段和圓)的計算機圖示
2.2硬體基礎知識
2.2.1數制及其轉換
·二進制、十進制和十六進制等常用數制及其相互轉換
2.2.2機內代碼
·原碼、補碼、反碼、移碼
·定點數與浮點數的機內表示
·ASCII碼及漢字編碼等常用的編碼
·奇偶校驗碼、海明碼、循環冗餘碼(CRC)等常用校驗方法
2.2.3算術運算和邏輯運算
·計算機中的二進制數運算方法
·邏輯代數的基本運算和邏輯表達式的化簡
2.2.4計算機的體系結構和主要部件
·中央處理器CPU、存儲器和輸入/輸出設備
·匯流排結構、指令流和數據流
2.2.5指令系統
·常用的定址方式
·指令的格式、分類及功能
·指令的執行過程
2.3網路基礎知識
2.3.1網路的功能、分類與組成
2.3.2網路協議與標准
2.3.3網路結構與通信
2.3.4網路的安全性
2.3.5Client-Server結構
2.3.6Internet和Intranet初步
Ⅵ 程序員演算法解題方法與思路
此方法通過寫出問題的一些特定的例子,分析總結其中的規律。具體而言,就是通過列舉少量的特殊情況,經過分析,最後找出一般的關系。
問題與以前莫個演算法解決過的問題相似,此時就可以觸類旁通,嘗試改進原有演算法來解決
此方法首先將問題簡單化,如改變數據類型、空間大小等,然後嘗試著將簡化後的問題解決。
為了降低問題的復雜度,很多時候都會將問題逐層分解,最後歸結為一些簡單的問題,這就是遞歸法
將一個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。分治法一般包括以下三個步驟:
1)將問題的實例劃分為幾個較小的實例,最好最有相等的規模。
2)對這些較小的實例求解,而最常見的方法一般是遞歸。
3)如歌有必要,合並這些較小問題的解,以得到原始問題的解。
一般而言,時間復雜度越低的演算法越高效。而更想達到時間復雜度的高效,很多時候就必須在空間上有所犧牲,用空間來換時間。而用空間換時間最有效的方法就是Hash法、大數組和點陣圖法。
在設計題目時,往往會有一個載體,這個載體便是數據結構。如數組、鏈表、二叉樹和圖等,當窄體確定後,可用的演算法自然而然就會顯現出來。可問題是很多時候並不確定這個載體是什麼,當無法確定這個載體時,一般也就很難想到合適的方法了。
當遇到上面的問題時,可以採用最原始的思考問題的方式——輪詢法。常考的數據結構與演算法一共就幾種,如下圖
此種方法看似笨拙,卻很實用,只要對常見的數據結構與演算法爛熟於心,一點都沒有問題。
Ⅶ 軟考程序員備考有哪些技巧
首先如何選用教材:
必須以大綱指定教材為主,盡管一本教材不可能包括所有的考試范圍,但對於應付上午的考試是夠用的,不過你必須對它的知識點理解透徹。當然教材由於篇幅有限,對於某些知識點,它不可能講得很詳細,這就需要同學們自己參考其他相應的書籍。如果你只是對某個知識點不清,一定不要略過,可以查閱計算機的相關教材,弄懂為止,因為這個時候正是你積累知識的時候,在這個時候了解多一點,在正式考試的時候你就多一分機會
其次對於如何進行應試,我在此提出以下建議
程序員部分上午考的是基礎知識,對計算機有一點功底的人看教材足夠了。下午的編程可能會有點麻煩。程序員上午一般會考到的數據結構有線性表、棧、隊列和樹(包括二叉樹)等幾個,當中樹最難,起碼有一道編程的題跟樹有關,還有就是遞歸、回溯等演算法,如迷宮問題等。因此提高編程能力是最重要的,對C一定要熟。提高編程能力的途徑最好是練習。建議多花時間找點題目來編編,不要對著紙對著書編,最好是上機寫程序。上機的方式有助於加深記憶,如果上機的時候出錯,可以隨時改正,然後在考試的時候就不會犯同樣的錯誤;
新考試大綱中要求熟練掌握C程序設計語言,以及C++、Java、VisualBasic中的一種程序設計語言;
對於程序設計語言(C語言為必選,其他語言可以任選一種)
1.C程序設計語言(ANSIC標准)
程序結構,語法,數據類型說明,可執行語句,函數調用,標准庫函數,指針
2.C++程序設計語言(ANSIC++標准)
C++和面向對象程序設計,語法和程序結構,類、成員、構造函數、析構函數、模板、繼承、多態
3.Java程序設計(Java2)
Java和面向對象程序設計
語言機制(程序結構和語法,類、成員、構造函數、析構函數、繼承、介面)
4.VisualBasic程序設計(VisualBasic6.0)
用戶界面設計
程序結構和語法
文件系統對象
訪問資料庫
因為其他的語言大家估計接觸得比較多,所以在專題講座中我只安排重點講解了JAVA程序設計,當然也可以選其他的語言,如果以前接觸過的是最好的了。
更多軟考資訊請關注希賽軟考學院。