二级教程——公共基础知识1.算法是指解题方案的准确而完整的描述。2.程序的编制不可能优于算法的设计。3.算法的基本特征:a.可行性;b.确定性;(不允许有模能两可的解释,也不允许有多义性)c.有穷性;d.拥有足够的情报。4.算法的两种基本要素:一是数据对象的运算和操作;二是算法的控制结构。5.算法设计的基本算法:a.列举法;b.归纳法;c.递推;d.递归;e.减半递推技术;f.回溯法。6.算法的复杂度主要包括时间复杂度和空间复杂度。7.算法的时间复杂度(理解):是指执行算法所需要的计算工作量。算法的基本运算反映了算法运算的主要特征,用基本算法的次数来度量算法工作量是客观的也是实际可行的。8.算法的空间复杂度(理解):指执行这个算法所需要的内存空间。9.数据结构主要研究和讨论的三个方面问题:a.数据集合中个数据元素之间所固有的逻辑关系,即数据的逻辑结构;b.在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;c.对各种数据结构进行的运算。10.数据结构是指反映数据元素之间关系的数据元素集合的表示。11.数据结构应包含的两方面的信息:a.表示数据元素的信息;b.表示各数据元素之间的前后件关系。12.数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。常用的存储结构有顺序、链接、索引等存储结构。13.根据数据结构中各元素前后件元素的复杂程度,一般将数据结构分为两的类:线性结构和非线性结构。14.线性结构又称线性表,一个非空的数据结构需满足以下两个条件构成线性结构:一是有且只有一个根节点;二是每一个节点最多有一个前件,也最多有一个后件。15.线性表是最简单、最常用的一种数据结构。16.线性表由一组数据元素构成,而复杂的线性表中,由若干数据相组成的数据元素成为记录,而由多个记录构成的线性表又称为文件。线性表是一种线性结构。数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的。17.线性表的顺序存储结构具有以下两个基本特点:a.线性表中所有元素所占的存储空间是连续的;b.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。18.栈是一种特殊的线性表。在这种特殊的线性表中,其插入与删除运算都只在线性表的一端进行。19.栈是限定在一端进行插入与删除的线性表。栈也被称为“先进后出”表或“后进先出”表,其具有记忆作用。通常用指针top来指示栈顶的位置,用指针bottom只想线索。20.栈的基本运算有三种:入栈,退栈与读栈顶元素。21.线性表组织管理用户程序的排队执行的原则是:a.初始时线性表为空;b.当有用户程序老道士,将该用户程序加入到线性表的末尾进行等待;c.当计算机系统执行完当前的用户程序后,就从线性表的头部取出一个用户程序执行。在这种线性表中,需要加入的元素总是插入到线性表的末尾,并且又总是从线性表的头部取出(删除)元素。这种线性表成为队列。22.查找技术:一是顺序查找;二是二分法查找(二分法查找只需要比较㏒2n次,而顺序查找需要查找n次。23.排序技术:交换类排序法:a.冒泡排序法;b.快速排序法。插入类排序法:a.简单插入排序法b.希尔排序法(简单插入排序需要n(n-1)/2次比较,希尔排序所需要比较次数O(n),堆排序需要比较的次数为O(n㏒2n)).24.形成良好的程序设计风格,主要应注重和考虑下述一些因素:a.源程序文档化;b.数据说明的方法;c.语句的结构(程序编写要做到清晰第一,效率第二);d.输入和输出;25.结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。26.结构化程序的基本结构:a.顺序结构;b.选择结构;c.重复结构(又称循环结构)。27.面向方法的主要优点:a.与人类习惯的思维方法一致;b.稳定性好;c.可重用性好;d.易于开发大型软件产品;e.可维护性好。28.对象是面向对象方法中最基本的概念。对象可以用来表示客观世界中的任何实体,也就是说,应用领域中有意义的,与所要解决的问题有福安息的任何事物都可以作为对象。29.面向对象的程序设计方法中设计的对象是系统中用来描述蛇管事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作组成。30.属性即对象所包含的信息,它在设计对象是确定,一般只能通过执行对象的操作来改变。31.对象的基本特点:a.标识唯一性;b.分类性;c.多态性;d.封装性;e.模块独立性好。32.将属性、操作类似的对象归为类。33.消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。34.一个消息有下述三部分组成:a.接收消息的对象名称;b.消息的标识符(也称为消息名);c.另个或多个参数。35.继承是指能够直接获得已有的性质和特征,而不必重复定义它们。36.继承分为单继承和多重继承。但继承是指一类只允许有一个父类,即类等级为树形结构。多重继承是指,一个类允许有多个父类。37.对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。38.软件分为应用软件、系统软件和工具软件。39.计算机软件(software)是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。40.软件的特点:a.软件是一种逻辑实体,而不是物理实体,具有抽象性;b.软件的生产与硬件不同,它没有明显的制作过程;c.软件在运行使用期间不存在磨损老化问题;d.软件的开发、运行对计算机系统具有依赖性,受到计算机系统的限制,这导致了软件移植的问题;e.软件复杂性高,成本昂贵;f.软件开发涉及诸多的社会因素。41.软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。42.软件危机归结为成本、质量、生产率等问题。43.关于软件工程的定义,国标中指出,软件工程是应用于计算机软件的定义、开发和维护的一整套方案、工具、文档、时间标准和工序。44.软件工程包括三个要素,即方法、工具和过程。45.ISO9000定义:软件工程过程是把输入转化为输入的一组彼此相关的资源和活动。46.软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。基于这个方面,软件工程过程通常包含4种基本活动:a.P(Plan)——软件规格说明。规定软件的功能及其运行时的限制b.D(Do)——软件开发。产生满足规格说明的软件。c.C(Check)——软件确认。确认软件能够满足客户提出的要求d.A(Action)——软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。47.软件生命周期:软件产品从提出、实现、使用维护到停止使用退役的过程。48.软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。49.软件生命周期的主要活动阶段是:a.可行性研究与计划制定;b.需求分析;c.软件设计;d.软件实现;e.软件测试;f.运行和维护。50.软件工程的目标是:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。51.软件工程的理论和技术性研究的内容包括:软件开发技术和软件工程管理。52.软件工程的原则(8条):a.抽象;b.信息隐蔽;c.模块化;d.局部化;e.确定性;f.确定性;g.一致性;h.完备性;i.可验证性。53.软件开发方法包括分析方法、设计方法和程序设计方法。54.结构化方法包括已经形成了配套的结构化分析方法、结构化设计方法和结构化编程方法,其核心和基础是结构化程序设计理论。55.常见的需求分析方法有:a.结构化分析方法;b.面向对象的分析方法。56.结构化分析就是使用数据流程图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。57.结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。58.结构化分析的常用工具:a.数据流图(步骤:由外向里,自顶向下,逐层分解);b.数据字典(数据字典是结构化分析方法的核心);c.判定树;d.判定表。59.软件需求规格说明书的特点(8点):a.正确性;b.无歧义性;c.完整性;d.可验证性;e.一致性;f.可理解性;g.可修改性;h.可追踪性。60.软件设计包括软件结构设计、数据设计、接口设计、过程设计。61.软件设计的一般过程:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行底层吃的过程设计,穿插进行数据设计和接口设计。62.软件设计的基本原理:a.抽象;b.模块化;c.信息隐蔽;d.模块独立性(①内聚性:(内聚性是一个模块内部各个元素彼此结合的紧密程度的度量)②耦合性(耦合性是模块间互相连接的紧密程度的度量))。63.各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内部的内聚性,有利于提高模块的独立性。64.软件概要设计的基本任务是:a.设计软件系统结构;b.数据结构及数据库设计;c.编写概要设计文档,d.概要设计文档评审。65.模块用一个矩形表示,矩形内注明模块的功能和名字;箭头表示模块间的调用关系。66.经常使用的结构图有四种模块类型:传入模块、传出模块、变换模块、协调模块。67.数据流类型:a.变换型;b.事务型(特点是接受一项事物。根据事物处理的特点和性质,选择分派一个适当的处理单元(事务处理中心),然后给出结果)。68.设计的准则:a.提高模块独立性;b.模块规模适中;c.深度、宽度、扇出和扇入适当;d.使模块的作用域在该模块的控制域内。69.详细设计的任务,是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。70.常见的过程设计工具:a.图像工具:程序流程图。N-S.PAD.HIPO;b.表格工具:判定表;c.语言工具:PDI(伪码)。71软件测试的定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实践结果之间的差别。72.软件测试是为了发现错误而执行程序的过程。方法:静态测试和动态测试。73.软件测试的方法若是从是否需要执行被测试软件的角度,可以分为静态测试和动态测试方法。若按照功能划分可以分为白盒测试和黑盒测试方法。74.静态测试包括代码检查、静态结构分析、代码质量度量等。它不实际运行软件,主要通过人工进行。75.白盒测试方法也称结构测试或逻辑驱动。它是根据软件产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规格要求。它的主要方法有逻辑覆盖、基本路径测试等。76.黑盒测试方法也称功能测试或数据驱动测试。黑盒测试主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错。77.等价类划分法设计测试方案,首先要划分输入集合的等价类。78.软件测试过程一般按四个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。79.程序调试的任务是诊断和改正程序中的错误。80.程序调试的基本步骤:a.错误定位;b.修改设计和代码,以排除错误;c.进行回归测试,以防止新的错误。81.软件调试可以分为动态调试和静态调试。82.静态调试主要指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试的。83.主要的调试方法有:a.强行排错法;b.回溯法;c.原因排除法。84.数据实际上就是描述事物的符号记录。85.软件中的数据(Data)是有一定结构的:数据有型(Type)和值(Value)之分。86.数据库(Database)是数据的集合。87.数据库管理系统:a.数据模式定义;b.数据存取的物理构建;c.数据操作;d.数据的完整性、安全性定义与检查;e.数据库的并发控制与故障恢复;f.数据的服务。88.数据定义语言