二级公共基础汇总.docx
《二级公共基础汇总.docx》由会员分享,可在线阅读,更多相关《二级公共基础汇总.docx(35页珍藏版)》请在冰豆网上搜索。
二级公共基础汇总
第一章数据结构与算法
重要考点提示:
算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)
数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构。
线性表的定义;线性表的顺序存储结构及其插入与删除运算。
栈和队列的定义;栈和队列的顺序存储结构及其基本运算。
线性单链表,双向链表与循环链表的的结构及其基本运算。
树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历
顺序查找与二分法查找算法
基本排序算法(交换类排序、选择类排序、插入类排序)
1.算法是指解题方案的准确而完整的描述
2.算法的基本特征有可行性、确定性、有穷性、拥有足够的情报
3.有一般的计算机系统中,基本的运算和操作有以下四类:
算术运算、逻辑运算、关系运算、数据传输
4.一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。
5.算法设计的基本方法有:
列举法、归纳法、递推、递归、减半递推技术、回溯法。
6.算法的复杂度主要包括时间复杂度和空间复杂度。
7.时间复杂度:
是指执行算法所需要的计算工作量。
8.空间复杂度:
是指执行这个算法所需的内存空间。
9.为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。
10.数据结构主要研究和讨论以下三个方面的问题:
数据集合中各数据元素之前所固有的逻辑关系,即数据的逻辑结构
在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构
对各种数据结构进行的运算
11.数据:
是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:
是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象:
是性质相同的数据元素的集合,是数据的一个子集。
12.数据结构是指反映数据元素之间的关系的数据元素集合的表示。
更通俗地说,数据结构是指带有结构的数据元素的集合。
所谓结构实际上就是指数据元素之间的前后件关系。
一个数据结构应包含以下两方面的信息:
表示数据元素的信息:
表示各数据元素之间的前后件关系。
数据的逻辑结构包括集合、线性结构、树型结构和图形结构四种。
线性结构:
数据元素之间构成一种顺序的线性关系。
如图所示
树型结构:
数据元素之间形成的一种树型的关系。
如图所示
数据的逻辑结构有两个要素:
一是数据的集合,通常记为D;二是D上的关系,
它反映了数据元素之间的前后件关系,通常记为R。
一个数据结构就可以表示
为B=(D,R),其中B表示数据结构。
13.数据的逻辑结构在计算机存储空间中的存放形式,称为数据的存储结构(也称数据的物理结构)。
常见的存储结构有顺序、链接、索引等存存储结构。
14.一般将数据结构分为两大类型:
线性结构与非线性结构。
15.如果一个非空的数据结构满足下列两个条件:
有且只有一个根结点
每一个结点最多有一个前件,也最多有一个后件。
则称该数据结构为线性结构。
线性结构又称为线性表。
16.线性表(Linearlist)是最简单、最常用的一种数据结构。
线性表是由n(n>=0)个数据元素a1,a2,…,an组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了后一个外,有且只有一个后件。
即线性表或是一个空表,或可以表示为(a1,a2,…,ai,…an)其中ai(I=1,2,…,n)是属于数据对象的元素,通也称其为线性表的一个结点。
非空线性表有如下一些结构特征:
有且只有一个根结点a1,它无前件。
有且只有一个终端结点an,它无后件。
除根结点与终端结点外,其它所有结点有且只有一个前件,也有且只有一个后件。
线性表中结点的个数n称为线性表的长度。
当n=0时,称为空表。
17.线性表的顺序存储结构具备如下两个基本特征;
线性表中的所有元素所占的存储空间是连续的;
线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
18.栈是一种特殊的线性表。
栈(Stack)是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端称为栈顶(Top),另端称为栈底(Bottom)。
当表中没有元素时称为空表。
栈是“先进后出”表(FILO,FirstInLastOut),或“后进先出”表(LIFO,LastInFristOut)。
入栈运算:
是指在栈顶位置插入一个新元素,即Top+1
出栈运算:
是指取出栈顶元素并赋给一个指定的变量。
即Top-1
19.队列(queue)是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear)。
队列是“后进后出”表(lILO,LastInLastOut),或“先进先出”表(FIFO,FirstInFristOut)。
循环队列判断条件:
队满:
s=1且front=rear队空:
s=0
20.采用链接存储方式,要求每个结点由两部分组成;一部分用于存放数据元素值,称为数据域;另一部分用于存放指针(下一个元素的地址),称为指针域。
21.链表一般有单向链表,双向链表,循环链表。
22.采用链表存储方式,插入,删除元素方便,但查找性能降低。
因为结点有指针域,不需要元素移动。
采用顺序存储方式,插入,删除元素困难,但查找性能良好。
因为需要元素的大量移动。
23.树的定义:
树是由n(n>=0)个结点组成的有限集合。
若n=0,称为空树;若n>0,则:
有一个特定的称为根的结点。
它只有直接后件,但没有直接前件;
除根结点以外的其它结点都可以划分为m(m>=0)个互不相交的有限集合T0,T1,…Tm-1,每个集合有是一棵树,称为根的子树。
与树有关的术语:
父结点、子结点、结点的度、深度、叶子结点。
24.二叉对的定义:
是由n(n>=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。
二叉树不是树的特殊性况,它们是两个概念。
二叉树具有如下两个特点:
1非空二叉树只有一个根结点;2.每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
25.二叉树的基本性质
性质1:
在二叉树的第k层上,最多有2k-1(k≥1)个结点。
性质2:
深度为m的二叉树最多有2m-1个结点。
性质3:
在任意一棵二叉树中,度数为0的结点(即叶子结点)总比度为2的结点多一个。
即:
n0=n2+1其中,n0表示二叉树中度数为0的结点数,n2表示二叉树中度数为2的结点数。
性质4:
具有n个结点的二叉树的深度至少为[log2n]+1,其中[log2n]表示log2n的整数部分。
性质5:
具有n个结点的完全二叉树深度为[log2n]+1。
性质6:
设完全二叉树共有n个结点,如果从根结点开始,按层序(每一层从左到右)用自然数1,2…,n给结点进行编号,则对于编号为k(k=1,2,…,n)的结点有以下结论。
①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点的编号为INT(k/2)。
②若2k≤n,则编号为k的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)。
③若2k+1≤n,则编号为k的右子结点编号为2k+1;否则该结点无右子结点。
26.满二叉树和完全二叉树
1)满二叉树:
满二叉树指这样的一种二叉树:
除最后一层外,每一层上的所有结点都有有个子结点,从满二叉树中每一层上的结点数都达到最大,即在满二叉的第k层上有2k-1个结点,否则就不是满二叉树。
深度为m的满二叉树有2m-1个结点。
2)完全二叉树。
完全二叉树是指这样的二叉树:
除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
27.二叉树的遍历分为前序、中序、后序三种方式。
28.查找技术分为顺序查找和二分法查找。
二分法查找只适用于顺序存储的线性表,且表中元素必须按关键字有序(升序或降序均可)排列。
29.常见排序方法分为交换类、选择类、插入类。
交换类包括冒泡法、快速排序法。
选择类包括简单选择法、堆排序法。
插入类包括简单插入、希尔(Shell)排序法。
各种排序方法时间、空间复杂度对比
排序方法
时间复杂度
空间复杂度
平均情况。
最坏情况
最好情况
直接插入排序
O(n2)
O(n2)
O(n)
O
(1)
冒泡排序
O(n2)
O(n2)
O(n)
O
(1)
希尔排序
O(nlog2n)
O(nlog2n)
O
(1)
快速排序
O(nlog2n)
O(n2)
O(nlog2n)
O(nlog2n)
直接选择排序
O(n2)
O(n2)
O(n2)
O
(1)
堆排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
O
(1)
第二章程序设计基础
重要考点提示:
形成良好的程序设计风格应注意的因素
结构化程序
结构化程序的基本结构与特点
结构化程序设计的原则和方法的应用
面向对象程序设计的主要优点
面向对象方法的基本概念(对象、类和实例、消息、继承和多态性)
1.程序设计主要经历了结构化设计和面向对象设计两个阶段。
2.良好的编程风格应注意的因素
源程序的文档化数据说明的方法语句的结构输入输出
注释一般为序言性注释和功能性注释。
序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。
功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。
3.为使程序更简单易懂,语句构造应该简单直接,应注意如下几点:
①在一行内只写一条语句;②程序编写应优先考虑清晰性;③程序编写要做到清晰第一,效率第二;④在保证程序正确的基础上再要求提高效率;⑤避免使用临时变量前使程序的可读性下降;⑥避免不必要的转移;⑦尽量使用使用库函数;⑧避免采用复杂的条件语句;⑨尽量减少使用“否定”条件语句;⑩数据结构要有利于程序的简化;11要模块化,使模块功能尽可能单一化;12利用信息隐蔽,确保每一个模块的独立性;13从数据出发去构造程序;14不要修补不好的程序,要重新编写。
4.输入输出方式和风格应尽可能方便用户的使用,应考虑如下原则:
①对输入数据检验数据的合法性;②检查输入项的各种重要组合的合理性;③输入格式要简单,使得输入的步骤和操作尽可能简单;④输入数据时,应允许使用自由格式;⑤应允许缺省值;⑥输入一批数据时,最好使用输入结束标志;⑦在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息;⑧当程序设计评议对输入格式有严格要求时,应保持输入格式与输入语句的一致性。
5.结构化程序设计的原则
(1)自顶向下
(2)逐步求精(3)模块化(4)限制使用GOTO语句。
6.结构化程序的基本结构与特点
顺序结构、选择结构、循环结构
7.结构化程序设计原则和方法的应用
结构化程序设计中,要注意把握如下要素:
①使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;②选用的控制结构只准许有一个入口和一个出口;③程序语言组成容易识别的块,每块只有一个入口和一个出口;④复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现;⑤语言中所有的控制结构,应该采用前后一致的方法来模拟;⑥尽量避免作用GOTO语句。
8.关于面向对象方法
客观世界中任何一个事物都可以被看成是一个对象。
9.面向对象方法的主要优点有:
①与人类习惯的思维方法一致。
②稳定性好。
③可重用性好。
④易于开发大型软件产品。
⑤可维护性好,这是因为:
用面向对象的方法开发的软件稳定性比较好;用面向对象的方法开发软件比较容易修改;用面向对象的方法开发的软件比较容易理解;易于测试和调试。
10.面向对象方法的基本概念
对象、类、消息、继承、多态
11.对象可以用来表示客观世界中的任何实体,也就是说应用领域中有意义有、与所要解决的问题有关系的任何事物都可以作为对象。
对象是由描述该对象属性的数据以及可以对这些数据施加的操作封装在一起构成的统一体。
对象具有以下特点:
①标识惟一性②分类性③多态性④封装性⑤模块独立性好
12.是具有共同属性、共同操作方法的对象的集合,所以类是对象的抽象,它描述了属于该对象类型的所有对象性质,而一个对象则是其对就类的一个实例。
13.消息就是要求某个对象执行在定义它的那类中所定义的某个操作的规格说明。
通常一个消息由下述3部组成:
接收消息的对象的名称、消息标识符(消息名)、零个或多个参数。
14.继承是使用已有的类定义作为基础,建立新类的定义技术。
已有的类可当做基类来引用,则新类相应地可当做派生类来引用。
广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。
继承分为单继承与多重继承。
单继承是指一个类只允许有一个父类,即类等价为树型结构。
多重继承是指一个类允许有多个父类。
多重继承的类可以组合多个父类的性质构成所需要的性质。
14.对象根据所接受的消息而做出动作同样的消息被不同的对象接受时可导致完全不同的行为,该现象称为多态性。
第3章软件工程基础
重要考点提示:
软件定义与软件特点、软件危机与软件工程
软件生命周期定义,软件工程的目标与原则,软件开发工具和环境
需求分析工作与需求分析方法
结构化分析步骤、常用工具(数据流图DFD、数据字典DD、判定树、判定表)
软件设计基本原理,概要设计与详细设计
白盒测试与黑盒测试,测试用例设计,软件测试的实施
单元测试、集成测试、确认测试、系统测试
程序调试的基本步骤、原则
程序调试方法
1.软件由程序、数据和文档组成。
国标(GB)对软件定义为:
与计算机系统的操作有关的计算机程序、规程及规则,以及可能有的文件、文档及数据。
软件的特点
软件具有如下特点:
①软件是逻辑产品,而不是物理实体,具有抽象性。
只有通过观察分析才能体现它的功能和性能等特性。
②软件没有明显的制作过程。
一旦研制成功,可大量拷贝同一内容的副本,所以对软件质量控制必须的软件开发方面下工夫。
③软件在运行、使用期间不存在磨损和老化问题④软件开发、运行对计算机系统具有依赖性,这导致移植性问题。
⑤软件复杂性高,开和维护成本高。
⑥软件开发涉及诸多社会因素。
根据软件的功能,软件可分为应用软件、系统软件和支撑软件3类。
2.软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
国标(GB)中指出软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档发、实践标准和工序。
德国人FritzBauer提出的:
“软件工程是建立并使用完善的工程化原则,以较经济的手段获取能在实际计算机上有效运行的可靠软件的一系统方法。
”IEEE给出一个更加综合的定义:
“将系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,即将工程应用于软件中”。
软件工程包括3个要素,即方法、工具和过程。
3.ISO9000定义:
软件工程过程是把输入转化为输出的一组彼此相关的资源和活动,它包括如下4种基本活动。
(1)P(Plan)——软件规格说明。
(2)D(Do)——软件开发。
(3)C(Check)——软件确认。
(4)A(Action)——软件演进。
软件工程学所包含的内容有以下两点:
软件开发技术和软件工程管理。
4.软件生命同期分为软件定义,软件开民及软件运行维护3个阶段
可行性研究、需求分析、概要设计、详细设计、实现、测试、运行维护
5.软件工程的原则
抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性
6.软件开发工具与软件开发环境
软件开发工具是协助开发人员进行软件开发活动所使用的软件或环境,它包括需求分析工具、设计工具、编码工具、排错工具和测试工具等。
软件开发环境或称软件工程环境,是全面支持软件开发全过程的软件工具的集合。
计算机辅助软件工程(CASE,ComputreAidedSoftwareEngineering)是将各种软件工具、用于开发的计算机和一个存放开发过程信息中心数据库组合起来,形成软件工程环境。
7.需求分析需求分析方法
1.需求分析
软件需求分析是指用户对目标软件系统在功能、行为、性能和设计约束等方面的期望。
需求分析的任务是发现需求、求精、建模和定义需求的过程。
(1)需求分析的定义。
IEEE软件工程标准词汇表对需求分析定义如下:
①用户解决问题或达到目标所需的条件或权能;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有分的条件或权能;
③一种反应映①或②所描述的条件或权能的方档说明。
(2)需求分析阶段的工作。
需求分析阶段的工作可概括为如下4个方面:
①需求获取,②需求分析,③编写需求规格说明书,④需求审评。
2.需求分析方法
常见的需求分析方法有:
①结构分析方法,主要包括面向数据流的结构化分析方法SA、面向数据结构的Jackson方法JSD和面向数据结构的结构化数据系统开发方法DSSD。
②面向对象分析方法。
从需求分析建立的模型的特点来分,需求分析方法又分为静态分析方法和动态分析方法。
8.结构化分析方法
结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。
结构化分析方法SA是面向数据流进行需求分析的方法,采用自顶向上、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
结构化分析的常用工具:
数据流图、数据字典、判定树、判定表
数据流图主要的图形元素有:
①圆或椭圆,表示加工,输入数据经过加工变换产生输出;②箭头,表示数据流,沿箭头方向传送数据的通道;③双杠,表示存储文件,处理过程中存放各种数据文件;④方框,表示源、潭,系统和环境接口。
9、软件需求规格说明书
软件需求规格说明书的作用
(1)便于用户、开发人员进行理解和交流;
(2)反映出用户问题的结构,可以作为软件开发工作的基础和依据;
(3)作为确认测试和验收的依据。
软件需求规格说明书的内容
概述、数据描述、功能描述、性能描述、参考文献、附录
软件需求规格说明书应具有以下特点:
1正确性,②无歧义性,③完整性,④可验证性,⑤一致性,⑥可理解性,⑦可修改性,⑧可追踪性。
10结构化设计方法
软件设计是软件工程的重要阶段,是一个把软件需求转换成表示的过程。
从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
从工程管理角度来看,软件设计分成两步完成:
概要设计和详细设计。
概要设计:
确定系统级接口、全局数据结构或库模式。
详细设计:
确立每个模块的算法和局部结构
11.软件设计的基本原理:
抽象、模块化、信息隐蔽、模块独立性、
12.衡量软件的模块独立性使用内聚性和耦合性两个定性的度量标准。
①内聚性。
内聚性是度量一个模块功能强度的一个相对指标。
内聚有如下的种类,它们之间的内聚性由弱到强的排列如下。
偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚
②耦合性。
耦合性则用来度量模块之间的相互联系程度。
耦合可以分为下列几种,它们之间的耦合度由高到低排列如下。
内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合
一般较优秀的软件设计应昼做到高内聚,低耦合,取出减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
13.概要设计
概要设计的基本任务:
(1)设计软件系统结构
(2)数据结构和数据设计(3)编写概要设计文档(4)概要设计文档评审
14..软件结构设计工具
常用的软件结构设计工具是结构图,也称程序结构图
结构图常用的几个概念。
①深度:
表示控制的层数;②上级模块、从属模块:
上、下两层模块a和b,则a是上级模块,b则是从属模块;③宽度:
整体控制跨度(最大模块数的层)的表示;④扇入:
调用一个给定模块的模块个数;⑤扇出:
一个模块直接调用的其他模块个数;⑥原子模块:
树中位于叶子结点的模块。
15.面向数据流的设计方法
(1)数据流的类型。
数据流类型有两种:
变换型和事务型
16设计准则
设计准则包括如下几点:
①提高模块独立性;②模块规模规模适中;③深度、宽度、扇度和扇出适度;④使模块的作用域地该模块的控制域内;⑤应减少模块的接口和界面的复杂性;⑥设计成单入口、单出口的模;⑦设计功能可预测的模块。
17.详细设计
详细设计的任务是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
详细设计的常用工具有图形工具(包括程序流程图、N-S、PAD和HIPO)、表格工具(判定表)和语言工具(PDL,又称为伪码)。
18.软件测试
软件测试的目的:
软件测试的目的是尽可能多地发现程序中的错误。
静态测试与动态测试
白盒测试和黑盒测试
白盒测试也称结构测试或逻辑驱动测试,它是根据软件产品的内部过程,检查内部成分,以确定每种内部操作是否符合设计规格要求。
使用白盒测试法需要了解程序内部的结构,测试用例是根据程序的内部逻辑来设计的。
白盒测试法主要有逻辑覆盖和基本路径测试等。
白盒测试法主要用于软件的单元测试
逻辑覆盖测试:
语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断──条件覆盖
黑盒测试也称功能测试或数据驱动测试,是对软件已经实现的功能是否满足需求进行测试和难黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。
黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图。
黑盒测试法主要用于软件的确认测试。
19.软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。
20.在对程序进行成功测试之后将进行程序调试(排错)。
程序的调试任务是诊断和改正程序中的错误。
软件调试方法:
强行排错法、回溯法、原因排除法
第四章数据库设计基础
1.数据、数据库和数据管理系统
数据(Data)实际上就是描述事物的符号记录
数据库(Database,简称DB是数据的集合,数据库中的数据具有“集成”、“共享”的特点
数据库管理系统(DatabaseManagementSystem,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制、保护和数据服务等。
数据库系统:
数据库(DB)+数据库管理系统(DBMS)+数据库管理员(DBA)+硬件平台+软件平台
DBMS的功能:
①数据模式定义②数据存取的物理构建③数据操纵④数据的完整性、安全怀定义与检查⑤数据库的并发控制与故障恢复⑥数据的服务
数据语言:
①数据定义语言(简称DDL)
2数据操纵语言(简称DML)
3③数据控制语言(简称DCL)
上述数据语言按其使用方式具有如下两种结构形式:
1交互式命令语言②宿主型语言
数据库管理员(DatabaseAdministrator,简称DBA)指针对数据库进行规划、设计、维护和监视等工作的人员。
2.数据库系统的发展
经历了人工管理阶段、文件管理阶段、数据库系统阶段三个阶段。
3.数据库系统的特点
数据的集成性、数据的高共享与低冗余、数据的独立性、数据统一管理与控制四大特点。
数据独立性包括物理独立性和逻辑独立性。
物理独立性:
指用户的应用程序与存储在磁盘上的数据库数据是相互独立的。
当数据的物理结构(包括存储方式、存取方式)改变时