计算机等级考试二级VB公共基础知识.docx
- 文档编号:25771800
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:27
- 大小:32.12KB
计算机等级考试二级VB公共基础知识.docx
《计算机等级考试二级VB公共基础知识.docx》由会员分享,可在线阅读,更多相关《计算机等级考试二级VB公共基础知识.docx(27页珍藏版)》请在冰豆网上搜索。
计算机等级考试二级VB公共基础知识
目 录
第1章 数据结构与算法1
1、算法1
2、数据结构的基本概念2
3、线性表及其存储结构2
4、栈和队列3
5、线性链表3
6、树与二叉树4
7、查找技术5
8、排序技术5
第2章 程序设计基础6
1、程序设计方法与风格6
2、结构化程序设计6
3、面向对象的程序设计7
第3章 软件工程基础7
1、软件工程基础概念7
2、结构化分析方法8
3、结构化设计方法9
4、软件测试9
5、程序的调试9
第4章 数据库设计基础10
1、数据库系统的基本概念10
2、数据模型11
3、关系代数12
4、数据设计与管理12
第1章数据结构与算法
一、算法
1.算法的概念:
是指解题方案的准确而完整的描述。
2.算法的基本特征:
1)可行性
2)确定性
3)有穷性
4)拥有足够的情报
3.算法的基本要素
1)算法中对数据的运算和操作
a)算术运算
b)逻辑运算
c)关系运算
d)数据传输
2)算法的控制结构
a)顺序结构
b)选择结构(分支结构)
c)循环结构
4.算法设计基本方法
1)列举法:
根据提出的问题列举所有可能的情况,并用问题中给定的条件进行检验,找出答案。
学用于解决“是否存在”或“有多少种可能”等类型的问题。
2)归纳法:
通过列举少量的特殊情况,经过分析,最后找出一般的关系。
3)递推:
指从已知的初始条件出发,逐次售出所要求的各中间结果和最后结果。
(本质上也属于归纳法)
4)递归:
将问题逐层分解,最后归结为一些最简单的问题。
a)直接递归:
一个算法P地调用自己
b)间接递归:
算法P调用另一算法Q,而算法Q又调用算法P。
5)减半递推技术:
指将问题的规模减半,而问题的性质不变(即减半)并重复进行(即递推)。
6)回溯法:
通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,每步试探成功则继续,直至问题解决,否则换路线再试探。
5.算法的复杂度
1)算法的时间复杂度:
指执行算法所需要的计算工作量。
a)计算方法(P4):
用算法所执行的基本运算次数来试题,而算法所执行的基本运算次数是问题规模的函数:
算法的工作量=f(n)其中n是问题的规模。
b)同一问题规模下分析算法的工作量方法:
I.平均性态(P5):
指用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。
II.最坏情况复杂性(P5):
指在规模为n时,算法所执行的基本运算的最大次数。
2)算法的空间复杂度:
指执行这个算法所需要的内存空间。
二、数据结构的基本概念
1.数据结构学科讨论的三个问题:
1)数据集合中各数据之间所固有的逻辑关系,即数据的逻辑结构;
2)对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
3)对各种数据结构进行的运算。
2.研究数据结构的目的:
提高数据处理的效率
1)提高数据处理的速度
2)尽量减少数据处理过程中占用的计算机存储空间。
3.什么是数据结构:
1)数据结构的概念:
反映数据元素之间关系的数据元素集合的表示(或指带有结构的数据元素的集合),至少应包含以下信息:
a)表示数据元素的信息;
b)表示各数据元素之间的前后件关系。
2)数据的逻辑结构:
指反映数据元素之间逻辑关系的数据结构,它有两个要素:
(P9)
a)数据元素的集合,通常记为D;
b)数据元素推集合上的关系(即反映D中各数据元素之间前后件的关系),通常记为R
3)数据的存储结构:
数据的逻辑结构在计算机存储空间中的存放形式(即数据的物理结构)。
常见的存储结构有4种:
顺序存储、链式存储、索引存储和散列存储。
4.数据结构的图形表示
5.线性结构与非线性结构:
根据数据结构中各数据元素之间前后件关系的复杂程序可分为两大类型,即线性结构和非线性结构。
1)线性结构:
一个非空的数据结构满足以下两个条件即为线性结构,或称线性表。
线性结构中插入或删除任何一个结点后还是线性结构。
常见的线性表如:
线性表、线性链表、栈、队列等。
a)有且只有一个根结点;
b)每一个结点最多有一个前件,也最多有一个后件。
2)非线性结构:
不符合线性结构规则的数据结构称非线性结构。
如树、二叉树和图等。
三、线性表及其顺序存储结构
1.线性表的基本概念
1)线性表:
由n(n>=0)个数据元素组成的一个有限序列,表中每一个数据元素除第一个外,有且只有一个前件,除最后一个外,有且只有一个后件。
线性表也可以是一个空表,即n=0。
2)线性表顺序存储两个基本特点:
a)线性表中所有元素所占的存储空间是连续的;
b)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
2.顺序表:
用顺序存储方式形成的线性表称顺序表,顺序表的结构简单,适合存放元素不经常变动的线性表。
1)顺序存储方式:
把逻辑上相邻的结点存储在物理位置相邻的存储单元中,可以实现随机存取。
2)顺序表的插入运算:
在顺序表中插入元素,会使插入位置后的其它元素依次后移,如插入时系统为线性表开辟的存储空间已满,则会造成“上溢”错误。
顺序表较长时,插入运算的效率很低。
3)顺序表的删除运算:
删除顺序表的一个元素,会使删除位置后的其它元素依次前移。
顺序表较长时,删除运算的效率也很低。
四、栈和队列
1.栈:
只允许在一端进行插入与删除元素操作的线性表称“栈”也称“堆栈”。
允许插入与删除的一端称“栈顶”,不允许进行插入与删除的一端称“栈底”。
栈按照“先进后出、后进先出”的原则组织数据。
1)栈的顺序存储:
可以用一维数组作为栈的顺序存储空间,另需用一个变量作栈顶指针,记录栈顶位置。
2)栈的运算:
a)入栈运算:
往栈中插入一个元素。
首先将栈顶指针进一,然后将新元素插入到栈顶指针指向的位置。
如栈顶指针已经指向存储空间的最后一个位置则栈满,再进行入栈操作就会造成“上溢”错误。
b)退栈(出栈):
从栈中删除一个元素。
首先将栈顶元素的值赋给一个指定的变量,然后将栈顶指针退一。
如栈顶指针为0则栈空,如再进行退栈操作则会造成“下溢”错误。
c)读栈顶元素:
将栈顶元素赋给一个指定的变量。
读栈操作不会改变栈顶指针,即不删除栈顶元素。
如栈顶指针为0则因栈空而读不到栈顶元素。
2.队列:
允许在一端进行插入而在另一端进行删除的线性表。
允许插入的一端称为队尾,允许删除的一端称为排头(也称除头)。
队列按照“先进先出、后进后出”的原则组织数据。
1)队列的顺序存储:
队列也可以用一维数组作为队列的顺序存储空间。
另需一个变量记录队尾位置,另一个变量记录排头位置,还有一个变量记录队中元素个数。
2)循环队列:
将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。
循环队列的初始状态为空,即队尾、排头都指向数组的最后一个单元,队列元素个数为0。
3)循环队列的运算:
a)入队运算:
首先将队尾加1(如超过最后一个单元位置时变为1),队列元素记录变量也加1,然后将新元素插入到队尾指向的位置,当队列非空,而队尾等于排头时则队列已满,再入队就会“上溢”错误;
b)退队(出队)运算:
首先将排头加1(如排头超过最后一个单元位置时就变为1),队列元素记录变量减1,然后将排头指向的元素值赋给指定的变量,当队列为空时再进行退队操作就会“下溢”错误。
五、线性链表
1.基本概念:
1)指针:
用来存放存储位置的存储单元(变量)称指针。
2)结点:
假设数据结构中的每个数据结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。
3)链式存储方式:
由存放数据元素值的数据域和存放指针的指针域两部分构成结点,指针域记录前后结点的位置,形成像链条一样的存储方式称为链式存储方式。
链式存储方式中存储单元可以是不连续的,但访问必须顺序进行。
2.线性链表:
用链式存储结构存储线性表称为线性链表。
在链表中有一个头结点,它是为方便运算的实现而增加的。
1)线性单链表:
即指针域只记录前结点位置或后结点位置形成的线性链表。
2)线性双向链表:
即指针域同时记录前后结点位置形成的线性链表。
其中一个称为左指针用于指向前件结点,另一个称右指针,用于指向后件结点。
3.带链的栈和队列:
使用链式存储结构存储栈和队列。
4.线性链表的基本运算:
1)在线性链表中查找指定元素
2)线性链表的插入
3)线性链表的删除
5.循环链表
1)循环链表:
在链表中增加头结点,并让最后一个结点的指针批向头结点,形成一个环状链;
2)基本运算:
插入与删除结点。
六、树与二叉树
1.树:
1)概念:
每个结点只有一个前件(父结点),而后件(子结点)可以有多个。
没有前件的结点称树根,没有后件的结点称叶子。
2)度:
一个结点所拥有的后件个数称为该结点的度,所有结点中的最大的度称为树的度。
3)层:
树的结构是分层的,树的最大层次称为树的深度。
4)子树:
以某结点的一个子结点为根构成的树称为该结点的一棵子树。
2.二叉树:
1)概念:
只有一个根结点,每个结点最多只有两棵子树(左子树与右子树),这样的树称二叉树。
2)基本性质:
a)性质1:
第k层上最多有2k-1(k>=1)个结点。
b)性质2:
深度为m的二叉树最多有2m-1个结点。
c)性质3:
在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。
d)性质4:
具有n个结点的二叉树中,其深度到少为(Log2N)+1的整数值。
e)性质5:
具有n个结点的完全二叉树的深度为[log2n]+1
f)性质6:
设完全二叉树共有n个结点。
如果从根结点开始,按层序(每层从左到右)用自然数列给结点进行编号,则对于编号为k的结点有以下结论:
I.若k=1,则该结点为根结点;若k>1则该结点的父结点编号为Int(k/2)。
II.若2k<=n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点。
III.若2k+1<=n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。
3)满二叉树:
除最后一层外,每一层上的所有结点都有两个子结点,则该二叉树称满二叉树。
满二叉树每层上的结点数都达到最大值,即第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
4)完全二叉树:
除最后一层外,每个层上的结点数均达到最大值,而最后一层上只缺少右边的若干结点。
完全二叉树的叶子结点数为:
总结点数-int(总结点数/2)
5)二叉树的存储结构:
二叉树通常用链式结构存储。
6)二叉树的遍历:
不重复地访问二叉树中所有结点称遍历。
遍历二叉树的过程是一个递归的过程。
a)前序遍历:
先访问根结点,然后访问左子树,最好访问右子树。
b)中序遍历:
首先遍历左子树,然后访问根结点,最后遍历右子树。
c)后序遍历:
首先遍历左子树,然后遍历右子树,最后访问根结点。
七、查找技术
1.顺序查找:
又称顺序搜索,指从第一个元素开始在线性表中查找指定的元素。
对大的线性表顺序查找的效率很低,但在下列两种情况下只能采用顺序查找:
1)如果线性表为无序表;
2)采用链式结构的有序线性表。
2.二分查找:
从有序表的中间开始查找,如比中间小则在前半部分的中间再找,否则从后半部分的中间再找,重复上面的过程,直至找到指定的元素。
二分查找只能查找顺序存储的有序表,查找效率比顺序查找高得多,长度为n的有序线性线最坏情况下二分查找只要比较log2n次,而顺序查找需比较n次。
八、排序技术:
指将一个无序序列整理成按值非递减顺序排列的有序序列。
1.交换类排序法:
指通过互相交换数据元素值方法进行排序。
常见有以下两种:
1)冒泡排序法:
依次扫描线性表,把表相阾两个元素中较大的元素往后移(每次移动称消去一个逆序),直到把最大的元素移到表尾,然后再重复上面过程,在剩下的线性表中进行排序,直到剩下的线性表为空。
所以冒泡排序又称下沉排序。
假设线性表长度为n,冒泡排序的最坏情况需要经过n(n-1)/2遍比较。
2)快速排序法:
从线性表中选取一个元素T作为标准,把比T小的元素移到前面,比T大的元素移到后面,结果就将线性表分成了两个子表,然后对子表分别重复上面的过程,直至各子表为空。
具体实现如下:
a)首先在表的第一、中间一个和最后一个元素中选取一个中项(设为p(k)元素),并用变量T记住P(k)的值,再将第一个元素移动到p(k)位置上,然后设置两个指针I和j,I记录表的起始位置,j记录表的结束位置;
b)将j逐渐减小,并不断比较p(j)与T,如发现p(j)
c)不断重复b)中的操作,直至指针I与j相等(即指向同一位置),将T移到p(i)位置上。
2.插入类排序法:
指将无序序列中的各元素依次插入到已经有序的线性表中而完成的排序操作。
1)简单插入排序法:
把第一个元素看作一个有序子表。
用T记住剩下线性表的第一个元素值。
从有序子表最后一个元素开始扫描,把比T大的元素依次后移一个位置,直至发现不大于T的元素或没有发现不大于T的元素为止,把T插入到有序子表中空出来的位置上,使有序子表长度加1。
重复上面的操作,直至有序子表长度与线性表相同。
排序效率与冒泡排序一样,最坏情况下,长度为n的线性表使用简单插入排序需要n(n-1)/2次比较。
2)希尔排序法:
将整个无序序列分割成若干个小的子序列,然后分别进行插入排序。
具体实现时一般会先以序列的一半长度作为分割子序列单位,然后再逐次减小分割单位,直至分割单位为1。
本排序的效率与所选取的增量序列有关,按上述增量最坏情况下希尔排序所需要的比较次数为O(n1.5)。
3.选择类排序法:
扫描整个线性表,选出最小的元素将它交换到表的最前面;然后在剩下的子表中重复使用这个操作,直至子表为空。
1)简单选择排序法:
最坏情况下需要比较n(n-1)/2次
2)堆排序法P38:
最坏情况下,堆排序需要比较的次数为O(nlog2n)。
4.*归并排序:
指将两个或两个以上的有序表组合成一个新的有序表。
它的内存量较前面几种都要大。
九、几个补充
1.算法分析:
是指对一个算法的运行时间和占用空间做定量分析,目的是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。
2.*强连通图:
在有向图中若任意两个顶点都连通,则该图为强连通图。
有n个顶点的强连通图到少有n条边。
链表与顺序表比较:
顺序表访问方便,可以随机访问;链表插入删除结点比顺序方便。
第2章程序设计基础
一、程序设计方法与风格
1.当今主导的程序设计风格:
清晰第一,效率第二。
2.形成良好程序设计风格:
1)源程序文档化
2)数据说明的次序规范,变量安排有序,使用注释。
3)语句的结构
4)输入和输出尽可能方便用户使用。
二、结构化程序设计
1.结构化程序设计的原则
1)自顶向下:
程序设计时从总体到细节,从全局目标到局部目标。
2)逐步求精:
对复杂问题应设计一些子目标作过渡,逐步细化。
3)模块化:
总目标分解为人目标,再进一步分解为具体的小目标,每个小目标称为一个模块。
4)限制使用goto语句。
2.结构化程序的基本结构与特点
1)顺序结构:
是最基本、最常用的结构,按程序语句的自然顺序一条一条地执行。
2)选择结构:
又称分支结构,包括简单选择和多分支选择结构。
根据设定的条件选择其中一条分支来执行相应的语句序列。
3)重复结构:
又称循环结构。
根据给定的条件,重复执行同一相同或类似的程序段,直到允许循环的条件被破坏为止。
总之,遵循结构化程序的设计原则可以有以下优点:
1)易于理解使用和维护;
2)提高编程工作的效率,降低开发成本。
3.结构化程序设计原则和方法的应用
1)使用顺序、选择和循环等有限的控制结构表示程序的控制逻辑;
2)选用的控制结构只许有一个入口和一个出口;
3)程序块组成要容易识别,每块只有一个入口和一个出口;
4)使用基本控制结构进行嵌套与组合来实现复杂结构;
5)用前后一致的方法来模拟三种基本结构以外的控制结构;
6)严格控制GOTO语句的使用。
三、面向对象的程序设计
1.面向对象方法的本质:
系统中的对象以及对象之间的关系能够如实地反映问题域中因有事物及关系。
面向对象模型最基本的概念为对象和类。
2.基本原理:
使用现实世界的抽象地思考问题从而自然地解决问题。
它强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。
3.面向对象方法的优点:
1)与人类习惯的思维方法一致,面向对象的核心是对象。
2)稳定性好
3)可重用性好:
可继承父类的所有属性和方法。
4)易于开发大型软件产品
5)可维护性好
a)稳定性好
b)容易修改
c)容易理解
d)易于测试和调试
4.面向对象方法的基本概念
1)对象(object):
应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,它既可以是具体的物理实体的抽象,也可以是人为的概念。
2)对象的基本特点:
a)标识惟一性
b)分类性
c)多态性
d)封装性
e)模块独立性好
3)类和实例
a)类:
指具有共同属性、方法的对象的集合。
b)实例:
类的其中一个具体应用就是一个实例。
4)消息:
实例之间相互传递的信息叫消息,传送的消息实质上是接受对象所具有的操作/方法名称,有时还包括相应参数。
5)继承:
使用已有的类定义作基础建立新类的定义技术。
它是面向对象方法的一个主要特征。
继续分为单继承与多重继承。
a)单继承:
指一个类只允许有一个父类。
b)多重继承:
指一个类允许有多个父类。
多态性:
指同样的消息被不同的对象接受时可导致完全不同行动的现象。
第3章软件工程基础
一、软件工程的基本概念
1.软件:
是计算机系统中与硬件相互储存的程序、数据及相关文档的完整集合。
所以软件由机器可以执行的程序和数据,及是机器不可执行的相关文档两部分构成。
1)程序:
是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。
2)数据:
是使程序能正常操纵信息的数据结构。
3)文档:
是与程序开发、维护和使用有关的图文资料。
2.软件的特点
1)软件是一种逻辑实体,不是物理实体,具有抽象性。
2)软件的生产与硬件不同,没有明显的制作过程。
3)软件的运行与使用不存在磨损与老化问题。
4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。
5)软件复杂性高,成本昂贵。
6)软件开发涉及诸多的社会因素。
3.软件的分类:
按功能分可为应用软件、系统软件、支撑软件(工具软件)。
4.软件危机与软件工程
1)软件危机:
泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
归结起来为成本、质量、生产率等问题。
2)软件工程:
是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档实践标准和工序。
a)软件工程三要素:
方法、工具和过程。
b)软件工程的核心思想:
把软件产品看作是一个工程产品来处理。
3)软件工程过程:
是把输入转化为输出的一组彼此相关的资源和活动。
a)软件工程过程是指为获得软件产品,在软件工具运行下由软件工程师完成的一系列软件工程活动。
包括4种基本活动:
软件规格说明、软件开发、软件确认、软件演进。
b)从软件开发的观点看,它是使用适当的资源为开发软件进行的一组开发活动,在过程结束时将输入转化为输出。
4)软件生命周期:
通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
可以粗略划分为软件定义、软件开发、和软件运行维护三个阶段。
软件生命周期的主要活动阶段是:
a)可行性研究与计划制定:
确定开发目标和总的要求,给出可行方案,制定开发计划。
b)需求分析:
根据用户的需求进行分析并给出详细定义,即确定软件系统的功能。
c)软件设计:
在反复理解软件需求的基础上给出软件结构、模块划分、功能分配及处理流程。
d)软件实现:
把软件设计转换成计算机可以接受的程序代码,即完成源程序的编码和相关用户文档,编写单元测试计划。
e)软件测试:
检验软件的各个组成部分,编写测试分析报告。
f)运行和维护:
交付使用,并不断进行维护,根据新需求进行扩充和删改。
本阶段所花的费用远远大于开发阶段。
软件的维护分改正性维护、适应性维护、完善性维护和预防性维护4种。
5)软件工程的目标与原则
a)软件工程的目标:
在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
b)软件工程的理论和技术研究的主要包括:
软件开发技术和软件工程管理。
c)软件工程的原则:
抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
这也是软件设计所必须遵循的原则。
P54
6)软件开发环境:
是全面支持软件开发全过程的软件工具集合。
计算机辅助软件工程 缩写 CASE
二、结构化分析方法
1.软件开发方法:
是软件开发过程所遵循的方法和步骤。
包括分析方法、设计方法和程序设计方法。
2.结构化分析方法:
其核心和基础是结构化程序设计理论,包括结构化分析方法、结构化设计方法和结构化编程方法。
1)需求分析与其方法
a)需求分析:
指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
有四个方面的工作:
需求获取、需求分析、编写需求规格说明书和需求评审。
b)需求分析方法:
I.结构分析方法:
包括面向数据流的结构化分析方法、面向数据结构的Jackson方法、面向数据结构的结构化数据系统开发方法。
II.面向对象的分析方法
III.按需求分析建立的模型特性分可分为静态分析方法和动态分析方法。
2)结构化分析方法:
是结构化程序设计理论在软件需求分析阶段的运用。
a)数据流图P56:
是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。
b)数据字典:
是结构化分析方法的核心,是对所有与系统相关的数据元素的一个有组织的列表。
c)软件需求规格说明书:
是需求分析阶段的最后成果,是软件开发中的重要文档之一。
其作用为
I.便于理解与交流
II.作为软件开发的基础和依据
III.作为确认测试和验收的依据
3)结构需求分析的常用方法:
a)数据流图(DFD):
用于描述数据处理过程。
主要的描述图符有加工(转换)“○”、数据流“→”、存储文件(数据源)“〓”、源和潭“□”。
b)数据字典(DD):
是各类数据描述的集合,通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分。
c)判定树
d)判定表
三、结构化设计方法
1.软件设计的基本概念
1)软件设计的构成:
a)软件结构设计:
定义软件系统各主要部件之间的关系;
b)数据设计:
将分析时创建的模型转化为数据结构的定义;
c)接口设计:
描述软件内部、软件和操作系统之间及软件与人之间如何通信;
d)过程设计:
把系统结构部件转换成软件的过程性描述。
2)软件设计的步骤:
从工程管理角度,软件设计分两步完成:
概要设计和详细设计。
3)概
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机等级考试 二级 VB 公共 基础知识