公共基础知识讲课教案Word格式文档下载.docx

上传人:b****5 文档编号:17490804 上传时间:2022-12-06 格式:DOCX 页数:22 大小:425.08KB
下载 相关 举报
公共基础知识讲课教案Word格式文档下载.docx_第1页
第1页 / 共22页
公共基础知识讲课教案Word格式文档下载.docx_第2页
第2页 / 共22页
公共基础知识讲课教案Word格式文档下载.docx_第3页
第3页 / 共22页
公共基础知识讲课教案Word格式文档下载.docx_第4页
第4页 / 共22页
公共基础知识讲课教案Word格式文档下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

公共基础知识讲课教案Word格式文档下载.docx

《公共基础知识讲课教案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《公共基础知识讲课教案Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。

公共基础知识讲课教案Word格式文档下载.docx

对一个线性结构操作后,仍旧是一个线性结构

c>

优点、查找比较方便,通过计算地址可以直接找到它

Address(a(i)=address(a1)+(i-1)*k

k:

每个元素所占存储单元的字节数

d>

缺点、插入和删除结点时要移动大量的元素,要知道最优和最坏的情况

e>

一般采用顺序存储结构,逻辑上相邻的结点在存储结构中也是相邻的。

两个特例栈

队列

栈、只有一个出入口

特点、先进后出。

对栈操作的过程入栈(push)、出栈(pop)和读栈顶元素

队列、一个出口,一个入口

特点、先进先出

循环队列对满与对空的条件对满、s=1,且front=real

对空、s=0,且front=real=m

m:

队列的大小

5、线性链表、链表结点的组成数据域、存放当前结点的数据信息

指针域、存放下一个结点的地址

数据域指针域

优点、插入和删除结点时不需要移动元素

缺点、查找必须从第一个结点开始。

6、非线性结构、

a>

分类树

树与二叉树

树、a>

根结点、无前驱的结点

叶子结点、无后继的结点,也就是度为零的结点。

和b>

之外的每个结点有且仅有一个前驱结点和若干个后继结点

结点的度、结点对应后继结点的个数

树的度、在一个树中,度最大的结点的度就是树的度。

f>

树的深度、树的层次数。

g>

树是无序的

二叉树

二叉树是有序树,它区分左右子树

是两个完全不同的二叉树。

b>

二叉树的度为2

c>

二叉树的性质

性质1、在二叉树的第k层上,最多有2^(k-1)个结点(k>

=1)

性质2、深度为m的二叉树最多有2^m-1个结点。

性质3、在任意一棵二叉树中,度为零的结点数总是被度为2的结点数多一个.

性质4、具有n个结点的二叉树,其深度至少为㏒[2n]+1

d>

满二叉树与完全二叉树

满二叉树完全二叉树这两个不是完全二叉树

满二叉树、除最末一层的结点外,其余各层都是满的。

完全二叉树、罪最末两层外其他各层都是满的,最末两层要做到“先左后右”。

所以满二叉树一定是一个完全二叉树,而完全二叉树并不一定是一个满二叉树.

二叉树的存储结构、采用链式存储结构

二叉树的遍历按先左后右的次序先序遍历

中序遍历

后序遍历

三、查找技术、

顺序查找、从第一个结点开始逐个查找的过程。

最坏的情况下比较n次。

适合无序的线性表

线性链表

二分法查找、适合有序的线性表

在最坏的情况下要进行long2n次比较。

四、排序技术

交换类排序冒泡排序

快速排序

选择类排序简单选择排序

堆排序

插入类排序简单插入排序

希尔排序

排序方法

时间复杂度

空间复杂度

复杂性

平均情况

最坏情况

最好情况

直接插入排序

O(n2)

O(n)

O

(1)

简单

冒泡排序

希尔排序

O(nlong2n)

较复杂

快速排序

直接选择排序

堆排序

第二章程序设计基础

一、程序设计经历的阶段结构化程序设计

面向对象的程序设计

二、良好的编程风格要注意

a>

符号名的命名最好达到”见名知意”

添加必要的注释,注释不是可有可无的。

程序要写成锯齿状,视角效果

限制使用goto语句

采用三种基本的控制结构

每个控制结构或每个模块只有一个出口和一个入口.

三、结构化程序设计的原则、自顶向下、逐步求精、模块化、限制使用goto语句

自顶向下:

即先考虑总体,后考虑细节;

先考虑全局目标,后考虑局部目标。

即按功能划分为若干个基本模块,这些模块形成一个树状结构。

逐步求精:

对复杂问题,应设计一些子目标做过度,逐步细化。

模块化:

模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块

四、面向对象的程序设计、

1、面向对象的本质:

就是主张从客观世界固有的事物出发来构造系统,强调最终建立的系统能够映射问题域。

2、面向对象的基本概念

对象、客观存在,相互区别的事物。

它是类的一个实例。

它也由类产生而来.

类、具有共同属性、共同方法的对象的集合,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。

即类是关于对象性质的描述。

也像对象一样,包括一组数据性质和在数据上的一组合法操作。

类的特点继承性

封装性

多态性

继承、使用已有的类定义作为基础建立新类的定义技术。

多态性、指对象根据所接受的信息而做出的动作,同样的信息被不同的对象接收时有不同行为的现象。

消息、实现对象之间的通讯,它统一了数据流和控制流。

面向对象程序设计的优点、与人类习惯的思维方法一致、稳定性好、可重用性好、易于开发大型软件产品、可维护性好.

第三章软件工程基础

一、软件的相关概念、

1、软件、指与计算机系统操作有关的计算机程序、规程、规则、以及可能有的文件、文档和数据.

2、软件的组成程序、数据和文档。

3、软件的特点

1>

软件是逻辑产品,而不是物理实体,它具有无形性,也不在磨损和消耗问题。

2>

没有明显的制作过程,其成本主要体现在软件的开发和研制上,可进行大量的复制。

3>

软件的开发、运行对计算机系统具有依赖性。

4>

开发和维护成本高。

5>

软件开发涉及诸多社会因素。

4、软件的分类应用软件

系统软件

支撑软件

应用软件、为解决特定领域的应用而开发的软件.如人力资源管理系统;

财务管理系统等。

系统软件、计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。

如操作系统os、语言处理程序汇编程序、DBMS等等。

解释程序

编译程序

支撑软件、是介于两者之间,协助用户开发软件的工具性软件。

5、软件的作用、它是用户与硬件之间的接口,是计算机系统的指挥者,是计算机系统结构设计的重要依据。

二、软件危机与软件工程

1、软件危机、泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题,具体的说,在软件开发和维护过程中,软件危机主要表现在:

❶软件需求的增长得不到满足;

❷软件开发成本和进度无法控制;

❸软件质量难以保证;

❹软件不可维护或维护程度非常低;

❺软件的成本不断提高;

❻软件开发生产率的提高赶不上硬件发展和应用需求的增长。

总之,可以将软件危机归结为成本、质量和生产率等问题

2、软件工程、指采用工程的概念、原理、技术和方法指导软件的开发与维护,软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。

软件工程学包含两方面的内容

1>

软件开发技术、主要有软件开发方法学、软件工具、软件工程环境

2>

软件工程管理、主要有软件管理、软件工程经济学。

3>

软件工程包括3个要素:

方法、工具和过程。

方法、是完成软件工程项目的技术手段。

工具、支持软件的开发、管理、文档生成。

过程、支持软件开发的各个环节的控制、管理。

3、软件工程过程包含4种基本活动

❶P(Plan)软件规格说明。

规定软件的功能及其运行时的限制。

❷D(Do):

软件开发。

产生满足规格说明的软件。

❸C(Check):

软件确认。

确认软件能够满足客户提出的要求。

❹A(Action).软件演讲。

为满足客户的变更要求,软件必须在使用的过程中演讲。

三、软件的生命周期、软件产品从提出、实现、使用维护到停止使用退役的过程。

1、软件生命周期分为3个(定义、开发、运行维护)时期共8个阶段

定义问题

软件定义期可行性研究

需求分析

概要设计

详细设计

软件开发期实现

测试

运行维护期使用和维护

退役

2、软件工程的原则、包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。

抽象、是事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程的复杂性。

信息隐蔽、采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。

模块化、模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义,模块的大小要适中,模块过大会使模块内部的复杂性增加,不利于模块的理解和修改,也不利于模块的调试和重用,模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。

局部化、保证模块间具有松散的耦合关系,模块内部有较强的内聚性。

确定性、软件开发过程中所有概念的表达应是确定、无歧义且规范的。

一致性、程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。

完备性、软件系统不丢失任何重要成分,完全实现系统所需的功能。

可验证性、应遵循容易检查、测评、评审的原则,以确保系统的正确性。

四:

软件开发工具与软件开发环境

1、软件开发工具:

包括需求分析工具、设计工具、编码工具、排错工具、测试工具等。

2、软件开发环境:

指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。

五:

结构化分析方法:

结构化方法的核心和基础是结构化程序设计理论

1、需求分析的任务是发现需求、求精、建模和定义需求的过程。

需求分析阶段的工作

需求分析阶段的工作可概括为4个方面:

①需求获取;

②需求分析;

③编写需求规格说明书;

④需求审评。

所以需求分析阶段产生的成果是需求规则说明书。

2、需求分析方法

(1)结构化分析方法

结构化分析方法主要包括面向数据流的结构化分析方法、面向数据结构的Jackson方法和面向数据结构的结构化数据系统开发方法。

(2)面向对象的分析方法

从需求分析建立的模型的特点来分,需求分析方法又分为静态分析方法和动态分析方法。

3、结构化分析常用的工具:

有数据流图、数组字典、判定表和判定树四种

数据流图、即DFD图。

表3-1数据流图的元素说明

符号

名称

作用

箭头

数据流。

沿箭头方向传送数据的通道

圆或椭圆

加工。

输入数据经加工变换产生输出

双杠

存储文件。

表示处理过程中存放各种数据文件

方框

源,潭。

表示系统和环境的接口,属系统之外的实体。

数据字典、它是结构化分析方法的核心。

它对数据流图中出现的被命名的图形元素的确切解释.所以在数据字典中所定义的对象都包含在数据流图中。

判定树、它先从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。

判定表、当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合引发的,使用判定表比较适宜。

六、结构化设计方法

1、软件设计的基础

需求分析主要解决”做什么”的问题,而软件设计主要解决”怎么做”的问题.

从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计

结构设计、定义软件系统各主要部件之间的关系。

数据设计、将分析时创建的模型转换为数据结构的定义。

接口设计、描述软件内部、软件和协作系统之间以及软件与人之间如何通信.

过程设计、把系统结构部件转换成软件的过程性描述.

从工程管理角度来看,软件设计分两步完成:

概要设计和详细设计。

概要设计、又称结构设计,将软件需求转化为软件体系结构,确定系统级接口,全局数据结构或数据库模式。

详细设计、确定每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。

软件设计的基本原理:

包括抽象、模块化、信息隐蔽、模块独立性

(1)抽象:

抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。

(2)模块化:

模块是指把一个待开发的软件分解成若干个小的简单的部分。

模块化是指解决—个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。

(3)信息隐蔽:

信息隐蔽是指,在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。

(4)模块独立性:

模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。

所以划分模块的原则是高内聚低耦合.

内聚性、划分的模块功能要强,每个模块能独立的完成一个任务。

耦合行、模块与模块之间的联系联系程度,为了提高模块的独立性,模块与模块之间的联系越小越好.

内聚性由弱到强排列分为:

偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚及功能内聚.

 

耦合性、模块间相互连接的紧密程度的度量。

按照由高到低分为:

内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合以及非直接耦合。

2、总体设计(概要设计)和详细设计

总体设计的基本任务是a>

设计软件系统结构;

数据结构及数据库设计;

编写概要设计文档;

概要设计文档评审.

常用的软件结构设计工具是结构图,也称为程序结构图,用到的图符有:

矩形、表示一个模块,

箭头、表示模块间的调用关系。

带实心圆箭头表示传递的是控制信息,空心圆箭头表示传递的是数据信息.

经常使用的结构图有四种模块类型:

传入模块、传出模块、变换模块和协调模块,表示如下图

它们的含义分别是:

传入模块:

从下属模块取得数据,经处理再将其传送给上级模块。

传出模块:

从上级模块取得数据,经处理再将其传送给下属模块。

变换模块:

从上级模块取得数据,进行特定的处理,转换成其他形式,再传送给上级模块.

协调模块:

对所有下属模块进行协调和管理的模块。

程序结构图的例图及有关术语列举如下:

深度、表示控制的层数。

上级模块、从属模块:

上、下两层模块a和b,且有a调用b,则a是上级模块,b是从属模块.

宽度、整体控制的跨度(最大模块数的层)的表示。

扇入、调用一个给定模块的模块个数

扇出、一个模块直接调用的其他模块数。

原子模块、树中位于叶子结点的模块。

面向数据流的设计方法

数据流的类型:

分为变换型和事物型

变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式,离开软系统。

变换型数据处理问题的工作过程大致分为3步,即取得数据、变换数据和输出数据,如图所示。

图3_5变换型数据流结构

变换型系统结构图由输入、中心变换和输出3部分组成,如图3_6所示。

变换型数据流结构组成

当信息沿输入通路到达一个处理,这个处理根据输入数据的类型从若干个动作序列中选择出一个来执行,这类数据流归为特殊的一类,称为事务流。

在一个事务流中,事务中心接收数据,分析每个事务以确定它的类型,根据事务类型选取一条活动通路。

如图3-7所示。

事务型数据流结构

3、详细设计、为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。

它不同于编码或编程.

详细设计的常用工具有:

(1)程序流程图、N-S(方盒图)、PAD(问题分析图)和HIPO(层次图+输入/处理/输出图);

(2)判定表;

(3)PDL(伪码)。

在程序流程图中菱形代表一个逻辑条件,箭头表示控制流,矩形表示处理的步骤.如图3-8所示。

控制流处理步骤逻辑条件

七、软件的测试

1、测试的目的、为了尽可能多的发现程序中的错误,而不是证明程序的正确性。

一个好的测试用例能够发现至今尚未发现的错误;

一个成功的测试是发现了至今尚未发现的错误。

所以一个好的测试用例就是一个成功的测试用例。

2、软件测试的准则

①所有测试都应追溯到需求;

②严格执行测试计划,排除测试的随意性;

③充分注意测试中的群集现象;

④程序员应避免检查自己的程序;

⑤穷举测试不可能;

穷举测试即通过测试将程序中的所有错误都已发现并改正。

⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

3、测试的方法、分为静态测试与动态测试

静态测试、一般是指人工评审软件文档或程序,借以发现其中的错误。

由于被评审的文档或程序不必运行,所以称为静态的。

所以静态测试是不需要在计算机上运行程序而进行的测试。

静态测试包括代码检查、静态结构分析、代码质量度量等。

动态测试、是指上机进行测试。

黑盒测试方法

白盒测试方法。

白盒测试方法与测试用例设计

白盒测试法即程序结构测试,也称为程序路径的测试,它与程序内部结构相关,使程序中每种可能的路径都至少执行一次。

白盒测试法主要有逻辑覆盖、基本路径测试等。

A>

逻辑覆盖:

逻辑覆盖测试

逻辑覆盖测试是泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。

通常所指的程序中的逻辑表示有判断、分支、条件等几种表示方式。

语句覆盖。

语句覆盖是一个比较弱的测试标准,它的含义是,选择足够的测试实例,使得程序中的每一个语句都能执行一次。

3>

路径覆盖。

执行足够的测试用例,使程序中所有的可能路径都至少经历一次。

4>

判定覆盖。

设计足够的测试实例,使得程序中的每个判定至少都获得一次“真值”和“假值”的机会。

判定覆盖要比语句覆盖严格,因为如果每个分支都执行过了,则每个语句也执行过了。

5>

条件覆盖。

对于每个判定中所包含的若干个条件,应设计足够多的测试实例,使得判定中的每个条件都取到“真”和“假”两个不同的结果。

条件覆盖通常比判定覆盖强,但也有的测试实例满足条件覆盖而不满足判定覆盖。

6>

判断-条件覆盖。

设计足够多的测试实例,使得判定中的每个条件都能取得各种可能的“真”和“假”值,并且使每个判定都能取到“真”和“假”两种结果。

B>

基本路径测试、对每条独立执行路劲进行测试。

黑盒测试方法与测试用例设计、根据程序的功能而设计测试用例。

也称为程序功能的测试。

黑盒测试法分等价类划分法、边界值分析法和错误推测法。

(1)等价类划分法、它是将程序的所有可能的输人数据划分成若干部分,然后从每个等价类中选取数据作为测试用列。

(2)边界值分析法、它是对各种输入、输出范围的边界情况设计测试用例的方法。

(3)错误推测法、通过经验或直觉推测程序中可能存在的各种错误。

4、软件测试的实施、即软件测试的实施过程。

软件测试过程分4个步骤:

即单元测试、集成测试、验收测试和系统测试。

1.单元测试、即对软件设计的最小单位-模块(程序单元)进行正确性检验测试。

单元测试的目的是发现各模块内部可能存在的各种错误。

单元测试的依据是详细的设计说明书和源程序。

单元测试的技术可以采用静态分析和动态测试。

2.集成测试、集成测试是测试和组装软件的过程。

集成测试所设计的内容包括:

软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。

集成测试的依据是概要设计说明书

集成测试非增量方式、将测试好的每一个软件单元一次组装在一起再进行整体测试。

增量方式、测试好的模块逐步组装成较大系统,在组装过程中边连接边测试,以发现连接过程中产生的问题

增量方式包括自顶向下、自底向上、自顶向下与自底向上相结合的混合增量方法。

3.确认测试、它的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。

4.系统测试系统测试是通过测试确认的软件作为整个计算机系统的一个元素,与计算机硬件、外设、支撑软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。

系统测试的目的是在真实的系统工作环境下检验软件是否能与系统正确连接,发现软件与系统需求不一致的地方。

系统测试的具体实施一般包括:

功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试等。

系统测试的测试用例应根据需求分析规格说明来设计,并在实际使用环境下来运行.

八:

软件调试的概念、调试任务是诊断和改正程序中的错误。

调试主要在开发阶段进行。

1.程序调试的基本步骤

1、错误定位。

从错误的外部表现形式入手,确定程序中出错的位置,找出错误的内在原因。

2、修改设计和代码,以排除错误。

3、进行回归测试,防止引进新的错误。

因为修改程序可能带来新的错误,重复进行暴露这个错误的原始测试或某些有关测试,以确认该错误是否被排除、是否引进了新的错误。

 软件调试可分为静态调试和动态调试。

静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试。

2.软件调试的方法

1:

强行排错法、其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。

涉及的调试技术主要是设置断点和监视表达式:

2.回溯法、适合于小规模程序的排错。

即一旦发现了错误,先分析错误征兆,确定

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1