计算机二级公共基础知识汇总,小可爱们请查收🌝🌝 一、计算机系统结构
2023版大纲要求 1.1 计算机硬件系统结构 1.1.1 中央处理器(CPU) 功能: 执行指令、处理数据。 组成:控制单(Control Unit,CU):控制计算机系统中的数据流和指令流,协调各个部件的工作。算术逻辑单(Arithmetic Logic Unit,ALU):执行算术(加法、减法等)和逻辑运算(与、或、非),实现对数据的处理(移位和比较等)。 1.1.2 存储器分层体系寄存器(CPU 内部)高速缓存(CPU 和主内存之间)主内存辅助存储器(硬盘、SSD) 1.1.3 总线和外部设备总线: 传输信息的通道。外部设备: 输入设备(键盘、鼠标)、输出设备(显示器、打印机)等。 1.2 操作系统基本组成 1.2.1 进程管理 定义: 进程是程序的执行实例,是计算机系统中的基本执行单。 组成:进程创建: 包括为进程分配资源和初始化数据。进程调度: 决定哪个进程在什么时候执行。同步和通信: 确保多个进程协同工作,共享信息。 1.2.2 内存管理 任务: 确保程序能够正常运行,有效地管理计算机的内存资源。 功能:内存分配: 为进程分配和释放内存空间。地址转换: 将逻辑地址转换为物理地址。内存保护: 防止程序之间相互干扰。 1.2.3 目录和文件系统目录管理: 组织和管理文件的层次结构,提供逻辑结构。文件系统: 提供文件的存储、检索和组织。功能: 文件的创建、删除、复制,以及对文件的权限控制。 1.2.4 I/O 设备管理 任务: 管理计算机的输入和输出设备。 功能:提供接口: 为设备和计算机之间建立通信接口。调度设备: 确保设备的有效使用。控制设备: 监控和管理设备的操作。 1.2.5 应用程序 定义:是用户直接使用的软件 组成:用户界面:通过图形界面或命令行等方式与用户互动业务逻辑:处理数据、执行特定操作,实现软件的核心功能 二、基本数据结构与算法
2023版大纲要求 2.1 算法 定义:是解决方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程。算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。特点(尤其是前三个特性一定要烂熟于心哦!!)确定性,算法中每一步骤必须有明确定义,不允许有模棱两可的解释,不允许有多义性;有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;可行性,算法原则上能够精确地执行;输入。输出。算法效率的度量——算法复杂度,分为算法时间复杂度和算法空间复杂度。①算法时间复杂度:指执行算法所需要的计算工作量。即算法执行过程中所需要的基本运算次数。(注意:不是设计算法所需的工作量以及执行算法所需要的时间!!!)②算法空间复杂度:指执行这个算法所需要的内存空间。(一般原地操作的算法,空间复杂度为O(1),意味着所需辅助空间为常量) 【注意】 ①常见时间复杂度:O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(n^k) < O(2^n) < O(n!) ②通常情况下,更加算法的时间复杂度,甚至可以考虑采用“空间换时间”的策略,如哈希表。 【示例】 2.2 数据结构的基本概念 数据结构定义:指相互有关联的数据素的集合。数据结构研究的三个方面: ①数据集合中各数据素之间所固有的逻辑关系,即数据的逻辑结构; ②在对数据进行处理时,各数据素在计算机中的存储关系,即数据的存储结构; ③对各种数据结构进行的运算(插入、删除、排序、查找等) 以下是对应的思维导图哦,方便理解记忆,一定要将大框架牢记于心哟
2.3 线性表 定义:线性表是一种由n(n≥0)个素组成的有限序列,其中每个素都有唯一的前驱和后继,除第一个素没有前驱,最后一个素没有后继。存储结构:顺序存储、链式存储 (1)顺序存储结构线性表的顺序存储结构具有以下两个基本特点: ①线性表中所有素所占的存储空间是连续的; ②线性表中各数据素在存储空间中是按逻辑顺序依次存放的。优点:随机访问速度快,素存储密集;缺点:插入和删除操作可能需要移动大量素;顺序表的基本运算:插入、删除、查找; (2)链式存储结构 该数据结构中每一个结点对应于一个存储单,这种存储单称为存储结点,简称结点。结点由两部分组成(☆) ① 数据域:用于存储数据素值 ② 指针域:用于存放指针,指向前一个或后一个结点(前驱结点与后继结点) △:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据素之间的逻辑关系可以不一致,而数据素之间的逻辑关系是由指针域来确定的。优点:插入和删除操作不需要移动大量素,对于动态表长具有灵活性。缺点:访问速度相对较慢,需要额外的空间存储指针。链式存储方式即可用于表示线性结构(线性表、队列、栈),也可用于表示非线性结构(树、图)。链表的基本运算:插入、删除、查找; 【注意】 ①在单链表中,增加头结点的目的是便于运算的实现; ②用链表作为线性表的优点:便于插入与删除操作,时间复杂度为O(1)。(也就是说,如果在一种应用场景中需要频繁插入或删除,那么可以选择链式存储结构。) ③用顺序表作为线性表的优点:便于随机访问,时间复杂度为O(1)。(也就是说,如果在一种应用场景中需要频繁访问素,那么可以选择顺序存储结构。) 【以下是重要的区分环节】 Question1:顺序存储结构和链式存储结构有啥区别呢? (☆☆☆) 答:前者需要开辟一片连续的内存空间,对内存的要求比较高,因此该存储空间中的素是连续的;而后者每个结点(而非所有)占用一片地址连续的存储空间,结点之间用指针相连接,即使内存空间存在碎片,只要碎片的大小足够存储一个链表节点的数据,该碎片的空间都有可能被分配,因此该存储空间中各数据结点的存储序号是不连续的。 (说白了,就是存储空间中素是否连续的区别~~) Question2:线性单链表、双向链表与循环链表的结构的区别是什么?(☆☆☆) (1)单链表 vs 双向链表单链表节点只有一个指针,只能向一个方向遍历。双向链表节点有两个指针,可以双向遍历,但占用更多空间。 (2)单链表 vs 循环链表单链表最后一个节点指向 NULL,形成线性结构。循环链表最后一个节点指向头节点,形成环状结构。 (3)双向链表 vs 循环链表双向链表具有前后指针,可以双向遍历。循环链表最后一个节点指向头节点,形成环状结构,也可双向遍历。 2.4 栈 定义:只能在一端进行插入与删除的线性表 。特点:栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。存储方式:顺序存储【重点掌握 】、链式存储。相关术语栈顶:允许插入与删除的一端,可以用top指针表示;栈底:不允许插入与删除的一端,可以用bottom指针表示;入栈(进栈):栈的插入操作;出栈(退栈):栈的删除操作;空栈:栈中没有数据素; 5. 基本运算入栈(Push):将素压入栈顶,栈顶指针上移。出栈(Pop):弹出栈顶素,栈顶指针下移。栈顶素(Top): 返回栈顶素的值但不弹出。判空(IsEmpty): 判断栈是否为空。判满(IsFull): 判断栈是否已满。 6. 计算栈内素个数:栈底 – 栈顶 +1 2.5 队列 定义:指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。用rear指针指向队尾,用front指针指向队头素的前一个位置。特点:队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。相关术语队尾:进行插入的一端队首:进行删除的一端入队(进队):从队尾(rear)插入一个素(rear表示尾指针)退队(离队):从队头(front)删除一个素(front表示头指针) 4. 基本运算入队(Enqueue):将素添加到队列的末尾,队尾指针后移。出队(Dequeue):弹出队列的第一个素,队头指针后移。队头素(Front):返回队列的第一个素的值,不对队列做任何修改。判空(IsEmpty):判断队列是否为空。判满(IsFull):判断队列是否已满。 5. 计算循环队列的素个数 方法:“尾指针减头指针”,若为负数,再加其容量即可。 具体而言: ①当 时,尾指针 – 头指针 ; ②当 时,尾指针 – 头指针 + 容量; 代码示例: 思考:栈与队列的区别是什么? ①特点不同:栈先进后出,队列先进先出; ②对插入与删除操作的限定:栈只能在一端进行插入与删除,而队列是在一端插入另一端删除; ③遍历数据的速度:栈相对队列要慢 2.6 树 基本概念①树是一种简单的非线性结构,其所有素之间具有明显的层次特性。②在树结构中,每一个结点只有一个前件,称为父结点。③没有前件的结点只有一个,称为树的根结点,简称:树的根④每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。在树结构中,一个结点所拥有的后件的个数称为该结点的度。(结点的分叉数)所有结点中最大的度称为树的度;计算要点 ①叶子结点的度为0; ②树的总分叉数=度*对应结点数; ③树的结点个数=树的总分叉数+1; 4. 树的深度与高度 ①深度:即树的层次,从最根结点开始数,一般根结点所在层次为第一层,如下图。
②高度:从叶子结点开始树,深度倒过来即可,叶子节点所在层次为第一层,对照上图,根结点所在层次为第三层。 二叉树定义:满足下列两个特点的树,即为二叉树①非空二叉树只有一个根结点;②每一个结点最多有两棵子树,分别称为该结点的左子树和右子树。基本性质 ①在二叉树的第k (k≥1) 层上,最多有2^(k-1)个结点。 ②在任意一棵二叉树中,度数为0的结点(即叶子结点)总比度为2的结点多一个。 ③具有n个结点的二叉树,其深度至少为 ,其中表示取的整数部分 例题分析:在某二叉树中,度为2的结点数为49,度为1的结点数为4,求该二叉树的结点树? 法一(直接法):要求总结点树即要求出度为0的结点树,根据二叉树的性质③可得。度为0的结点数为50,所以结点树=50+4+49,即103 法二(根据结点公式):总结点数=度*子结点数,即2*49+1*4=103 3. 满二叉树与完全二叉树 ①满二叉树:除最后一层外,每一层上的所有结点都有两个子结点。 ②完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
左:满二叉树 右:完全二叉树 4. 二叉树的遍历 概念:二叉树的遍历是指不重复地访问二叉树中的所有结点。遍历顺序可理解为遍历根结点的顺序。 (1)前序遍历(DLR):根左右若二叉树为空,则结束返回。否则,首先访问根结点,然后遍历左子树,最后遍历右子树。在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 (2)中序遍历(LDR):左根右若二叉树为空,则结束返回。否则,首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。 (3)后序遍历(LRD):左右根若二叉树为空,则结束返回。否则,首先遍历左子树,然后遍历右子树,最后访问根结点。在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。 (4)层次遍历:从上到下逐一遍历。通过队列实现,从根结点开始,逐层将左右子结点加入队列,按照队列的先进先出原则进行遍历。 【小试牛刀】
源自百度百科:https://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%A0%91/ 前序遍历:FCADBEHGM 中序遍历:ACBDFHEMG 后序遍历:ABDCHMGEF 层次遍历:FCEADHGBM 2.7 查找 定义: 指在一组数据中寻找特定素的过程,目标是确定目标素若存在,返回其位置。常见的查找算法:顺序查找、二分查找、分块查找(了解即可,不在考纲内)基本概念:查找: 根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据素。查找结果: 查找成功则找到,否则未找到。平均查找长度: 查找过程中关键字和给定值比较的平均次数。 (1)顺序查找 概念:逐个检查序列中的素,直到找到目标素或遍历完整个序列。 特点:不要求序列有序,简单实现,适用性广(顺序存储or链式存储都可以),时间复杂度为O(n)。 代码示例: (2)二分查找 概念:也称为“折半查找”,仅适用于顺序存储的有序表,通过对半分逐步确定目标素的位置。 特点:对于长度为n的有序线性表,最坏情况只需比较(log2n)+1次,时间复杂度为O(log2n)。 代码示例: 2.8 排序 含义:指将一个无序序列整理成按值非递减顺序排列的有序序列。常见的排序算法①交换类排序法:冒泡排序、快速排序②选择类排序法:简单选择排序、堆排序③插入类排序法:直接插入排序、折半插入排序、希尔排序排序算法的评价指标:时间复杂度、空间复杂度、稳定性(相同素的相对位置是否发生改变)算法类型最好时间复杂度最坏时间复杂度平均时间复杂度空间复杂度稳定性直接插入排序O(n)O(n^2)O(n^2)O(1)稳定折半插入排序O(n)O(n^2)O(n^2)O(1)稳定希尔排序-O(n^2)O(n^1.5)O(1)不稳定简单选择排序O(n^2)O(n^2)O(n^2)O(1)不稳定堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不稳定冒泡排序O(n)O(n^2)O(n^2)O(1)稳定快速排序O(nlogn)O(n^2)O(nlogn)O(logn)不稳定 三、程序设计基础
2023版大纲要求 3.1 程序设计设计方法和风格 (1)风格:清晰第一、效率第二(2)形成良好的程序设计风格需注意:源程序文档化;数据说明的方法;语句的结构;输入和输出。 3.2 结构化程序设计 (1)结构化程序设计四条原则自顶向下: 也称为自顶向下设计或自顶向下编程,是一种以系统的总体目标为出发点,逐步细化系统各个部分的设计和实现的方法。在程序开发中,这意味着首先定义主要任务和目标,然后将其分解为更小的子任务,逐步深入细节。逐步求精:意味着从简单的、基本的实现开始,然后逐渐改进和优化代码。通过逐步迭代,可以确保每一步的改进都是有效的,避免一开始就过度优化,以免导致不必要的复杂性。模块化:将程序划分为相互独立、具有特定功能的模块。每个模块都应该有清晰的接口和定义良好的功能,这样它们可以被独立地开发、测试和维护。模块化有助于提高代码的可读性和可维护性,同时促使团队成员更容易合作。限制使用goto语句:goto 语句是一种控制转移语句,但过度使用它可能导致代码难以理解和维护。通过限制 goto 的使用,可以鼓励使用结构化的控制流,如循环和条件语句,提高代码的可读性和可维护性。 (2)结构化程序的基本结构顺序结构:是最基本、最常用的结构,程序按照从上到下的顺序依次执行。每条语句按照它们出现的顺序执行,形成线性的执行流程。选择结构:又称分支结构,包括简单选择和多分支选择结构。通过条件判断,程序可以选择性地执行不同的语句序列。简单选择结构只包含一个条件判断,而多分支选择结构包含多个条件判断,根据条件的不同选择执行相应的语句。循环结构:又称重复结构,根据给定条件判断是否需要重复执行某一相同或类似的程序段。循环结构有助于减少代码的冗余,通过迭代执行,达到节省时间和资源的目的。 (3)结构化程序设计的一个特点:只有一个入口和出口 这是为了保持程序的清晰性和可维护性。这个原则强调在结构化程序中避免使用过多的跳转语句,如 goto,以确保程序的控制流是可预测和易理解的。 【具体而言】 单一入口: 意味着程序的执行从一个固定的地方开始,通常是程序的主函数或主模块。这有助于理解程序的执行流程,并减少了混乱和难以理解的控制流。 单一出口: 意味着程序的执行在一个确定的地方结束,通常是程序的末尾或某个返回语句。这有助于提高代码的可读性,因为人们可以期望程序在一个地方结束,而不必在多个地方寻找出口点。 3.3 面向对象的程序设计 在面向对象方法中,对象是对客观世界实体的抽象,是系统的基本单位,由属性和操作组成。对象的操作描述了其功能,也称为方法或服务。对象具有标识唯一性、分类性、多态性、封装性和模块独立性好等基本特点,这些特点使得对象能够清晰地描述系统中的各种实体。 (1)对象的基本特点标识唯一性: 每个对象都有唯一的标识,使得系统能够准确地区分不同的实体。分类性: 对象可以根据其共同的属性和操作被归类到某个类别中,提高了代码的组织和理解。多态性: 同一消息被不同的对象接受时,可能导致完全不同的行为,增加了代码的灵活性和可扩展性。封装性: 对象将数据和方法封装在内部,隐藏了内部实现细节,提供了良好的抽象屏障。模块独立性好: 每个对象都是独立的模块,降低了系统的耦合度,提高了模块的独立性和可维护性。 (2)相关术语与概念 类 类是对象的集合,具有共同的属性和方法。它是对对象性质的描述,是对象的抽象。消息是对象间传递的信息,请求对象执行某一处理或回答某一要求的信息,是数据流和控制流的统一。 继承 继承是通过使用已有类的定义作为基础,建立新类的定义的技术。具有传递性,一个类实际上继承了其上层全部基类的特性。继承有单继承和多重继承两种形式。 多态性 多态性是指同样的消息被不同的对象接受时,可能导致完全不同的行为。这使得程序更加灵活,同一操作可以适用于不同类型的对象,提高了代码的可扩展性和复用性。 (3)面向对象方法的优点封装性(Encapsulation): 将数据和方法封装在对象内部,隐藏了对象的实现细节,提供了良好的抽象屏障。这使得对象的内部变化对外部是不可见的,提高了模块性和可维护性。继承性(Inheritance): 允许一个类继承另一个类的属性和方法,通过建立类之间的层次关系,实现了代码的重用性。子类可以继承父类的特征,并且可以根据需要进行扩展或修改。多态性(Polymorphism): 允许不同类的对象对同一消息做出不同的响应。多态性通过接口和抽象类实现,提高了代码的灵活性和可扩展性。抽象性(Abstraction): 提供了对现实世界问题的抽象建模,将复杂的系统简化为对象和类的表示,使得程序设计更贴近问题领域,降低了认知复杂度。灵活性和可维护性: 面向对象方法提供了一种灵活的设计方式,使得系统更容易适应变化。由于封装、继承和多态性的支持,代码更易于理解、修改和扩展,提高了系统的可维护性。可重用性(Reusability): 通过继承和组合,可以重用已存在的类和对象,减少了代码的冗余,提高了开发效率。模块化(Modularity): 将系统分解成相互独立的模块,每个模块代表一个对象或一组相关的对象。这种模块化的设计使得系统更易于理解、测试和维护。 四、软件工程基础
2023版大纲要求 4.1 软件工程相关概念 (1)软件工程基本概念 软件工程是一门系统性、规范性、工程性的学科,致力于通过系统的方法和工具对软件进行开发、维护、管理,以确保软件在质量、成本和进度等方面达到预期目标。以下是与软件工程相关的基本概念:软件开发过程: 定义了软件的生命周期,包括需求分析、设计、编码、测试、部署和维护等阶段。质量管理: 通过规范的过程和标准来确保软件产品的质量。团队协作: 强调团队合作和沟通,以有效地完成软件项目。需求工程: 专注于明确和管理用户需求,确保软件满足用户期望。 软件工程源自软件危机,即在计算机软件的开发和维护过程中遇到的一系列严重问题,包括高成本、低效率和质量难以控制。软件工程的主要思想是将工程化原则应用到软件开发过程,包括方法、工具和过程。方法是完成软件工程项目的技术手段,工具支持软件的开发、管理和文档生成,过程支持软件开发的各个环节的控制和管理。 软件工程的原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。 (2)软件生命周期概念 软件生命周期,指软件从概念到报废的整个过程。这个过程经历了不同的阶段,每个阶段有其独特的任务和活动:计划阶段: 制定项目计划,确定资源和时间表。需求分析阶段: 收集和明确系统需求,编写需求文档。设计阶段: 根据需求规格,设计软件的架构和详细设计。编码阶段: 根据设计文档,将代码转化为计算机程序。测试阶段: 对软件进行测试,确保其符合规格和预期行为。部署和维护阶段: 将软件交付给用户,并进行后续的维护和更新。 软件生命周期可以分为三大阶段:定义问题、软件开发、软件维护。具体如下: 1. 定义问题阶段: 在定义问题阶段,主要包括两个重要的子阶段:制定计划: 确定总目标,进行可行性研究,探讨解决方案,制定开发计划。需求分析: 对待开发软件提出的需求进行分析,给出详细的定义。这包括对用户需求的理解和明确定义。 2. 软件开发阶段: 软件开发阶段是一个涵盖多个步骤的复杂过程,主要包括:软件设计: 分为概要设计和详细设计两个部分,确定软件的整体结构和具体实现方案。软件实现: 将设计好的软件转换为计算机可以接受的程序代码。软件测试: 在设计测试用例的基础上,检验软件的各个组成部分,确保其符合规格和预期行为。测试的对象包括源程序、目标程序、相关文档和数据。 3. 软件运行维护阶段: 软件运行维护阶段是软件被投入运行并在使用中持续维护的过程,包括:软件投入运行: 将软件交付给用户并投入实际运行。维护和更新: 持续对软件进行维护,包括扩充和删改,以满足用户需求和应对环境变化。 (3)软件工具与软件开发环境 软件工具和开发环境是支持软件开发过程的关键素。集成开发环境(IDE): 提供了代码编辑、编译、调试等开发工具的集成平台,如Visual Studio、Eclipse等。版本控制系统: 用于跟踪和管理代码版本,协助团队协作,如Git、SVN等。构建工具: 用于自动化构建过程,如Apache Maven、Gradle等。测试工具: 用于自动化测试和检验代码质量,如JUnit、Selenium等。项目管理工具: 用于计划、跟踪和管理项目进度,如Jira、Trello等。集成测试环境: 提供模拟生产环境进行集成测试的工具和平台。 4.2 结构化分析方法 定义: 结构化分析方法是一种系统分析的方法,通过对系统进行逐层次、逐步骤的划分,以便更好地理解和设计系统。 2.1 数据流图(Data Flow Diagram) 概念:数据流图是一种图形化的工具,用于表示系统中的数据流动、处理和存储的过程。 作用:有助于理解系统中数据的流向和处理过程,是系统分析的重要工具。 组成部分:流程: 表示对数据的处理,通常用圆角矩形表示。数据流: 表示数据在系统中的流动,通常用箭头表示。数据存储: 表示数据的存储位置,通常用矩形表示。外部实体: 表示与系统交互的外部实体,通常用矩形表示。 2.2 数据字典(Data dictionary) 概念: 数据字典是一个对系统中使用的所有数据素进行定义和说明的集合。 作用: 有助于对系统中数据的清晰定义,减少歧义,提高系统的一致性。 组成成分:数据素: 系统中使用的基本数据单位。数据流: 数据素的流动路径和描述。处理: 对数据的处理过程和规则进行描述。数据存储: 数据素的存储位置和属性描述。 2.3 软件需求规格说明书(Software Requirements Specification,SRS) 概念:软件规格说明书是一份详细而全面的文档,旨在准确描述软件系统的功能、性能、设计约束和其他相关特性。它是软件开发过程中的关键文档之一,起着桥梁的作用,将用户和开发团队的需求沟通转化为可执行的任务。 作用:软件需求规格说明书作为开发过程中的重要文档,为整个团队提供了一个明确的方向。它不仅明确了系统需要满足的功能和性能需求,还为系统设计和测试提供了基础,帮助确保最终交付的软件符合用户期望和项目目标。 组成成分:引言: 对软件规格说明书的简要介绍,包括项目的背景和目标。系统总体描述: 对系统的整体设计进行概述,包括系统的特性、功能和相关约束。详细需求: 对系统功能、性能、接口等方面的详细要求进行具体说明,以确保开发团队和用户理解需求的一致性。验收标准: 定义系统实现成功的验收标准和相应的测试方法,为项目验收提供基准。 4.3 结构化设计方法 包含了总体设计与详细设计两个部分。 3.1 总体设计 (1)基本概念 总体设计阶段整体系统结构和数据设计,通过图形工具如结构图明确系统的框架和模块关系。完成后,编写概要设计文档,供团队评审。 (2)基本任务设计软件系统结构。数据结构及数据库设计。编写概要设计文档。概要设计文档评审。 (3)工具:程序结构图 具体而言,模块通常用一个矩形表示,而箭头则用于表示模块之间的调用关系;带有注释的箭头来表达模块调用过程中来回传递的信息;带有实心圆的箭头来表示传递的是控制信息,而带有空心圆箭头则表示传递的是数据信息。 3.2 详细设计 (1)基本概念 详细设计阶段每个模块的具体实现,使用图形工具和表格工具清晰地表示算法和数据结构的细节。语言工具如PDL用于更形式化地描述设计。 (2)基本任务 为每个模块确定实现算法和局部数据结构。 (3)工具图形工具:程序流程图、N-S图、PAD、HIPO。表格工具:判定表。语言工具:PDL(伪码语言)。 4.4 软件测试 定义:软件测试是通过执行程序或系统,以发现潜在缺陷并确保软件质量的过程。它涉及运行软件系统的目的是为了评估其行为,验证其功能,并验证其符合预期的要求。 目的:发现缺陷: 通过测试,识别和修复软件中可能存在的错误和缺陷。确保质量: 验证软件是否满足规格和用户需求,确保交付的产品质量可靠。提高可维护性: 在早期发现和纠正问题,降低软件维护的成本。验证功能: 确保软件按照设计和规格执行预期的功能。 软件测试的关键是设计测试用例,好的测试用例能找到迄今为止尚未发现的错误。 软件测试的主要方法:白盒测试、黑盒测试 4.1 白盒测试涉及对内部结构和源代码的详细了解。目的是检查逻辑路径、数据流、变量使用等内部细节。常用手段包括语句覆盖、分支覆盖等。 4.2 黑盒测试软件功能和用户接口,无需了解内部代码。通过输入和输出验证软件是否按照需求规格工作。常用手段包括等价类划分、边界值分析等。 区别白盒测试与黑盒测试!!! 4.3 测试用例设计 (1)概述 测试用例是测试的最小单,包括输入数据、执行步骤和预期输出。 (2)基本方法 等价类划分:将输入数据划分为有效的等价类和无效的等价类。测试用例覆盖每个等价类,减少冗余测试。 边界值分析:输入数据的边界情况,通常在最小和最大值处测试。确保系统在边缘条件下正常工作。 4.4 软件测试的实施 包括单测试、集成测试和系统测试 (1)单测试:针对软件中的独立单,如函数、方法进行测试,目的在于验证单在隔离环境下的正确性。 (2)集成测试:测试各个单组合在一起的效果,目的在于检查单间的接口和交互,确保集成后的系统协同工作。 (3)系统测试:对整个软件系统进行全面测试,目的在于验证系统是否符合需求规格,包括功能、性能、安全等方面。 4.5 程序调试 5.1 基本任务诊断和改正程序中的错误,主要在开发阶段进行,由编制源程序的程序员完成。 5.2 基本步骤错误定位: 确定程序中存在的错误的位置和类型。纠正错误: 修改源代码以消除已定位的错误。回归测试: 重新运行程序并进行测试,以确保修改不引入新的错误。 5.3 调试方法强行排错法: 强制在程序中插入输出语句或日志,以检查程序执行的中间状态。回溯法: 逐步回溯程序执行过程,找出错误发生的原因。原因排除法: 分析问题并逐步排除可能的原因,缩小错误范围。 五、数据库设计基础
2023版大纲要求 5.1 数据库基本概念 5.1.1 数据、数据库、数据管理系统 ①数据(data):数据处理的最小单位是数据项,若干数据项组成数据素。 ②数据库(DataBase):数据库是数据的集合,具有集成、共享的特点。 ③数据库管理系统(Database Management System,简称DBMS):一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。 敲黑板 :数据库系统包括数据库以及数据库管理系统。 5.1.2 数据库系统的发展 至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。 特别的,分布式数据库系统的特点:数据分布行、逻辑整体性、位置透明性和复制透明性。 数据库技术的根本目标是解决数据的共享问题,数据共享最高的阶段是数据库系统阶段! 5.1.2 数据库系统的基本特点数据的高集成性;数据的高共享性与低冗余性;数据独立性 其中,数据独立性包括物理独立性与逻辑独立性。 物理独立性,指数据的物理结构(包括存储结构,存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。 逻辑独立性,指数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要相应修改应用程序,这就是数据的逻辑独立性。 5.1.3 数据库系统的三级模式 (1)概念模式 数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图(全局数据视图) (2)外模式 也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。 (3)内模式 又称物理模式,它给出了数据库物理存储结构与物理存取方法。内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。内模式对一般用户是透明的,但它的设计直接影响数据库的性能。 5.2 数据模型 5.2.1 实体联系模型 (1)定义 实体联系模型是一种用于描述现实世界中实体(Entity)及它们之间关系(Relationship)的图形化工具。它提供了对数据结构的抽象和可视化表示,用于数据库设计和组织。 (2)两个实体间的联系 ①一对一联系:主表中的每一条记录只与相关表中的一条记录相关,例如, 在一个关系型数据库中,一个人可能只有一个身份证号,而一个身份证号也只能对应一个人,这就是一对一联系。 ②一对多联系:主表中的每一条记录与相关表中的多条记录相关联,例如,在学校数据库中,一个班级(主表)可以有多名学生(相关表),但每名学生只属于一个班级。 ③多对多联系:主表中的每一条记录可以与多个不同的实体记录相关联,例如,在图书馆数据库中,一本书籍(主表)可能有多名作者(相关表),同时一个作者也可能合作创作多本书籍。 5.2.2 E-R图 (1)定义 E-R 图是实体联系模型的图形表示,用于可视化描述实体、关系和属性之间的关联。E-R 图是数据库设计中常用的工具,帮助设计者理解数据模型。 (2)主要素实体(Entity): 表示现实世界中可区分的对象,通常用矩形表示,例如,学生、课程、图书等。关系(Relationship): 描述实体之间的关系,通常用菱形表示,例如,学生和课程之间的选修关系。属性(Attribute): 描述实体或关系的特征,附加在相应的矩形或菱形上,例如,学生实体的姓名属性。
源自百度百科:https://baike.baidu.com/pic/%E5%AE%9E%E4%BD%93%E5%85%B3%E7%B3%BB%E5%9B%BE//1/9d82d158ccbf6c81c4294ef1b33eb13533fa4088?fromModule=lemma_top-image&ct=single#aid=1&pic=9d82d158ccbf6c81c4294ef1b33eb13533fa4088 5.3 关系代数 关系代数是一种基于集合论的形式化查询语言,用于对关系数据库中的关系进行操作和查询。 基本运算:集合运算、选择、投影、连接运算; 5.3.1 集合运算 ①并(Union):将两个关系的组合并,去除重复组,如R∪S; ②差(Difference):选取只出现在一个关系中而不在另一个关系中的组,如R−S; ③交(Intersection):选取同时出现在两个关系中的组,如R∩S; 5.3.2 选择 定义: 选择运算用于从关系中选择满足特定条件的组。 符号: σ条件(R) 示例: 如果关系 �R 包含学生信息,可以进行选择运算来选择所有年龄大于 20 岁的学生,即σ年龄>20(R) 5.3.3 投影 定义:投影运算用于从关系中选择出特定的列。 符号:π列1,列2,…(R) 示例:如果关系 R 包含学生信息,可以进行投影运算来选择出只包含学生姓名和学号的信息:π姓名,学号(R) 5.3.4 连接 (1)自然连接(Natural Join) 定义: 基于两个关系的公共属性进行连接。 符号:R⋈S 示例:如果 R 包含学生信息,S 包含课程信息,可以通过自然连接找到学生选修的课程:Student⋈Course (2)θ-连接(Theta Join) 定义: 使用一个条件进行连接,条件可以是等值或不等值。 符号 :R⋈条件S 示例:如果 R 包含学生信息,S 包含课程信息,可以通过θ-连接找到学生选修的课程,条件可能是学生学号等于课程中的学号:Student⋈Student.ID=Course.StudentIDCourse (3)广义笛卡尔积(×) 定义:广义笛卡尔积是连接运算的一种特例,它简单地将两个关系的所有组组合在一起,没有特定的连接条件。 符号:R×S 示例:如果 R 包含学生信息,S 包含课程信息,广义笛卡尔积R×S可以得到所有可能的学生-课程组合。 5.4 数据库设计方法和步骤 数据库设计的四个阶段:需求分析、概念分析、逻辑设计、物理设计。 5.1.1 需求分析阶段 这是数据库设计的首个阶段,其主要任务是并深入分析相关数据。基础数据和数据流图在此阶段被收集,为下一步概念结构设计奠定基础。 5.1.2 概念设计阶段 通过分析数据之间的内在语义关系,建立一个抽象模型,通常以实体-关系图(E-R 图)的形式呈现。 5.1.3 逻辑设计阶段 通过将概念设计得到的 E-R 图转化为关系数据库管理系统(RDBMS)中的关系模式,确定数据的存储方式和结构。 5.1.4 物理设计阶段 对数据库内部的物理结构进行调整,以及选择合适的存取路径,以优化数据库的访问性能并有效利用存储空间 写在最后 亲爱的小可爱们,期待本文所提及的知识能够为你们即将面对的计算机二级考试增添一抹乐趣!希望你们在考场上能像追逐梦想一样轻松自如,顺利收获满满的理想分数哦~ 加油,让我们共同为成功的大门敞开而努力!
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/24207.html