




已阅读5页,还剩221页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机等级考试二级公共基础知识,基本要求,1.掌握算法的基本概念。2.掌握基本数据结构及其操作。3.掌握基本排序和查找算法。4.掌握逐步求精的结构化程序设计方法。5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。6.掌握数据库的基本知识,了解关系数据库的设计。,考试内容,一、基本数据结构与算法,1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。,二、程序设计基础,1.程序设计方法与风格。2.结构化程序设计。3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。,三、软件工程基础,1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。3.结构化设计方法,总体设计与详细设计。4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。5.程序的调试,静态调试与动态调试。,四、数据库设计基础,1.数据库的基本概念:数据库,数据库管理系统,数据库系统。2.数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。,考试方式,1、公共基础的考试方式为笔试,与C语言(VisualBASIC、VisualFoxPro、Java、Access、VisualC+)的笔试部分合为一张试卷。公共基础部分占全卷的30分。2、公共基础知识有10道选择题和5道填空题。,学习方法,理解基本概念多做练习适当记忆一些名词与所学的VFPcAccess程序设计知识结合起来,以增加对知识的理解能力,1.基本数据结构与算法,1.1算法,1.1.1算法(algorithm)基本概念,对特定问题求解步骤的一种描述,它是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。,一级算法:S1:输入圆的半径r;S2:求周长2r;S3:求面积r2;S4:输出周长和面积;,例题:已知圆的半径,求周长和面积.,程序,dowhile.t.input“输入圆的半径:”torifr0?“输入不能是负数,重新输入!”loopelseexitendifenddoS=pi()*r*rL=2*pi()*r?S,L,算法的基本特征:(1)可行性(2)确定性(3)有穷性(4)输入和输出(拥有足够的情报),1.1.2算法的基本要素1、对数据对象的运算和操作算术运算逻辑运算关系运算数据传输2、算法的控制结构算法中各操作之间的执行顺序一个算法一般可以用顺序、选择、循环三种基本结构组合而成。,input“输入圆的半径:”torifr0?“输入不能是负数,重新输入!”循环输入relse退出循环endifS=pi()*r*rL=2*pi()*r输出S,L,算术运算逻辑运算关系运算数据传输,顺序、选择、循环三种基本结构,1.1.3算法设计基本方法列举法归纳法递推递归(以简洁的形式设计和描述算法)减半递推技术回溯法,1.2算法复杂度,1.2.1时间复杂度是指执行算法所需要的计算工作量。通常有事后统计法和事前分析估算法。算法在执行过程中所需基本运算的执行次数来度量算法的工作量.算法所执行的基本运算次数与问题的规模n有关.,执行算法所需要的计算工作量和f(n)同步增长,记为:,算法的工作量=f(n),时间复杂度=O(f(n),例子4:for(i=2;i=n;+i)for(j=2;jnext=headD)p=head循环链表的主要优点是A)不再需要头指针了B)从表中任一结点出发都能访问到整个链表C)在进行插入、删除运算时,能更好的保证链表不断开D)已知某个结点的位置后,能够容易的找到它的直接前件当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】。用链表表示线性表的突出优点是【1】。,上溢,插入、删除灵活,1.7栈和队列,1.7.1栈和队列的定义栈和队列是两种特殊的线性表,它们是运算时要受到某些限制的线性表,故也称为限定性的数据结构。,1.栈,栈是限定仅在表尾进行插入或删除操作的线性表。栈顶表尾。栈底表头。空栈不含元素的空表。,进栈,出栈,栈s=(a1,a2,an),后进先出(LIFO),2.栈的顺序存储结构及其基本运算,用顺序存储结构表示的栈:顺序栈用一组连续的存储单元存放自栈底到栈顶的数据元素,一般用一维数组表示,设置一个简单变量top指示栈顶位置,称为栈顶指针,它始终指向待插入元素的位置。,基本运算:压(进)栈:PUSH出栈:POP读栈顶元素:gettop,例子:,空桟:topbase非空桟:top始终在桟顶元素的后一个位置,桟的元素个数:,top-base,上溢,下溢,3.队列定义:一种特殊的线性结构,限定只能在表的一端进行插入,在表的另一端进行删除的线性表。此种结构称为先进先出(FIFO)表。,4.队列的顺序存储结构及其基本运算,空队列:非空队列:队列元素个数:,rear=front=-1,front始终指向队头元素前一个位置,而rear始终指向队尾元素的位置,rear-front,循环队列,基本思想:把队列设想为一个循环的表,臆想elem0接在elemmaxsize-1之后.,上溢,下溢,front=rear队满,front=rear队空,栈和队列的共同特点是A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素D)没有共同点如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2B)e2,e4,e3,e1C)e3,e4,e1,e2D)任意顺序一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用A)栈B)堆C)数组D)链表,例题讲解,栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是A)ABCEDB)DCBEAC)DBCEAD)CDABE栈通常采用的两种存储结构是A)线性存储结构和链表存储结构B)散列方式和索引方式C)链表存储结构和数组D)线性存储结构和非线性存储结构栈和队列通常采用的存储结构是【1】。下列数据结构中,按先进后出原则组织数据的是A)线性链表B)栈C)循环链表D)顺序表当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】。,链表存储结构和数组,上溢,由两个栈共享一个存储空间的好处是A)减少存取时间,降低下溢发生的机率B)节省存储空间,降低上溢发生的机率C)减少存取时间,降低上溢发生的机率D)节省存储空间,降低下溢发生的机率下列关于栈的叙述中正确的是)在栈中只能插入数据B)在栈中只能删除数据C)栈是先进先出的线性表D)栈是后进先出的线性表下列关于队列的叙述中正确的是)在队列中只能插入数据B)在队列中只能删除数据C)队列是先进先出的线性表D)队列是后进先出的线性表,1.6.1树的定义由一个或多个结点组成的有限集合。仅有一个根结点,结点间有明显的层次结构关系。,现实世界中,能用树的结构表示的例子:学校的行政关系、书的层次结构、人类的家族血缘关系等。,1.6树,介绍几个概念:结点(Node):树中的元素,包含数据项及若干指向其子树的分支。结点的度(Degree):结点拥有的子树数。结点的层次:从根结点开始算起,根为第一层。叶子(Leaf):度为零的结点,也称端结点。孩子(Child):结点子树的根称为该结点的孩子结点。兄弟(Sibling):同一双亲的孩子。双亲(Parent):孩子结点的上层结点,称为这些结点的双亲。树的深度(Depth):树中结点的最大层次数。树的度:结点所具有的最大的度.森林(Forest):M棵互不相交的树的集合。,1.6.2二叉树(BinaryTree),1、二叉树的定义及其性质(1)二叉树的定义,二叉树的五种基本形态,二叉树一种特殊的树形结构,特点是树中每个结点最多只能有两棵子树(即二叉树中不存在度大于2的结点),且子树有左右之分,次序不能颠倒。,二叉树是n(n0)个结点的有限集合。它或为空数(n=0),或由一个根结点和两棵分别称为根的左子树和右子树的互不相交的二叉树组成。,特别要注意:二叉树不是一般树的特殊情况,而是另一种树形结构.,a,a,b,b,两棵不同的二叉树,一棵树,性质1:二叉树的第i层上至多有2i-1(i1)个结点。,(2)二叉树的基本性质,第三层上(i=3),有23-1=4个节点。第四层上(i=4),有24-1=8个节点。,性质2:深度为k的二叉树中至多含有2k-1个结点。,性质:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。,证明:设n1为二叉树T中度为1的结点数;二叉树中所有结点的度均小于或等于2其结点总数为:n=n0+n1+n2二叉树中除了根结点外,其余结点都有一个分支进入设分支总数为B;则n=B+1;二叉树的分支是由度为1或2的结点射出的B=n1+2*n2n=n1+2*n2+1=n0+n1+n2n0=n2+1,满二叉树,特点:每一层上都含有最大结点数。,完全二叉树,特点:(1)除最后一层外,每一层都取最大结点数,(2)最后一层结点都集中在该层最左边的若干位置。,性质:具有n个结点的完全二叉树的深度为,例:n=2k=2n=6k=3n=7k=3n=8k=4n=12k=4,性质:如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1=n,则结点i无右孩子;否则其右孩子Rchild(i)是结点2i+1。,例:,i=1是树的根,无双亲;其左孩子为2*i=2,右孩子为2*i+1=3.,2*i=18122*i+1=1912其无左、右孩子。,2*i+1=1312其无右孩子。,树与二叉树的区别,A树和二叉树的结点个数最少都可为0。B树中结点的最大度数没有限制,二叉树结点最大度数为2。C树的结点无左、右之分,二叉树的结点子树有明确的左、右之分。,3个结点的树,3个结点的二叉树,2、二叉树的存储结构,(2)链式存储结构,T16,若父结点在数组中i下标处,其左孩子在2*i处,右孩子在2*i+1处。,(1)顺序存储结构,(1)顺序存储结构,2h-1=,24-1=15,用一组连续的存储单元存放二叉树的数据元素。结点在数组中的相对位置蕴含着结点之间的关系。,一般二叉树必须按完全二叉树的形式存储,将造成存储的浪费。,(2)、链式存储结构,链式存储结构,二叉链表三叉链表,二叉链表:,二叉链表的结点包含三个域:数据域、左、右指针域。,例:,三叉链表:,三叉链表的结点包含四个域:数据域、左、右、双亲指针域。,例:,链式存储结构的特点:(1)操作便于实现(2)结构复杂,1.6.3二叉树的遍历查找某个结点,或对二叉树中全部结点进行某种处理,就需要遍历。(1)遍历定义及遍历算法遍历是指按某条搜索路线寻访树中每个结点,且每个结点只被访问一次。按先左后右的原则,一般使用三种遍历:先序遍历(DLR):访问根结点,按先序遍历左子树,按先序遍历右子树。中序遍历(LDR):按中序遍历左子树,访问根结点,按中序遍历右子树。后序遍历(LRD):按后序遍历左子树,按后序遍历右子树,访问根结点。二叉树为空时,执行空操作,即空二叉树已遍历完。,(2)遍历算法,先序遍历:DLR中序遍历:LDR后序遍历:LRD,A,D,B,C,DLR,以先序遍历DLR为例演示遍历过程,ABDC,BDAC,DBCA,LDR,LDR,a,+,LDR,b,*,LDR,c,-,d,-,LDR,e,/,f,中序遍历示图,已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedB)decabC)deabcD)cedba已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为A)GEDHFBCAB)DGEBHFCAC)ABCDEFGHD)ACBFEDHG树是结点的集合,它的根结点数目是A)有且只有1B)1或多于1C)0或1D)至少2下列叙述中正确的是A)线性表是线性结构B)栈与队列是非线性结构C)线性链表是非线性结构D)二叉树是线性结构,例题讲解,在深度为5的满二叉树中,叶子结点的个数为A)32B)31C)16D)15若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是A)bdgcefhaB)gdbecfhaC)bdgaechfD)gdbehfca在树结构中,树根结点没有【1】。具有3个结点的二叉树有A)2种形态B)4种形态C)7种形态D)5种形态设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为A)12B)13C)14D)15,双亲结点,设有下列二叉树:对此二叉树前序遍历的结果为A)ZBTTCPXAB)ATBZXCTPC)ZBTACTXPD)ATBZXCPT设有下列二叉树:对此二叉树的中序遍历的结果为A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA,设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1。则T中的叶子结点数为A)8B)7C)6D)5设一棵完全二叉树共有700个结点,则该二叉树中有()个叶子结点。在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有()个元素。设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为()。,350,3,DEBFCA,1.7查找和排序,顺序查找与二分查找算法基本排序算法(交换类排序、选择类排序、插入类排序),1.7.1查找,查找是在一个给定的数据结构中,根据给定的条件查找满足条件的结点。不同的数据结构采用不同的查找方法。查找的效率直接影响数据处理的效率。查找的结果:查找成功:找到满足条件的结点查找失败:找不到满足条件的结点。,1.7.1.1顺序查找(线性查找),查找过程:对给定的一关键字K,从线性表的一端开始,逐个进行记录的关键字和K的比较,直到找到关键字等于K的记录或到达表的另一端。可以采用从前向后查,也可采用从后向前查的方法。在平均情况下,大约要与表中一半以上元素进行比较,效率较低。平均查找长度较大。最好情况:1最坏情况:n在下面两种情况下只能采取顺序查找:a.线性表为无序表(元素排列是无序的);b.即使是有序线性表,但采用的是链式存储结构。,1.7.1.2折半查找(二分法查找),思想:先确定待查找记录所在的范围,然后逐步缩小范围,直到找到或确认找不到该记录为止。前提:必须在具有顺序存储结构的有序表中进行。分三种情况:1)若中间项的值等于x,则说明已查到。2)若x小于中间项的值,则在线性表的前半部分查找;3)若x大于中间项的值,则在线性表的后半部分查找。特点:比顺序查找方法效率高。最坏的情况下,需要比较log2n次。,1.7.2排序,1.7.2.1概述1、排序的功能:将一个数据元素(或记录)的任意序列,重新排成一个按关键字有序的序列。2、排序过程的组成步骤:首先比较两个关键字的大小;然后将记录从一个位置移动到另一个位置。,排序方法,插入排序,选择排序,交换排序,归并排序,简单插入排序,希尔排序,简单选择排序,堆排序,起泡排序,快速排序,1.7.2.2插入排序简单插入、希尔排序,1、简单插入排序:基本思想:从数组的第2号元素开始,顺序从数组中取出元素,并将该元素插入到其左端已排好序的数组的适当位置上。,该算法适合于n较小的情况,时间复杂度为O(n2).,待排元素序列:532736156942第一次排序:275336156942第二次排序:273653156942第三次排序:152736536942第四次排序:152736536942第五次排序:152736425369直接插入排序示例,对于有n个数据元素的待排序列,插入操作要进行n-1趟,最坏情况下:需要n(n-1)/2次比较最好:n-1次比较,希尔排序:,希尔排序的基本思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序.最坏情况下:需要O(n1.5)次比较,1、简单选择排序思想:首先从1n个元素中选出关键字最小的记录交换到第一个位置上。然后再从第2个到第n个元素中选出次小的记录交换到第二个位置上,依次类推。,1.7.2.3选择排序简单选择排序、堆排序,初态,83916,83916,83916,83916,13986,13986,13986,时间复杂度为O(n2),适用于待排序元素较少的情况。,比较次数:n(n-1)/2次,2、堆排序(也是一种选择排序)堆是具有特定条件的顺序存储的完全二叉树,其特定条件是:任何一个非叶子结点的关键字大于等于(或小于等于)子女的关键字的值。,(a):堆顶元素取最大值,(b):堆顶元素取最小值,堆排序需要比较的次数为O(nlog2n),(1)堆的示例,1.7.2.4交换排序交换排序的特点在于交换。有冒泡和快速排序两种。1、冒泡排序(起泡排序)思想:小的浮起,大的沉底。从左端开始比较。第一趟:第1个与第2个比较,大则交换;第2个与第3个比较,大则交换,关键字最大的记录交换到最后一个位置上;第二趟:对前n-1个记录进行同样的操作,关键字次大的记录交换到第n-1个位置上;依次类推,则完成排序。,第六趟排序后,第五趟排序后,第四趟排序后,第三趟排序后,第二趟排序后,第一趟排序后,初始关键字,思想:小的浮起,大的沉底。,排序n个记录最多需要n-1趟冒泡排序正序:比较次数为O(n-1)逆序:比较次数为O(n(n-1)/2)适合于数据较少的情况。,2、快速排序(对冒泡排序的改进)思想:通过一趟排序将待排序列分成两部分,使其中一部分记录的关键字均比另一部分小,再分别对这两部分排序,以达到整个序列有序。时间复杂度:O(log2n)当待排序列逆序时,蜕变成冒泡排序,时间复杂度:O(n(n-1)/2),1.7.2.5内部排序方法的选择各种排序方法各有优缺点,故在不同情况下可作不同的选择。通常需考虑的因素有:待排序的记录个数;记录本身的大小;记录的键值分布情况等。若待排序的记录个数n较小时,可采用简单排序方法。若n较大时,应采用快速排序或堆排序。若待排序的记录已基本有序,可采用简单插入和起泡排序。,查找:,排序:,n-1n(n-1)/2,n1.5,n(n-1)/2,nlog2n,n-1n(n-1)/2,log2n,n(n-1)/2,正序的表、n小的表,与表的初始数据无关、n小的表,正序的表、n小的表,n大的表,但逆序的表会蜕变为起泡排序,借助辅助空间最多的方法,n大的表,在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【2】。长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为A)log2nB)n2C)O(n1.5)D)n(n-1)/2已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是A)堆排序B)直接插入排序C)快速排序D)直接选择排序,例题讲解,log2n,n/2,冒泡排序算法在最好的情况下的元素交换次数为【1】。在最坏情况下,堆排序需要比较的次数为【2】。最简单的交换排序方法是A)快速排序B)选择排序C)堆排序D)冒泡排序排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【1】和选择排序等。,0,nlog2n,交换排序,在下列几种排序方法中,要求内存量最大的是A)插入排序B)选择排序C)快速排序D)归并排序在待排序的元素序列基本有序的前提下,效率最高的排序方法是A)冒泡排序B)选择排序C)快速排序D)归并排序希尔排序属于A)交换排序B)归并排序C)选择排序D)插入排序对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为)n+1B)nC)(n+1)/2D)n/2,2.程序设计基础,2.1程序设计方法与风格,2.1.1程序设计方法结构化设计方法面向对象程序设计方法,1.源程序的文档化符号的命名:见名知意注释(序言性和功能性注释)程序的视觉组织:空格、空行、缩进。2.数据说明数据说明的次序应该规范化变量安排有序化对复杂数据结构应注释说明3.语句的结构每条语句简单明了尽量不用或少用GOTO语句尽量只采用3种基本控制结构编程4.输入和输出对所有输入数据进行校验和合理性检查输入输出格式保持一致设计良好的输出报表,清晰第一,效率第二,2.1.2程序设计风格,2.2结构化程序设计,2.2.1基本概念基本思想对大型的程序设计,使用一些基本的结构来设计程序,无论多复杂的程序,都可以使用这些基本结构按一定的顺序组合起来。这些基本结构的特点都是只有一个入口、一个出口。由这些基本结构组成的程序就避免了任意转移、阅读起来需要来回寻找的问题。三种基本结构顺序结构选择结构循环结构三种基本结构的特点只有一个入口只有一个出口每一个基本结构中的每一部分都有机会执行到结构内不存在“死循环”,2.2.2设计原则自顶向下(先总体,后细节)逐步求精(设计子目标过渡)模块化(分解总目标)限制使用goto语句,结构化程序设计方法特点要求把程序的结构规定为顺序、选择和循环三种基本机构,并提出了自顶向下、逐步求精、模块化程序设计等原则。结构化程序设计是把模块分割方法作为对大型系统进行分析的手段,使其最终转化为三种基本结构,其目的是为了解决由许多人共同开发大型软件时,如何高效率地完成可靠系统的问题。缺点:程序和数据结构松散地耦合在一起。解决此问题的方法就是采用面向对象的程序设计方法(OOP)。,2.3面向对象的程序设计方法,2.3.1关于面向对象方法对系统的复杂性进行概括、抽象和分类,使软件的设计与现实形成一个由抽象到具体、由简单到复杂这样一个循序渐进的过程,从而解决大型软件研制中存在的效率低、质量难以保证、调试复杂、维护困难等问题。结构化的分解突出过程,即如何做(Howtodo)?它强调代码的功能是如何实现的;面向对象的分解突出现实世界和抽象的对象,即做什么(Whattodo)?,主要优点与人类习惯的思维方法一致稳定性好可重用性好可维护性好易于开发大型软件产品,2.3.2基本概念对象(Object)对象是基本的运行时认得实体,它既包括数据(属性),也包括作用于数据的操作(行为)。一个对象把属性和行为封装为一个整体一个对象通常可由对象名、属性和操作3部分组成对象的基本特性:(1)标识唯一性(对象可区分)(2)分类性(对象抽象成类)(3)多态性(同一操作可以是不同对象的行为)(4)封装性(只能看到对象的外部特性)(5)模块独立性好(对象内部各元素结合紧密、内聚性强),类(Class)和实例一个类定义了一组大体上相似的对象。一个类所包含的方法和数据描述一组对象的共同行为和属性。类是在对象之上的抽象,对象是类的具体化,是类的实例封装(Encapsulation)将数据和操作数据的函数衔接在一起,构成一个具有类类型的对象的描述。对象的内部实现受保护,外界不能访问封装简化了程序员对对象的使用,继承(Inheritance)继承是父类和子类之间共享数据的方法的机制一个子类可以继承它的父类(或祖先类)中的属性和操作子类中可以定义自己的属性和操作单重继承、多重继承多态性(Polymorphism)不同的对象收到同一消息可以产生完全不同的结构,这一现象叫做多态性多态的实现受到继承的支持,消息(Message)对象之间进行通信的一种构造,结构化程序设计的3种结构是A)顺序结构、选择结构、转移结构B)分支结构、等价结构、循环结构C)多分支结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构在设计程序时,应采纳的原则之一是A)不限制goto语句的使用B)减少或取消注解行C)程序越短越好D)程序结构应有助于读者理解程序设计语言的基本成分是数据成分、运算成分、控制成分和A)对象成分B)变量成分C)语句成分D)传输成分,例题讲解,结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性以下不属于对象的基本特点的是A)分类性B)多态性C)继承性D)封装性对建立良好的程序设计风格,下面描述正确的是A)程序应简单、清晰、可读性好B)符号名的命名只要符合语法C)充分考虑程序的执行效率D)程序的注释可有可无在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的A)安全性B)一致性C)可理解性D)合理性,程序的3种基本控制结构是A)过程、子过程和分程序B)顺序、选择和重复C)递归、堆栈和队列D)调用、返回和转移下列叙述中,不属于结构化程序设计方法的主要原则的是A)自顶向下B)由底向上C)模块化D)限制使用goto语句对象实现了数据和操作的结合,是指对数据和数据的操作进行A)结合B)隐藏C)封装D)抽象类是一个支持集成的抽象数据类型,而对象是类的_。,实例,在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送A)调用语句B)命令C)口令D)消息信息屏蔽的概念与下述哪一种概念直接相关A)软件结构定义B)模块独立性C)模块类型划分D)模块偶合度下列对象概念描述错误的是A)任何对象都必须有继承性B)对象是属性和方法的封装体C)对象间的通讯靠消息传递D)操作是对象的动态属性,下列叙述中,不属于结构化分析方法的是A)面向数据流的结构化分析方法B)面向数据结构的Jackson方法C)面向数据结构的结构化数据系统开发方法D)面向对象的分析方法在面向对象的程序设计中,类描述的是具有相似性质的一组【3】在面向对象方法中,类之间共享属性和操作的机制称为【2】。一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】。,对象的共同行为和属性,继承,可重用性,面向对象的模型中,最基本的概念是对象和【3】。在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【4】。在程序设计阶段应该采取【2】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。在面向对象方法种,类之间共享属性和操作的机制称为_。,消息,自顶向下,属性、行为,继承,【3】是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。可以把具有相同属性的一些不同对象归类,称为【3】。子程序通常分为两类:【2】和函数,前者是命令的抽象,后者是为了求值。源程序文档化要求程序应加注释。注释一般分为序言性注释和_。在面向对象方法种,信息屏蔽是通过对象的_性来实现的。,封装,类,过程,功能性注释,封装,3.软件工程基础,3.1基本概念,软件,程序数据相关文档,机器可执行的程序和数据,机器不能执行的,与软件开发、运行、维护、使用等有关的文档,软件的特点包括:(1)软件是一种逻辑实体;(2)软件的生产与硬件不同,它没有明显的制作过程;(3)软件在运行、使用期间不存在磨损、老化问题;(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;(5)软件复杂性高,成本昂贵;(6)软件开发涉及诸多的社会因素。软件按功能分为:应用软件、系统软件、支撑软件(或工具软件)。,1.软件危机早期的软件主要指程序,采用个体工作方式,缺少相关文档,质量低,维护困难,这些问题称为“软件危机”,软件工程概念的出现源自于软件危机。软件危机主要表现在成本、质量、生产率等问题。2.软件工程软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、降低软件成本。软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。3.软件工程三要素方法:完成软件工程项目的技术手段工具:支持软件的开发、管理、文档生成过程:支持软件开发的各个环节的控制、管理;将方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。,5.软件生命周期将软件产品从提出、实现、使用、维护到停止使用退役的过程称为软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。维护是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护代价6个活动阶段可行性研究与计划制定:确定系统的总体目标。参加人员有用户、项目负责人和系统分析员,产生文档有可行性分析报告、项目计划书等需求分析:确定系统的逻辑模型。参加人员有用户、项目负责人和系统分析员。产生文档为需求规格说明书,其作用:(1)便于用户、开发人员进行理解交流;(2)反映用户问题的结构,可以作为软件开发工作的基础和依据;(3)作为确认测试和验收的依据。,软件设计:包括软件结构设计、数据设计、接口设计和过程设计。结构设计是定义软件系统各部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计是把系统结构部件转换成软件的过程性描述。软件设计分概要设计和详细设计。参加人员有系统分析员和高级程序员。产生的文档有设计规格说明书。软件实现:编程。高级程序员和程序员产生源程序清单软件测试:在设计测试用例的基础上,检验软件的各个组成部分。产生软件测试计划和软件测试报告运行与维护,可行性研究与计划制定,需求分析,软件设计,实现,测试,运行和维护,确定系统的总体目标,需求规格说明书,概要设计说明书详细设计说明书测试计划初稿,完成程序代码用户手册单元测试计划,检验软件测试分析报告,可行性研究与计划制定,需求分析,概要设计,实现,测试,退役,详细设计,使用,维护,定义阶段,开发阶段,维护阶段,6.软件工程的目标在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境7.软件工程的理论和技术研究的内容软件开发技术软件工程管理8.软件工程的基本原则:抽象、信息隐蔽、模块化、局部化(模块间松散,模块内内聚性强)、确定性、一致性、完备性和可验证性。9.软件工具和软件开发环境软件工具(CASE):用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件软件开发环境:支持软件产品开发全过程的软件工具的集合。,3.2需求分析与结构化分析方法,需求分析的方法,结构化分析方法面向对象的分析方法,面向数据流的结构化方法(SA)面向数据结构Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD),结构化分析常用工具:,(1)数据流图(2)数据字典(3)判定树(4)判定表,结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。,数据流图(DFD):,描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模。,建立数据流图的步骤:(1)由外向里;(2)自顶向下:顶层、中间层、低层数据流图;(3)逐层分解;,数据字典(DD):,存储文件”存折”的DD定义:,对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。数据字典是各类数据描述的集合,它通常包括5个部分:即数据项、数据结构、数据流、数据存储、和处理过程。数据字典是结构化分析的核心。,判定树:当数据流图中的加工依赖于多个逻辑时,可以使用判定树来描述。从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。,判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。,软件需求规格说明书,其作用:(1)便于用户、开发人员进行理解交流;(2)反映用户问题的结构,可以作为软件开发工作的基础和依据;(3)作为确认测试和验收的依据。,软件需求规格说明书的特点:(1)正确性;(2)无岐义性;(3)完整性;(4)可验证性;(5)一致性;(6)可理解性;(7)可追踪性。,需求分析结束时产生:(1)DFD、DD、判定树、判定表(2)软件需求规格说明书,3.3结构化设计方法、概要设计和详细设计,软件设计软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。结构设计:定义软件系统各主要部件之间的关系。数据设计:将分析时创建的模型转化为数据结构的定义。接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信。过程设计:把系统结构部件转换成软件的过程描述。从工程管理角度来看:概要设计和详细设计。,软件设计的基本原理:(1)抽象(2)模块化(3)信息隐蔽(4)模块独立化内聚性:耦合性:,在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内聚,低耦合。,3.3.2概要设计设计的基本任务软件的系统结构数据结构和数据库设计编写概要设计文档概要设计文档评审,结构图(SC):,概要设计(软件结构设计)的工具:,模块用一个矩形表示,箭头表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据。,结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。,概要设计的方法:,典型的数据流类型有两种:变换型和事务型。,变换型数据流系统结构图,事务型数据流系统结构图,3.3.3详细设计根本目标确定应用怎样具体的实现所要求的系统,不是具体的编写程序,而是要设计程序的“蓝图”是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。此阶段的结果基本上决定了最终的程序代码的质量包括内容:代码设计输入设计输出设计处理过程设计用户界面设计安全控制设计,过程设计工具:,图形工具:程序流程图、NS图、表格工具:判定表语言工具:(伪码),程序流程图:,NS图:,图:,(伪码):,3.4软件测试,软件测试定义:使用人工或自动手段来运行或测定某个系统的过程4.4.1意义目的为了发现错误希望能以最少的人力和时间发现潜在的各种错误和缺陷保证系统质量和可靠性的关键步骤4.4.2测试方法静态测试:包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。动态测试:是基于计算机的测试。主要包括白盒测试方法和黑盒测试方法。,测试用例:(输入值集),(输出值集),3.4.3白盒测试结构测试将软件看成透明的白盒,根据程序的内部结构和逻辑结构来设计测试例子,对程序的路径和过程进行测试,检查是否满足设计的要求主要方法:逻辑覆盖、基本路径测试3.4.4黑盒测试功能测试将软件看成黑盒子,在完全不考虑软件内部结构和特性的情况下,测试软件的外部特性主要方法:等价类划分法、边界值分析法、错误推测法3.4.5软件测试的实施单元测试(模块测试)集成测试确认测试系统测试,单元测试:是对模块进行正确性检验的测试。是软件测试的最小单位,主要采用静态和动态测试法,动态测试以白盒测试法为主,辅助于黑盒测试,集成测试是测试和组装软件的过程,主要目的是发现与接口有关的错误。,确认测试验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种要求。,系统测试将通过确认测试的软件,与计算机硬件、外设等其他元素组合在一起,在实际环境下对计算机系统进行一系列的集成测试和确认测试。,3.5程序调试,1任务根据测试时发现的错误,()找出原因和具体的位置()进行改正,排除错误由程序开发人员来进行,谁开发的程序就由谁来进行调试,2.程序调试的基本步骤:(1)错误定位;(2)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。,3.调试方法:(静态、动态调试法)强行排错法回溯法原因排除法(演绎、归纳、二分法),为了提高测试的效率,应该A)随机选取测试数据B)取一切可能的输入数据作为测试数据C)在完成编码以后制定软件的测试计划D)集中对付那些错误群集的程序软件生命周期中所花费用最多的阶段是A)详细设计B)软件编码C)软件测试D)软件维护下列叙述中,不属于软件需求规格说明书的作用的是A)便于用户、开发人员进行理解和交流B)反映出用户问题的结构,可以作为软件开发工作的基础和依据C)作为确认测试和验收的依据D)便于开发人员进行需求分析下列不属于软件工程的3个要素的是)工具)过程)方法)环境,例题讲解,软件设计包括软件的结构、数据、接口和过程设计,其中软件的过程设计是指A)模块间的关系B)系统结构部件转换成软件的过程描述C)软件层次结构D)软件开发过程检查软件产品是否符合需求定义的过程称为)确认测试)集成测试)验证测试)验收测试数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是)控制流)加工)数据存储)源和流,开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作A)软件投机B)软件危机C)软件工程D)软件产生下面不属于软件设计原则的是)抽象)模块化)自底向上)信息隐蔽开发大型软件时,产生困难的根本原因是A)大系统的复杂性B)人员知识不足C)客观世界千变万化D)时间紧、任务重软件工程的出现是由于A)程序设计方法学的影响B)软件产业化的需要C)软件危机的出现D)计算机的发展,软件开发离不开系统环境资源的支持,其中必要的测试数据属于A)硬件资源B)通信资源C)支持软件D)辅助资源在数据流图(DFD)中,带有名字的箭头表示A)模块之间的调用关系B)程序的组成成分C)控制程序的执行顺序D)数据的流向下列不属于结构化分析的常用工具的是A)数据流图B)数据字典C)判定树D)PAD图在软件生产过程中,需求信息的给出者是A)程序员B)项目管理者C)软件分析设计人员D)软件用户,下列工具不是过程设计常用工具的是)PAD)PFD)N-S)DFD模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的A)抽象和信息隐蔽B)局部化和封装化C)内聚性和耦合性D)激活机制和控制方法软件开发的结构化生命周期方法将软件生命周期划分成A)定义、开发、运行维护B)设计阶段、编程阶段、测试阶段C)总体设计、详细设计、编程调试D)需求分析、功能定义、系统设计,在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是A)路径的集合B)循环的集合C)目标的集合D)地址的集合完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是A)黑箱测试法B)白箱测试法C)错误推测法D)安装测试法在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示A)模块之间的调用关系B)程序的组成成分C)控制程序的执行顺序D)数据的流向,下列选项中,不属于模块间耦合的是A)数据耦合B)同构耦合C)异构耦合D)公用耦合下列叙述中,不属于测试的特征的是A)测试的挑剔性B)完全测试的不可能性C)测试的可靠性D)测试的经济性需求分析中开发人员要从用户那里了解A)软件做什么B)用户使用界面C)输入的信息D)软件的规模下列不属于软件调试技术的是A)强行排错法B)集成测试法C)回溯法D)原因排除法,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图软件复杂性度量的参数包括A)效率B)规模C)完整性D)容错性下列叙述中,正确的是A)软件就是程序清单B)软件就是存放在计算机中的文件C)软件应包括程序清单及运行结果D)软件包括程序和文档软件设计中,有利于提高模块独立性的一个准则是A)低内聚低耦合B)低内聚高耦合C)高内聚低耦合D)高内聚高耦合,软件生命周期中花费时间最多的阶段是A)详细设计B)软件编码C)软件测试D)软件维护下列叙述中,不属于结构化分析方法的是A)面向数据流的结构化分析方法B)面向数据结构的Jackson方法C)面向数据结构的结构化数据系统开发方法D)面向对象的分析方法详细设计的结果基本决定了最终程序的A)代码的规模B)运行速度C)质量D)可维护性下列不属于静态测试方法的是A)代码检查B)白盒法C)静态结构分析D)代码质量度量,在软件生命周期中,能准确地确定软件系统必须做什么和必须局别哪些功能的阶段是A)概要设计B)详细设计C)可行性分析D)需求分析检查软件产品是否符合需求定义的过程称为A)确认测试B)集成测试C)验证测试D)验收测试数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成,下列图符名标识的图符不属于数据流图合法图符的是A)控制流B)加工C)数据存储D)源和潭,下面不属于软件设计原则的是A)抽象B)模块化C)自底向上D)信息屏蔽程序流程图(PFD)中的箭头代表的是A)数据流B)控制流C)调用关系D)组成关系下列工具中为需求分析常用工具的是A)PADB)PFDC)N-SD)DFD在结构化方法中,软件功能分解属于下列软件开发中的阶段是A)详细设计B)需求分析C)总体设计D)编程调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030工业废水处理膜技术革新与环保政策影响分析报告
- 2025-2030工业大数据分析平台应用效果评估报告
- 2025-2030工业大数据分析平台功能迭代与用户留存研究报告
- 新苗立项申请书
- 申请书的结尾署名
- 个人复工鉴定申请书
- 药店医保申请复查申请书
- 妇科改造申请书范文
- 回访老师申请书
- 潜水泵安装培训课件
- 濒危野生动植物种国际贸易公约(附录一二三)
- 代采代销合同范本
- DB3715-T 19-2022 桑黄栽培技术规程
- 纪录片观念与历史知到智慧树章节测试课后答案2024年秋云南艺术学院
- 叉车安全协议合同范本
- 2023版国家关于轻伤、重伤鉴定新标准(人体损伤程度鉴定标准)
- 加油站承包合同范本
- 中医诊断学舌诊介绍
- 《挥发性有机污染地块现场分析检测技术验证评价指南》
- 护理质控鱼骨头制作流程
- 软件产品授权与支持合同
评论
0/150
提交评论