【计算机二级等级考试】公共基础知识-学习笔记

一、数据结构和算法

1.1 算法

算法的基本概念

算法的基本特征:可行性(所有步骤可实现,执行结果能达到目的),确定性(不能模凌两可,不能多义),有穷性(算法在有限的时间内完成),拥有足够的情报

算法设计基本方法

列举法,归纳法,递推,递归

算法复杂度

  • 时间复杂度:即执行算法所需要的计算工作量,算法所执行的基本运算次数。
分析方法

平均性态A(n):基本运算次数的加权平均值。

最坏情况复杂性W(n):算法所执行的基本运算的最大次数。

W(n)比A(n)更具有实用价值。

  • 空间复杂度:即执行算法所需的内存空间

    压缩存储后空间复杂度降低

    时间复杂度执行算法所需要的计算工作量
    空间复杂度执行算法所需的内存空间

1.2 数据结构

数据结构主要问题:逻辑结构(与所使用的计算机无关),存储结构,对各种数据结构进行的运算。

研究目的:为了提高数据处理的效率。

1.2.1 数据结构的相关概念

  • 数据结构:相互有关联的数据元素的集合。
  • 数据处理:对数据集合中的各个元素以各种形式进行运算。
  • 数据元素:现实世界中一切事物。
  • 前件(直接前驱):逻辑关系的前者。
  • 后件(直接后继):逻辑关系的后者。

1.2.2 数据的逻辑结构

1.2.2.1线性结构
  • 线性表:

    • 线性表是n(n>0)个数据元素构成的有限序列,表中除第一个元素外的每一个元素,有且只有一个前件,除最后一个元素外,有且只有一个后件。
    • 通常,线性表可以采用顺序存储和链式存储,但一般使用顺序存储结构。线性表的通常,线性表可以采用顺序存储和链式存储,但一般使用顺序存储结构。线性表的顺序存储又叫做顺序表(顺序分配)。
    • 特点:
      • 存储空间连续
      • 按逻辑顺序一次存放
      • 可以随机访问数据元素
      • 不便插入删除大量元素
  • 栈:

    • 栈是限定在一端进行插入和删除的线性表。
    • 特点:
      • 只能在栈顶进行插入和删除
      • 先进后出, 后进先出
      • 栈底指针 bottom ,栈顶指针 top
      • 栈底指针不变,栈中元素随 栈顶 指针的变化而动态变化
      • 栈具有记忆功能
      • 栈支持子程序调用
    • 可实现递归调用
  • 队列:

    • 队列是指允许在一端进行插入,而在另一端进行删除的线性表。

    • 特点:

      • 队列只允许在队尾进行插入,而在队头进行删除
      • 先进先出 ,后进后出
      • 队头指针 front ,队尾指针 rear
      • 队列中元素随队头指针和队尾指针的变化而动态变化
    • 循环队列:计算:

      • rear>front: s=rear-front
      • rear<front: s= 容量 +rear-front
      • rear=front: s=1 或者 s=0
指针位置
top栈顶的一行
bottom栈底的一行
front队首的前一行
rear队尾的一行
1.2.2.2 非线性结构
    • 树是 n n>0 )个元素的有限集合。它有且仅有一个称为根的元素;其余元素是互不相交的子树。

    • 结构:父结点,子结点,根结点,叶子结点,结点的度,树的度结点的度、树的度(所有结点中最大的度称为树的度),树的深度,子树

    • 二叉树

      • 一个有限的结点集合,该集合或者为空,或者有一个根结点及其两颗互不相交的左右二叉子树所组成。

      • 特点:

        • 非空二叉树只有一个根结点
        • 每一个结点最多有两颗子树,且分别称为该结点的左子树与右子树
        • 在二叉树的第 K 层上,最多有 2k-1 个结点
        • 深度为 m 的二叉树最多有 2m -1 个结点
        • 度为 0 的结点(叶子结点)总比度为 2 的结点多一个
        • 有 n 个结点的二叉树深度至少为 [log2𝑛]+1
      • 二叉树的遍历:

        • 前序遍历:访问根结点、前序遍历左子树、前序遍历右子树(根左右) ABDGECF

        • 中序遍历:中序遍历左子树、访问根结点、中序遍历右子树(左根右) DGBEAFC

        • 后序遍历:后序遍历左子树、后序遍历右子树、访问根结点(左右根) GDEBFCA

    • 特殊二叉树

      • 满二叉树:除最后一层外,每一层上的结点数均达到最大值 。
      • 完全二叉树:除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺
        右边的若干结点 。
      • 满二叉树是完全二叉树,但是完全二叉树不一定是满二叉树 。

1.2.3 数据的存储结构

又称为数据的物理结构,是数据的逻辑结构在计算机存储空间中的存放方式。

  • 顺序存储

  • 链式存储:

    • 线性链表:

      • 线性表可以采用顺序存储和链式存储。线性表的顺序存储叫做顺序表,线性表的链式存储结构叫做线性链表。

      • 特点:

        • 各数据结点的存储空间可以不连续
        • 各数据元素的存储顺序和逻辑循序可以不一致
        • 线性表的链式存储所占存储空间大于顺序存储结构
        • 查找结点时链式储存要比顺序存储慢
        • 链式存储插入删除元素比顺序存储灵活
      • 线性链表的操作:在线性链表中进行插入与删除,不需要移动链表中的元素。

1.2.4 查找技术

  • 顺序查找:对于长度为n的线性表,平均要进行n/2次比较,在最坏的情况下进行n次比较。

  • 二分查找:适用于顺序存储有序表,对长度为n的线性表,在最坏的情况下进行log2𝑛次比较。

    查找最坏情况
    顺序查找n
    二分查找log2n

1.2.5 排序技术

1.2.4.1 交换类排序法

借助数据元素之间的相互交换进行排序的方法。

  • 冒泡排序法:通过相邻之间的比较和交换,使值较小的数逐渐从底部移向顶部,值较大的数逐渐移向底部

    • 计算:线性表长度为n,最坏情况下,要经过n/2次查找,比较n(n-1)/2次
  • 快速排序法:

    • 计算:最坏情况下需要进行n(n-1)/2次比较,但实际的排序效率要比冒泡排序高很多。
1.2.4.2 插入类排序法
  • 简单插入排序法:选择序列的第一个元素作为有序序列,逐渐将后面的元素插入到前面的有序序列中,直到整个序列有序。
    • 计算:最坏情况下比较n(n-1)/2次。
  • 希尔排序法
1.2.4.3 选择类排序法
  • 简单选择排序:每次选择无序数列中最小的将其放在有序数列的最后。
  • 堆排序:时间复杂度最小
排序平均时间最坏情况
冒泡排序n(n-1)/2n(n-1)/2
快速排序n(n-1)/2n(n-1)/2
插入排序n(n-1)/2n(n-1)/2
希尔排序nlog2𝑛n3/2
选择排序n(n-1)/2n(n-1)/2
堆排序nlog2𝑛nlog2𝑛

二、程序设计

2.1 程序库设计方法和风格

  • 整体风格:清晰第一,效率第二
  • 源程序文档化
    • 符号名的命名
    • 程序注释
    • 视觉组织
  • 数据说明的方法
    • 数据说明的次序规范化
    • 说明语句中变量安排有序化
    • 使用注释来说明复杂数据的结构
  • 语句的结构
  • 输入和输出

2.2 结构化程序设计

  • 结构化程序设计原则:自顶而下,逐步求精,模块化,限制使用goto语句

  • 结构化程序设计基本结构与特点:顺序结构(最基本,最常用的结构),选择结构,循环结构

2.3 面向对象的程序设计

2.3.1 面向对象编程的优点

  • 与人类习惯的思想方法一致
  • 稳定性好
  • 可重用性好
  • 易于开发大型软件产品
  • 可维护性好
    • 软件稳定性好
    • 容易修改
    • 容易理解
    • 易于测试与调试

2.3.2 基本概念

  • 对象:在现实世界中,每个实体都是对象
    • 对象基本特点:识别唯一性,分类型,多态性,封装性
  • 类:类是一组具有相同属性和相同操作的对象的集合。
  • 实例:一个对象是其对应类的一个实例
  • 消息:是一个实例与另一个实例之间传递的信息。对象间的通信靠消息传递。
    • 组成:
      • 接收消息的对象的名称
      • 消息标识符(消息名)
      • 零个或多个参数
  • 继承:使用已有的类建立新类的定义技术
    • 优点:
      • 共享程序代码和数据结构
      • 减少程序冗余信息
      • 提高软件可重用性
      • 便于软件维护修改
  • 多态性:是指同样的消息被不同的对象接受时可导致完全不同的行动的现象。

三、软件工程

3.1 软件工程概念

  • 软件定义:是由程序、数据及其相关文档构成的集合。

  • 软件的特点:

    • 软件是逻辑实体,具有抽象性
    • 没有明显的制作过程
    • 运行使用不存在磨损和老化
    • 对计算机系统具有依赖性
    • 复杂性高,成本昂贵
    • 开发涉及诸多社会因素
  • 分类:

    • 应用软件:事务处理软件、工程与科学计算软件、实时处理软件、人工智能软件
    • 系统软件操作系统、编译程序、汇编程序、网络软件、数据库管理系统
    • 支撑软件(工具软件):需求分析工具、编译工具软件、测试工具软件、维护工具软件。
  • 软件危机需求增长、开发难控、质量难保、难以维护、提高成本、生产率低。

  • 软件工程:

    • 定义:应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序
    • 目的:提高软件生产率、提高软件质量、降低软件成本。
    • 核心思想:把软件当作一个工程产品来处理。
    • 三要素:方法,工具,过程
    • 内容:软件开发技术,软件工程管理
    • 软件工程原则:抽象,信息屏蔽,模块化,局部化,确定性,一致性,完备性,可验证性
  • 软件过程:

    • 软件规格说明
    • 软件开发,设计与实现
    • 软件确认
    • 软件演进
  • 软件生命周期

    • 定义:将软件产品产品能够提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
    • 时期:
      • 软件定义:可行性研究,需求分析
      • 软件开发:概要设计,详细设计,实现,测试
      • 软件运行维护:使用,维护
      • 软件维护是持续时间最长,花费代价最大的一个时期。

3.2 结构化分析方法

  • 需求分析:

    • 过程:需求获取,需求分析,编写需求规格说明书,需求评审
    • 方法:结构化分析方法,面向对象的分析方法
  • 结构化分析方法:

    • 使用数据流图(DFD),数据字典(DD),判定表和判定树等工具,来建立系统的逻辑模型。

    • 常用工具:

      • 数据流图

        图形元素名称
        ◯ \bigcirc 加工(转换)
        → \rightarrow 数据流
        =数据源
        □ \square 数据源点和终点
        • 建立步骤:由外向里,自顶而下,逐层分析
      • 数据字典:结构化分析方法的核心

        符号含义
        A=B等于,由什么构成
        [A|B]A或B
        A+BA与B,A和B
        n{A}m重复,n,m为重复上下限
        (A)A可选
        * *注释
        A…B连接符,A和B之间任意值
      • 判定树

      • 判定表

  • 软件需求规格说明书

    • 作用:
      • 便于客户和开发人员交流
      • 作为软件开发的基础和依据
      • 作为测试依据
      • 便于成本预算和进度估计
      • 软件不断改进的基础
    • 内容:描述软件目标,功能需求,性能需求,外部接口,属性,约束条件
    • 特点:正确性,无歧义性,完整性,可验证性,一致性,可理解性,可修改性,可追踪性

3.3 结构化设计方法

  • 重要性:

    • 软件开发阶段占软件项目总成本的绝大部分,而软件设计是软件开发最重要的步骤。
    • 软件设计作出的决策影响软件实现的成败。
    • 设计是软件工程和维护的基础。
  • 分类:

    • 从工程管理角度划分:概要设计,详细设计
    • 按技术观点划分:结构设计、数据设计、接口设计、过程设计
  • 基本原理:抽象,逐步求精和模块化信息屏蔽和局部化,模块独立性(高内聚,低耦合

  • 概要设计:

    • 概要设计的任务:

      • 设计软件系统结构
      • 数据结构及数据库设计
      • 编写概要设计文档
      • 概要设计文档评审:工具:程序结构图(SC)
    • 程序结构图

    • 面向数据流的结构化设计方法

      • 数据流类型:变换型,事务型
      • 设计过程:
        • 分析确认数据流图的类型
        • 说明数据流边界
        • 把数据流图映射为程序结构
        • 根据设计准则对结构进行细化求精
    • 设计准则:

      • 提高模块独立性
      • 模块规模适中
      • 深度,宽度,扇出,扇入适当
      • 使模块的作用域在该模块控制域内
      • 减少模块接口和界面的复杂性
      • 设计成单入口,单出口的模块
      • 设计功能可预测的模块
  • 详细设计

    • 详细设计的任务:确立每个模块的实现算法和局部数据结构,用适当方法标识算法和数据结构的细节。

    • 工具:

      • 图形工具:

        • 程序流程图

          符号含义
          ⟶ \longrightarrow ↑ \uparrow 控制流
          □ \square 加工步骤
          ⋄ \diamond 逻辑条件
        • N-S图

        • PAD图

        • HIPO图

      • 表格工具:判定表

      • 语言工具:PDL(伪码)

3.4 软件测试

  • 软件测试的目的:为了发现错误而执行程序的过程
  • 软件测试涵盖整个软件生命周期的过程,包括需求定义阶段的需求测试,编码阶段的单元测试,集成测试以及后期的确认测试,系统测试。
  • 软件测试的准则:
    • 所有测试都应追溯到用户需求
    • 严格执行测试计划
    • 充分注意测试中的群集现象
    • 避免由程序的编写者测试自己的程序
    • 不可能进行穷举测试
    • 妥善保存测试分析报告,为维护提供方便
  • 类别:
    • 按是否需要执行被测软件分类:
      • 静态测试:不实际运行软件,通过人工进行
      • 动态测试:基于计算机的测试,要执行程序的过程
    • 按功能分类:
      • 白盒测试:利用程序内部的逻辑结构,对程序所有逻辑路径进行测试
        • 逻辑覆盖测试
        • 基本路径测试
      • 黑盒测试:完全不考虑程序内部的逻辑结构,只依据程序的需求和功能规格说明是否满足
        • 等价类划分法
        • 边界值分析法
        • 错误推测法
  • 软件测试步骤:
    • 单元测试:是对软件设计的最小单位——模块进行测试,目的是发现各模块内部的错误。
    • 集成测试:是把模块按照设计要求组装起来的同时进行测试,目的是发现与接口有关的错误。
    • 确认测试:是验证软件功能和性能是否满足各种要求,以及软件配置是否完全、正确。
    • 系统测试:是将软件作为一个元素,与计算机系统其他元素组合在一起,进行集成测试。

3.5 程序调试

  • 程序调试步骤
    • 错误定位
    • 修改设计和代码
    • 回归测试
  • 软件调试方法
    • 强行排错法
    • 回溯法
    • 原因排除法

四、数据库设计

4.1 基本概念

  • 数据:描述事物的符号纪录称为数据,有型与值之分

  • 数据库(DB):是指长期存储在计算机内的,有组织的,可共享的数据集合

    • 特点:集成,共享
  • 数据库管理系统(DBMS):数据库管理系统是数据库系统的核心

    • 功能:
      • 数据模式定义
      • 数据存储的物理构建
      • 数据操纵
      • 数据的完整性,安全性定义与检查
      • 数据库的并发控制与故障恢复
      • 数据的服务
    • 语言:
      • 数据定义语言(DDL):数据模式定义,数据存取的物理构建
      • 数据操纵语言(DML):数据操纵,包括查询与增、删、改等操作
      • 数据控制语言(DCL):数据的安全性的定义域检查,并发控制与故障恢复,数据的完整性
  • 数据库管理员(DBA)

    • 工作
      • 数据库设计
      • 数据库维护
      • 改善系统性能,提高系统效率
  • 数据库系统(DBS)

    • 组成:

      • 数据库
      • 数据库管理系统
      • 数据库管理员
      • 硬件平台:计算机,网络
      • 软件平台:操作系统,数据库系统开发工具,接口软件
    • 特点:

      • 数据的集成性
      • 数据的高共享性与低冗余性
      • 数据独立性:物理独立性,逻辑独立性
      • 数据统一管理与控制
    • 内部结构体系:

      • 三级模式:概念模式,外模式(子模式/用户模式),内模式(物理模式)

      • 二级映射:概念模式到内模式的映射,外模式到概念模式的映射

        ​ 两级映射保证了数据库中数据具有较高的逻辑独立性物理独立性

  • 数据库应用系统:

    • 组成:数据库系统,应用软件,应用界面
  • 数据库发展:

    • 人工管理阶段

    • 文件系统阶段

    • 数据据库系统阶段

      • 层次数据库与网状数据库系统阶段
      • 关系数据库系统阶段

      数据库技术的根本目标是:解决数据共享问题

4.2 数据模型

  • 内容:数据结构,数据操作,数据约束

  • 按应用层次分类:

    • 概念数据模型(概念模型):
      • E-R模型
      • 面向对象模型
    • 逻辑数据模型(逻辑模型):
      • 层次模型:树形结构
      • 网状模型:无条件限制的无向图
      • 关系模型:二维表
      • 面向对象模型
    • 物理数据模型(物理模型)
  • E-R模型

    • 概念:

      • 实体:现实世界的事物
      • 属性:现实世界中事物的特性
      • 联系:现实世界中事物间的关联
        • 一对一(1:1)
        • 一对多(1:n)
        • 多对多(m:n)
  • 关系模型

    • 属性:二维表中的一列称为属性

    • 元组:二维表中的一行称为元组

    • 二维表由表框架和表的元组组成,表框架由多个属性组成

    • 键和码:能唯一识别元组的最小属性集

      • 候选键(候选码)
      • 主键(主码):用于唯一标识表中的每一条数据,主键不能为空值。
      • 外键(外码):表A中的某属性集是表B的键
    • 关系操纵:查询,增加,删除,修改

    • 关系中的数据约束:

      • 实体完整性约束:主键中属性值不为空值

      • 参照完整性约束:不能应引用不存在的元组

      • 用户定义的完整性约束。

4.3 关系代数

  • 关系模型的基本操作:
    • 关系的属性指定
    • 关系的元组的选择
    • 两个关系的合并
    • 关系的查询
    • 关系元组的插入
    • 关系元组的删除
  • 关系模型的基本运算
    • 插入
    • 删除
    • 修改
    • 查询
      • 投影运算
      • 选择运算
      • 笛卡儿积 T = R × S T=R\times S T=R×S,R中的每一行与S中的每一行组合为T的一行
  • 关系代数的扩充运算:
    • T = R ∩ S T=R\cap S T=RS,T的每一行为R和S相同的行
    • T / R = S T/R=S T/R=S,R的一行包含在T的一行中,则T的这一行其它元素在S中
    • 连接:满足条件的R行与S行组合在一起,作为一行T
    • 自然连接 T = R ⋈ S T=R\bowtie S T=RS,R与S含有同一属性D,将两者D属性相同的行连接在一起

4.4 数据库设计与管理

  • 数据库设计概述:

    • 核心问题:设计一个能满足用户要求,性能良好的数据库。
    • 基本任务:根据用户对象的信息需求,处理需求和数据库的支持环境设计出数据模式。
    • 方法:
      • 面向数据的方法:以信息需求为主,兼顾处理需求
      • 面向过程的方法:已处理需求为主,兼顾信息需求
        面向数据的设计方法已成为主流方法。
  • 数据库设计的步骤:生命周期法

    • 需求分析阶段:建立数据字典
    • 概念设计阶段:设计E-R图
    • 逻辑设计阶段:把E-R图转换为关系模式。实体与联系表示成关系,E-R图中属性转换成关系的属性
    • 物理设计阶段
    • 编码阶段
    • 测试阶段
    • 运行阶段
    • 进一步修改阶段。
      在数据库设计中采用前四个阶段,并且重点以数据结构与模型的设计为主线。
  • 数据库管理:

    • 数据库的建立
    • 数据库的调整
    • 数据库的重组
    • 数据库安全性控制与完整性控制
    • 数据库的故障恢复
    • 数据库监控
  • 20
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

From Star.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值