计算机二级公共基础知识.docx
《计算机二级公共基础知识.docx》由会员分享,可在线阅读,更多相关《计算机二级公共基础知识.docx(26页珍藏版)》请在冰豆网上搜索。
计算机二级公共基础知识
计算机二级公共基础知识
●数据结构与算法
●算法:
是指解题方案的准确而完整的描述
●算法不等于程序
●特征:
●可行性
●确定性
●有穷性:
必须在有限的时间内做完,必须在执行有限个步骤后终止
●足够的情报:
有输入输出
●对数据对象的运算和操作
●算术运算
●逻辑运算
●关系运算
●数据传输
●算法的控制结构
●算法中各操作之间的执行顺序
●描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等
●一个算法一般可以用顺序、选择、循环三种基本结构组合而成
●时间和空间复杂度
●时间复杂度
●是指执行算法所需要的计算工作量,可以用算法所执行的基本运算次数度量
●不是指执行具体所需时间
●空间复杂度
●是指执行算法所需要的内存空间。
包括算法程序、输入的初始数据以及算法执行过程中需要的额外空间
●算法的时间复杂度和空间复杂度相互独立
●数据结构
●数据:
需要处理的数据元素的集合,一般来说,这些数据元素具有某个共同的特征
●数据元素是数据的基本单位,即数据集合中的个体
●有时一个数据元素可由若干数据项组成。
数据项是数据的最小单位
●结构:
是集合中各个数据元素之间存在的某种关系(或联系)
●数据结构:
指相互有关联的数据元素的集合
●数据结构的分类
●逻辑结构
●指反应数据元素之间的逻辑关系(即前后件关系)的数据结构
●线性结构
●特点
●有且只有一个根节点,它无前件
●每个节点最多有一个前件,也最多有一个后件
●线性表
●线性表是n(n>=0)个数据元素构成的有限序列,表中除第一个元素外的每一个元素,有且只有一个一个前件,除最后一个元素外,有且只有一个后件
●线性表的顺序存储结构
●通常,线性表可以采用顺序存储和链式存储,但一般使用顺序存储结构
●线性表的顺序存储又叫做顺序表、顺序分配
●特点:
●线性表中所有元素所占的存储空间是连续的
●线性表中数据元素在存储空间中是按逻辑顺序依次存放的
●可以随机访问数据元素
●做插入、删除时需移动大量元素,因此线性表不便于插入和删除元素
●线性表的链式存储结构
●线性表的链式存储结构成为线性链表
●特点
●各数据节点的存储空间可以不连续
●各数据元素的存储顺序与逻辑顺序可以不一致
●线性表的链式存储所占存储空间大于顺序存储结构
●查找结点时链式存储要比顺序存储慢
●链式存储插入删除元素比顺序存储灵活
●双向链表
●循环链表
●栈
●是限定在一端进行插入和删除的线性表
●特点
●栈只能在栈顶进行插入和删除
●栈的修改原则是“先进后出”或“先出后进”
●指针
●栈底指针bottom
●栈顶指针top
●空栈时均指向栈底
●栈中有元素时,top指向最后入栈的元素,bottom始终指向栈底
●入栈
●栈满
●出栈
●栈底指针不变,栈中元素随栈顶指针的变化而动态变化
●栈具有记忆功能
●栈支持子程序调用
●运算
●队列
●是指允许在一端进行插入,而在另一端进行删除的线性表。
原则是:
先进先出,后进后出
●指针
●队头指针front
●队尾指针rear
●入队
●出队
●特点
●队列只允许在队尾进行插入,而在队头进行删除
●队列的修改原则是“先进先出”
●队列中元素随队头指针和队尾指针的变化而动态变化
●循环队列
●就是将队列存储空间是最后一个位置绕到第一个位置,形成逻辑上的环状空间
●非线性结构
●特点
●不满足线性结构两个条件的数据结构就称为非线性结构
●树
●树是n(n>0)个元素的有限集合。
它有且仅有一个称为根的元素;其余元素是互不相交的子树
●常用术语
●父节点:
前件为后件的父节点
●子节点:
后件为前件的子节点
●根节点:
没有前件的节点A为根节点
●叶子节点:
没有后件的节点为叶子节点
●结点的度:
一个结点所拥有的后件的个数叫做结点的度
●树的度:
所有的结点中最大的度称为树的度
●树的深度:
层数,从1开始数
●子树:
以某个节点的一个子节点为根所构成的树
●二叉树
●二叉树是一个有限的结点集合,该集合或者为空,或者由一个根节点及其两棵互不相交的左右二叉子树所组成
●特点
●非空二叉树只有一个根节点
●每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树,左右次序不能颠倒
●二叉树基本状态
●特殊二叉树
●满二叉树:
除最后一层外,每一层上的结点都有两个子节点的二叉树
●完全二叉树:
除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干节点
●满二叉树是完全二叉树,完全二叉树不一定是满二叉树
●性质
●非空二叉树只有一个根节点,每个节点最多有两棵子树,分别称为左子树和右子树
●在二叉树的第k层上,最多有2^(k-1)个结点
●深度为m的二叉树最多有2^m-1个结点
●度为0的结点(叶子节点)总比度为2的结点多一个
●有n个结点的二叉树深度至少为([]为向下取整)
●二叉树的遍历
●前序遍历
●访问根结点
●前序遍历左子树
●前序遍历右子树
●->从左至右一列一列的访问(根左右)
●中序遍历
●中序遍历左子树
●访问根节点
●中序遍历右子树
●->左根右
●后序遍历
●后序遍历左子树
●后序遍历右子树
●访问根节点
●->左右根
●图
●存储结构
●又称为数据的物理结构,是数据的逻辑结构在计算机存储空间中的存放方式
●顺序存储
●主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里
●链式存储
●每一个节点至少包含一个指针域,用指针的指向来体现数据元素之间在逻辑上的联系
●一种逻辑结构可以有多种存储结构
●不同的存储结构其数据处理的效率不同
●顺序存储访问更方便
●删除插入数据链式存储更方便
●运算
●插入
●删除
●查找
●顺序查找
●对于长度为n的线性表,平均要进行n/2次比较,在最坏情况下进行n次比较
●顺序查找适用于无序表或链式线性表(不管无序还是有序)(这两种情况只能顺序查找)
●二分查找
●适用于顺序存储的有序表,对长度为n的线性表,在最坏情况下进行log2n次比较
●排序
●快速排序
●基本思想
●在要排序的序列中找一个数作为基准数(通常为第一个数)
●通过交换将这个序列中所有比基准数大的数放在右边,比基准数小的数放在左边
●以基准数为分割线分为两个子表,对两个子表重读上述步骤
●先从后往前找,再从前往后找,重复
●选择排序
●找出数据中最小值,与排头交换,然后剩下的数据重复
●程序设计基础
●程序设计方法与风格
●良好的程序设计风格:
清晰第一,效率第二
●程序设计风格规范
●源程序内部文档化
●选择标识符的名字
●注释(序言性和功能性注释)
●序言性:
一般位于模块首部,用于说明模块的相关信息
●包括
●程序的标题
●功能的说明
●主要的算法
●模块接口
●开发历史
●程序设计者
●复审者
●复审日期
●功能性:
位于源程序模块内部
●程序的视觉组织
●数据说明
●语句的结构
●程序模块化
●输入输出
●结构化程序设计
●原则
●自顶向下
●先考虑总体,再考虑细节
●先考虑全局目标,后考虑局部目标
●逐步求精
●对复杂问题,先设计一个目标作为过渡,然后逐步细化
●模块化
●把程序要解决的总目标分解为一个一个的模块
●限用goto
●程序质量与goto语句数量成反比
●基本结构
●常采用顺序、选择(分支)、和循环三种基本结构
●程序设计语言的基本成分
●数据成分
●运算成分
●控制成分
●传输成分
●面向对象的程序设计
●术语
●对象
●属性:
描述对象的状态
●方法:
描述对象的行为
●类:
一组具有相同属性和相同操作的对象的集合
●对象基本特点
●标识唯一性:
对象可由内在本质来区分,而不是通过描述来区分
●分类性:
可以将具有相同属性和操作的对象抽象成类
●多态性:
同一操作可以是不同对象的行为
●封装性:
从外面看不到对象的内部,只能看到对象的外部特征
●模块独立性好:
对象是面向对象的软件的基本模块,内聚性强
●面向对象程序设计主要特征
●封装
●继承
●多态
●抽象
●继承
●使用已有的类建立新类的定义技术,能直接获得已有的性质,而不必重复定义他们
●消息
●是一个实例与另一个实例之间传递的信息。
对象间的通信靠消息传递
●消息的组成
●接受消息的对象的名称
●消息标识符,也称消息名
●零个或多个参数
●多态性
●是指同样的消息被不同的对象接受时可导致完全不同的行动的现象
●软件工程基础
●软件工程基本概念
●软件
●程序
●数据
●文档
●软件分类
●系统软件
●操作系统
●编译系统
●汇编系统
●网络软件
●数据库管理系统
●应用软件
●事务处理软件
●工程与科学计算软件
●实时处理软件
●人工智能软件
●支撑软件(工具软件)
●需求分析工具软件
●编译工具软件
●测试工具软件
●维护工具软件
●软件危机
●需求增长
●开发难控
●质量难保
●难以维护
●成本提高
●生产率低
●软件工程
●应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序;其目的的提高软件生产率、提高软件质量、降低软件成本
●其核心思想是把软件当作一个工程产品来处理
●软件工程三要素
●方法是完成软件工程项目的技术手段
●工具支持软件的开发、管理和文档生成
●过程支持软件开发的各个环节的控制和管理
●软件生命周期
●将软件产品从提出、实现、使用维护到停止使用退役的过程
●分为软件定义、软件开发、软件运行维护3个时期。
维护是持续时间最长,花费代价最大的一个时期
●软件工程学的一个目的就是提高软件的可维护性,降低维护代价
●分为9个阶段
●定义
●问题定义可行性研究、初步项目计划
●产生文档:
可行性分析报告
●需求分析
●确定系统的逻辑模型。
参与人员有用户、项目负责人、系统分析员
●工作:
需求获取、需求分析、编写需求规格说明书、需求评审
●产生文档:
需求规格说明书(SRS)
●作用
●便于用户、开发人员进行理解交流
●反映用户问题的结构,可以作为软件开发工作的基础和依据
●作为确认测试和验收的依据
●特点
●正确性:
体现待开发系统的真实要求
●无歧义性:
对每个需求只有一种解释
●完整性:
包括全部有意义的需求
●可验证性:
每个需求都是可验证的
●一致性:
各个需求的描述不矛盾
●可理解性:
需求说明书必须简明易懂
●可修改性:
结构风格在改变时,是易于实现的
●可追踪性:
每个需求的来源和流向是清晰的
●开发
●概要设计
●概要设计说明书
●详细设计
●详细设计说明书
●实现
●用户操作手册
●测试
●测试分析报告
●运行维护
●使用
●维护
●退役
●结构化分析方法
●需求分析方法
●结构化需求分析方法
●面向对象的分析方法
●结构化分析方法
●使用数据流图(DFD)、数据字典(DD)(结构化分析的核心)、判定表和判定树等工具,来建立系统的逻辑模型
●数据流图(DFD)
●结构化方法的需求分析工具
●数据流图的图形元素
●数据字典(DD)(结构化分析的核心)
●是对数据流图中所有元素定义的集合
●结构化设计方法
●软件设计的划分
●从工程管理角度划分
●概要设计
●概要设计的任务
●设计软件系统结构
●数据结构及数据库设计
●编写概要设计文档
●概要设计文档评审
●概要设计的工具是程序结构图(SC)
●程序结构图的基本图符
●程序结构图的基本形式
●详细设计
●详细设计任务
●确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节
●详细设计的常用工具:
●图形工具:
程序流程图、N-S图、PAD、HIPO
●程序流程图的基本图符
●表格工具:
判定表
●语言工具:
PDL(伪码)
●按技术观点划分
●结构设计
●数据设计
●接口设计
●过程设计
●软件设计基本原理
●抽象:
在软件设计中,可以定出多个抽象级别,抽象层次从概要设计到详细设计逐步降低
●模块化:
把一个待开发的软件分解成若干个小的简单的部分,自顶向下逐层把软件划分成若干模块
●信息隐蔽:
一个模块内的信息,对于不需要这些信息的其他模块来说不能访问
●模块独立性:
每个模块只能完成独立的子功能,并且与其他模块的联系少且接口简单。
模块的独立程度是评价设计好坏的重要度量标准(高内聚,低耦合)
●内聚性:
指一个模块内部各个元素间彼此结合的紧密程度
●耦合性:
指模块间互相连接的紧密程度
●非直接耦合
●数据耦合
●标记耦合
●控制耦合
●外部耦合
●公共耦合
●内容耦合
●软件测试
●目的:
发现程序中的错误
●准则
●所有测试都应追溯到用户需求
●在测试之前制定测试计划,并严格执行
●充分注意测试中的群集现象
●避免由程序的编写者测试自己的程序
●不可能进行穷举测试
●妥善保存测试分析报告,为维护提供方便
●方法
●按是否执行划分
●静态测试
●不实际运行软件,通过人发挥思维优势发现程序的错误
●动态测试
●基于计算机的测试,是为了发现错误而执行程序的过程
●按功能划分
●白盒测试(程序内部逻辑结构)
●把测试对象看作一个打开的盒子,利用程序内部的逻辑结构,对程序所有逻辑路径进行测试
●逻辑覆盖测试
●基本路径测试
●黑盒测试(程序外部功能)
●完全不考虑程序内部的逻辑结构,只检查程序是否能接受输入数据而产生正确的输入信息
●等价类划分法
●边界值分析法
●错误推测法
●步骤
●单元测试
●是对软件设计的最小单位一一模块进行测试,目的是发现各个模块内部的错误
●集成测试
●把模块按照设计要求组装起来的同时进行测试,目的是发现与接口有关的错误
●确认测试
●是验证软件的功能和性能是否满足各种需求,以及软件配置是否完全、正确
●系统测试
●是将软件作为一个元素,与计算机系统其他元素组合在一起,进行集成测试
●程序的调试
●任务:
诊断和改正程序的错误
●基本步骤
●错误定位
●修改设计和代码,以排除错误
●进行回归测试,防止引进新的错误
●软件调试方法
●强行排除法
●回溯法
●原因排除法
●数据库设计基础
●数据库系统的基本概念
●数据
●描述事物的符号记录
●软件的数据一定是有结构的,有型与值两个概念
●数据库应用系统(DBAS)
●数据库系统(DBS)
●数据库(DB)
●是指长期存储在计算机内的,有组织的,可共享的数据集合
●两大特点
●集成
●共享
●数据库管理系统(DBMS)
●数据库管理系统是数据库系统的核心
●属于系统软件
●数据定义语言(DDL)
●数据模式定义
●数据存取的物理构建
●数据操纵语言(DML)
●数据操纵,包括查询与增、删、改等操作
●数据控制语言(DCL)
●数据的安全性的定义与检查
●并发控制与故障恢复
●数据的完整性
●数据库管理员(DBA)
●主要工作
●数据库设计
●数据库维护
●改善系统性能,提高系统效率
●软件平台
●操作系统
●开发工具
●接口软件
●硬件平台
●计算机
●网络
●应用软件
●应用界面
●数据管理三个阶段
●人工管理
●文件系统
●数据库系统
●数据库技术的根本目标
●解决数据共享问题、
●数据库系统特点
●集成性
●高共享低冗余
●独立性
●统一管理控制
●三级模式和两级映射
●两级映射保证了数据库中数据具有较高的逻辑独立性和物理独立性
●数据模型
●三要素
●数据结构
●数据操作
●数据约束
●按不同应用层次分类
●概念数据模型(概念模型)
●E-R模型(实体-联系模型)
●逻辑数据模型(数据模型)
●层次模型
●eg:
树
●网状模型
●eg:
无向图
●关系模型
●采用二维表来表示,简称表,每一个二维表称为一个关系,用以表示实体间的联系
●属性(字段):
二维表中的一列称为属性
●元组(记录):
二维表中的一行称为元组
●一个元组可以由若干个分量组成,分量个数等于属性的元素,分量不可再分
●关系操纵:
查询、增加、删除和修改
●关系中的数据约束
●实体完整性约束
●主键不能为空
●参照完整性约束
●束和用户定义的完整性约束
●主关键字:
在二维表中可表示唯一元组的
●关系数据库中,存取一个学生信息的数据单位是记录(元组)
●面向对象模型
●物理数据模型(物理模型)
●关系代数
●关系模型的基本操作
●插入
●删除
●修改
●查询
●查询运算
●投影运算
●选择运算
●笛卡尔积运算(连接运算)
●关系代数中的基本运算
●差
●T=R-S
●并
●T=R+S
●笛卡尔积运算(积)
●T=R*S
●选择
●选择行
●投影
●选择列
●关系代数中的扩充运算
●交运算
●求交集
●除运算
●T=R/S
●连接与自然连接运算
●属性增加一般是自然连接
●数据库设计与管理
●数据库设计概述
●设计一个能满足用户要求,性能良好的数据库
●基本任务
●根据用户对象的信息需求、处理需求和数据库的支持环境设计出数据模式
●两种方法
●以信息需求为主,兼顾处理需求(面向数据的方法)
●以处理需求为主,兼顾信息需求(面向过程的方法)
●面向数据的方法已成主流方法
●数据库设计的步骤
●数据库设计目前一般采用生命周期法,分若干阶段
●需求分析阶段
●概念设计阶段
●逻辑设计阶段
●物理设计阶段
●编码阶段
●测试阶段
●运行阶段
●进一步修改阶段
●在数据库设计采用前四个阶段,并重点以数据结构与模型设计为主线
●数据库管理
●数据库的建立
●数据库的调整
●数据库的重组
●数据库安全性控制与完整性控制
●数据库的故障恢复
●数据库监控
●计算机系统