公共基础部分讲座 1Word文档下载推荐.docx

上传人:b****7 文档编号:22138158 上传时间:2023-02-02 格式:DOCX 页数:23 大小:94.64KB
下载 相关 举报
公共基础部分讲座 1Word文档下载推荐.docx_第1页
第1页 / 共23页
公共基础部分讲座 1Word文档下载推荐.docx_第2页
第2页 / 共23页
公共基础部分讲座 1Word文档下载推荐.docx_第3页
第3页 / 共23页
公共基础部分讲座 1Word文档下载推荐.docx_第4页
第4页 / 共23页
公共基础部分讲座 1Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

公共基础部分讲座 1Word文档下载推荐.docx

《公共基础部分讲座 1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《公共基础部分讲座 1Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。

公共基础部分讲座 1Word文档下载推荐.docx

算法的描述方法:

流程图和N-S图,算法描述语言

算法的复杂度:

评价一个算法的好坏。

-时间复杂度(算法的运行次数)

影响计算工作量的主要因素(运算的次数,问题的规模)

以下哪些不能用来衡量时间复杂度:

A、算法的程序长度B、算法所执行的语句条数C、算法程序执行的时间

在同一问题规模下可以用以下两点衡量算法的时间复杂度:

A、平均性态分析B、最坏情况复杂分析

-空间复杂度(运行时所占用的空间(内存空间))

一个算法所包含的空间复杂度:

A、程序所占用的空间B、输入的初始数据所占用的空间C、算法执行中所的额外空间。

习题练习:

1、下列描述中正确的是

A、算法就是程序B、算法强调利用技巧提高程序的执行效率

C、设计算法只需要考虑结果的可靠性D、以上说法都不对

2、下列叙述正确的是:

A、算法的执行效率与数据的存储结构无关

B、算法的空间复杂度指算法中程序的执行条数

C、算法的有穷性表示算法必须在执行有限的步骤后结束

D、以上三种描述都不对

3、下列叙述正确的是

A、一个算法的空间复杂度大,其时间复杂度也大

B、一个算法的空间复杂度大,其时间复杂度必小

C、一个算法的时间复杂度大,其空间复杂度比小

D、以上三种均不正确

4、算法的空间复杂度是指:

A、算法程序的变量数量B、算法程序的指令条数

C、算法各个控制变量所占的额外空间D、算法执行过程中所需要的存储空间

二、数据结构

目的:

提高数据处理的效率(一是提高数据的处理速度,二是尽量节省在处理过程中所占用的空间)

基本概念:

数据:

在计算机科学中所能输入到计算机中并被计算机程序所处理的符号总称

数据元素:

数据的基本单位,在计算机程序中通常通过一个整体进行考虑

数据结构:

是相互之间存在一种或者多种特定关系的数据元素的集和

基本内容:

线性表:

线性表就是线性结构

线性表的顺序存储结构称为顺序表,在顺序表中,所有元素的存储空间是连续的,逻辑顺序是依次存放的。

线性表在最坏的情况下删除一个元素需要移动N-1次,插入一个元素最坏情况下也需要移动n次

栈:

先进后出(LIFO,FILO)

注意:

在顺序结构下,栈的插入与删除运算都不需要移动表中的其他元素;

栈顶指针反映了栈中元素的变化

栈的存储结构与运算

存储结构:

数组

运算:

入栈,出栈,读栈顶元素

在顺序结构下读元素指:

将栈顶元素读出来,但是不会删除(但是删除需要先将元素读出来,之后再删除)

读栈顶元素需要注意:

读栈顶元素不会删除元素,只是将栈顶元素赋予一个变量,当栈顶元素0为null时表示栈空

队列:

先进先出(FIFO)

一般情况下,队列在顺序存储结构中通常以循环队列的方式进行操作,方法是将最后一个位置在出队列时加入到队头中去

循环队列的容量:

当rear>

front时,容量是rear-font;

(队列未满)

当rear<

font时,容量是m+(rear-font);

(队列已满,并且已经返回)

循环队列的运算

1、入队操作,在rear+1;

2、出队操作,在front+1

线性表总结:

在插入和删除时需要移动元素

由于使用数组作为存储结构,所以空间不好扩展

不便于对存储空间的动态分配

故:

对于大的线性数据结构和变动频繁的数据结构不适应使用线性存储结构

链式结构线性表:

存储方式:

由两部分组成,一部分用来存储元素值,另一部分用来存储后一个(前一个)元素的位置。

特点:

存储数据元素之间的空间可以不连续;

各节点之间的存储关系与元素的顺序可以不一致;

可以用线性结构存储,也可以使用非线性结构存储

头指针;

最后一个节点的指针为null,当头指针为null是表示该表为空表

单链表:

只有next指针

双向链表:

有pre指针和next指针

循环链表:

删除和插入时都不需要移动元素

习题:

1、不属于线性结构的是:

A、队列B、线性表C、二叉树D、栈

2、数据的存储结构是指

A、存储在外存的数据B、数据所占的存储空间量

C、数据在计算机中的顺序存储方式D、数据的逻辑结构在计算机中的表示

3、下列关于栈描述错误的是:

A、栈是先进后出的线性表B、栈只是顺序存储的

C、栈具有记忆作用D、对栈的插入与删除不改变栈底指针

4、下列对于线性链表的描述正确的是

A、存储空间不一定是连续的,且各个元素的顺序是任意的

B、存储空间不一定是连续的,且前一个元素一定存储在后一个元素的前面

C、存储空间必须是连续的,且前一个元素一定存储在后一个元素的前面

D、存储空间必须是连续的,且各个元素的顺序是任意的

5、下列关于栈的描述正确的是:

A、在栈中只能插入元素不能删除元素

B、在栈中只能删除元素不能插入元素

C、栈是特殊的线性表,只能在一端插入和删除元素

D、栈是特殊的线性表,只能在一端插入元素,在另一端删除元素

6、下列叙述正确的是:

A、一种逻辑结构只能有一种存储结构

B、数据的逻辑结构属于线性结构,数据的存储结构属于非线性结构

C、一个逻辑结构可以有多种存储结构,且不同的存储结构不影响程序的效率

D、一个逻辑结构可以有多种存储结构,且不同的存储结构会影响程序的效率

7、按照后进先出的原则组织数据的是

A、队列B、栈C、双向链表D、二叉树

8、下列叙述正确的是

A、线性链表是线性表的链式存储结构B、栈和队列是非线性存储结构

C、双向链表是非线性存储结构D、只有根节点的二叉树是线性结构

9、栈的运算特点是后进先出。

元素a、b、c、d依次入栈,则不能得到的出栈序列是()。

A.abcdB.cabdC.dcbaD.bcda

10、数据结构分为逻辑结构和存储结构,循环队列属于

11、数据的逻辑结构在计算机空间的存放形式称为数据的

12、按“先进后出”原则组织数据的是

13、数据结构分为线性结构和非线性结构,带链队列属于

三、树和二叉树:

树是非线性结构

基本概念

结点:

若干个指向子树的分支

结点的度:

某结点拥有子结点的个数

树的度:

树中所有结点度的最大值

叶子结点:

度为0结点

分支结点:

度不为0的结点

结点的层次(深度):

根为第一层,根的结点为第二层,依次类推

树的深度:

树中结点的最大层次称为树的深度

二叉树:

分支节点的度最多为2

二叉树的基本性质:

1、在二叉树的第k层上,最多有2k-1个节点

2、在深度为m的二叉树中,最多有2m-1个结点

3、在任意一棵二叉树中,度为0的节点的总比度为2的节点多一个

4、具有n个结点的二叉树,其深度至少为log2n+1

满二叉树和完全二叉树

1、满二叉树:

除了最后一层,每一层都有两个结点

2、完全二叉树(左子树一直存在)

二叉树的存储结构中,除了可以将满二叉树和完全二叉树按层次顺序结构存储之外,其余均只能使用链式存储。

二叉树的遍历:

前序遍历:

根,左,右

中序遍历:

左,根,右

后序遍历:

左,右,根

1、在一棵二叉树上,第五层的结点最多有几个

A、8B、16C、32D、15

2、某二叉树中度为2的结点有18个,度为0的结点有

3、一棵二叉树第六层的结点最多有几个

4、在深度为7的满二叉树中,叶子结点有个

5、

下图三种遍历的结果

四、查找技术:

顺序查找和二分查找

二分查找:

只有顺序存储的有序表才能使用二分查找

运行效率:

顺序查找:

n,二分查找:

log2n

排序:

1、长度为n的线性表,在最坏的情况下,下列各排序法对应的比较次数中正确的是

A、冒泡排序为n/2B、冒泡排序为n

C、快速排序为nD、快速排序为(n(n-1))/2

2、对长度为n的线性表进行顺序查找,在最坏的情况下需要比较多少次

A、log2nB、n/2C、nD、n+1

3、数据结构中能够用二分法进行查找的是

A、顺序存储结构的有序线性表B、线性链表C、二叉链表D、有序线性链表

4、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为

A、63B、64C、6D、7

5、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为()

一、程序设计的方法和风格

程序设计的风格强调简单和清晰,程序必须是可以理解的。

1、设计的风格

程序设计的根本目标是要降低程序的复杂性和提高程序的可读性

结构要清晰:

程序编写要做到清晰第一,效率第二;

要求程序是模块化结构的,每个模块内部都由顺序、选择、循环三个基本结构组成

模块化:

个模块的功能尽量单一

设计程序时应遵循“简短朴实”的原则

不好的程序另可重写,也不要去修补

2、语言应用的风格

选择合适的程序设计语言

对一些程序设计语言中的灵活大,不易理解的语句尽量少用

3、程序文本的风格

程序的层次要分明,在各层之间应采用缩进规则

符号要规范,变量名的命名要遵循“常用从简,专用从繁”的原则

在程序中加必要的注释,注释分为序言性注释和功能性注释

在程序中要合理的使用分隔符

4、输入与输出的风格

在需要输入数据时,应该给出必要的提示

要对输入的数据进行检验,以确认有效性

输入的步骤和操作要简单

要给输出加注释

二、结构化程序设计

结构化程序设计方法的四条原则:

1、自顶向下;

2、逐步求精;

3、模块化;

4、限制使用goto。

·

自顶向下:

总体—细节;

全局—局部

逐步求精:

对复杂程序设计子目标过渡

总目标分成小目标,上层模块决定做什么,下层模块确定怎么做

限制使用goto语句

语句尽可能的清晰

1、结构化程序的基本特点

以控制结构为单位,只有一个入口和一个出口,使各模块之间的接口尽可能简单

顺序结构、选择结构、循环结构

2、结构程序设计的基本原则

使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑

选用的控制结构只准许一个入口和一个出口

复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

程序语句组成容易识别的块,每块只有一个入口和一个出口

严格控制goto语句

程序设计并不等于编程。

编程知识程序设计整个过程的一小步

三、面向对象的程序设计

传统结构化程序设计方法的核心是算法,面向对象的核心是对象

1、基本概念

对象:

具有属性和方法的实体

类:

描述的是具有相似性质的一组对象。

一个具体的对象称为类的实例

方法:

允许作用于某个对象上的各种操作

消息:

用来请求对象执行某一处理或者回答某些信息的要求

继承:

类与类之间的关系

封装:

是一种信息隐藏的技术,目的在于将对象的使用者和对象的设计者分开。

用户只能见到对象封装界面上的信息,不必要知道实现的细节

2、面向对象开发的优点:

与人类的习惯的思维方法一致;

稳定性好

可重用性好

易于开发大型软件产品

可维护性好

四、考题练习

1、下列选项不符合良好程序设计风格的是

A、源程序要文档化B、数据说明的次序要规范化

C、避免滥用goto语句D、模块设计要保证高耦合,高内聚

2、下面描述中,符合结构化程序设计风格的是

A、使用顺序、选择、循环三种基本控制结构表示程序的控制逻辑

B、模块只有一个入口,可以有多个出口

C、注重提高程序的执行效率

D、不使用goto语句

3、下列选项中不属于结构化程序设计方法的是

A、自顶向下B、逐步求精C、模块化D、可复用

4、下面概念中,不属于面向对象方法的是

A、对象B、继承C、类D、过程调用

5、在面向对象方法中,类的实例称为

6、问题处理方案的正确而完整的描述称为

7、在面向对象方法中,()描述的是具有相似属性与操作的一组对象

8、结构程序设计主要强调的是

A、程序的规模B、程序的易读性

C、程序的执行效率D、程序的可靠性和可移植性

9、对建立良好的程序设计风格,下列描述正确的是()

A、程序应简单、清晰、可读性好B、符号名的命名需要符合语法

C、充分考虑程序的执行效率D、程序的注释可有可无

10、在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送

A、调用语句B、命令C、口令D、消息

11、信息隐藏的概念与下述哪一种概念直接相关

A、软件结构定义B、模块的独立性

C、模块类型划分D、模块耦合度

12、下面对对象概念描述错误的是()

A、任何对象都必须有继承性B、对象是属性和方法的封装体

C、对象间的通信靠消息传递D、操作是对象的动态属性

13、结构化程序设计的三种基本逻辑结构有(),(),()

14、源程序文档化要求程序应加注释,注释一般分为()和()

15、在面向对象方法中,信息隐藏是通过对象的()性来实现的

16、类是一个支持集成的抽象数据类型,而对象是类的(实例)

17、在面向对象的方法中,类之间共享属性和操作的机制称为()

18、下列叙述中正确的是

A、程序流程图是可有可无的B、程序中的注释是可有可无的

C、程序的结构化程度越高,其模块化程度就越低D、以上说法都不对

19、模块化程序设计的要求

A、每个模块只能包括一种控制结构B、每个模块的功能尽量单一

C、每个模块必须要有输出操作D、以上说法都不对

20、良好的程序设计风格体现在

A、程序的易读性好B、程序的执行效率高

C、程序中的注释尽量少D、程序中的语句尽量少

21、下列叙述中正确的是

A、类描述的是具有相似性质的一组对象

B、允许作用于某个对象上的各种操作称为消息

C、继承表示用户能见到对象封装界面的消息

D、以上三种说法都不对

22、下列叙述错误的是

A、任何对象都必须有继承性

B、对象是属性和方法的封装体

C、对象间的通信靠传递消息实现

D、操作是对象的动态属性

23、结构化程序设计的三种基本逻辑结构为:

顺序,选择和()

24、在面向对象的方法中,信息隐藏是通过对象的()来实现的

25、类是一个支持集成的抽象数据类型,对象是类的()

26、在面向对象方法中,类之间共享属性和操作的机制称为()

27、结构化程序设计主要强调的是

C、程序的执行效率D、程序的可移植性

28、对建立良好的程序设计风格,下面描述正确的是

A、程序应简单、清晰、可读性好B、符号名的命令要符合语法

C、充分考虑程序的执行效率D、程序的注释可有可无

29、划分模块的原则是

A、每个模块都易于理解B、要求各模块的功能尽量强

C、各模块之间的联系尽量紧密D、以上三个都不对

30、下列各概念中与信息隐藏概念直接相关的是

A、软件结构定义B、模块独立性

31、在程序设计中,往往把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每一个小目标称为()

32、源程序文档化要求程序应加注释。

注释一般分为()和()

33、面向对象的程序设计中设计的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,他是有对象的一组属性和一组对属性的()组成

34、在面向对象方法中,将具有相同属性和操作的对象抽象成为()

一、软件工程的基本概念

1、计算机软件包括程序、数据及相关文档的完整集合

2、软件的特点包括

软件是一种逻辑实体

软件的生产与硬件不同,它没有明显的制作过程

软件在运行、使用期间不存在磨损、老化问题

软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件的移植性问题

软件复杂性高,成本昂贵

软件开发设计诸多的社会因素

3、软件按功能分为:

应用软件、系统软件、支撑软件(工具软件)

4、软件危机主要表现在成本、质量、生产率等问题。

5、软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档实践标准和工序。

6、软件工程包括三个要素:

方法、工具和过程

7、软件工程的核心思想是把软件产品看作是一个工程产品来处理。

8、软件工程过程是把软件转化为输出的一组彼此相关的资源和活动,包含四种基本活动:

P(软件规格说明)、D(软件开发)、C(软件确认)、A(软件演进)

9、软件生命周期(软件产品从提出、实现、使用、维护到停止使用的过程)分为三个时期共八个阶段

软件定义期:

问题定义,可行性研究和需求分析

软件开发期:

系统设计,详细设计,编码和测试

软件维护期:

运行维护升级阶段

10、软件工程的目标和原则

目标:

在给定成本、进度的前提下。

开发出具有有效性、可靠性、可维护性、可重用性、可适应性、可移植性、可追踪性和可交互性且满足用户需求的产品。

11、基本原则:

抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性

12、软件工程的理论和技术性研究的内容包括:

软件开发技术和软件工程管理。

13、考题练习

A、程序就是软件B、软件开发不受计算机系统的限制

C、软件既是逻辑实体也是物理实体

D、软件是程序、数据和相关文档的集合

2、下列描述中正确的是

A、软件工程只是解决软件项目的管理问题

B、软件工程主要解决软件产品的生产率问题

C、软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D、软件工程只是解决软件开发中的技术问题

3、在软件开发中,下面任务不属于设计阶段的是

A、数据结构设计B、给出系统模块结构

C、定义模块算法D、定义需求并建立系统模型

4、下列选项中不属于软件生命周期开发阶段的任务是

A、软件测试B、概要设计C、软件维护D、详细设计

5、下列叙述中正确的是

A、软件交付使用后还需要进行维护

B、软件一旦交付就不需要再进行维护

C、软件交付使用后其生命周期就结束

D、软件维护是修复程序中被破坏的指令

二、结构化分析方法

在系统分析阶段,结构化分析方法用来对系统进行逻辑设计,此时不考虑物理实现的问题,只是考虑“做什么”的问题,而系统的物理设计(“如何做”)的问题留在系统设计阶段用结构化的设计方法去做。

分析之后需要得到的结果就是一个需求规格说明书,需要经过如下步骤:

需求获取需求分析需求规格说明书需求评审

1、常见的需求分析方法

结构化需求分析方法和面向对象的分析方法

2、结构化分析方法的实质:

着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型

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

数据流图(DFD)、数据字典(结构化分析的核心)、判定树、判定表

4、软件需求规格说明书:

(是需求分析阶段的最后成果,是软件开发的重要文档)

正确性,无歧义性,完整性,可验证性,一致性,可理解性,可追踪性

三、结构化设计方法

1、软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型

2、软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径

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

结构设计:

定义软件系统各主要部件之间的关系

数据设计:

将分析时创建的模型转化为数据结构的定义

接口设计:

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

过程设计:

把系统结构部件转化成软件的过程描述

4、从工程管理角度来看:

概要设计和详细设计

5、衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准(高内聚,低耦合)

内聚性:

一个模块内部各元素之间彼此结合的紧密程度(偶然内聚最弱,功能内聚最强)

耦合性:

模块之间互相连接的紧密程度(非直接耦合最弱、内容耦合最强)

6、软件概要设计

设计软件的系统结构

数据结构和数据设计

编写概要设计文档

概要设计文档评审

7、软件设计的基本原理

抽象:

提取特征

分解

信息隐蔽:

信息对于其他模块不能访问

模块独立性:

联系少且功能简单

8、常用的软件结构设计工具是结构体(SC),也称为程序结构图

9、典型的数据流类型有:

变换型和事务型

10、详细设计:

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

常见的过程设计工具有:

图形工具(流程图和N-S,PAD),表格工具,语言工具

11、练习

1、从工程管理角度,软件设计一般分为两步完成,它们是

A、概要设计和详细设计B、数据设计与接口设计

C、软件结构设计和数据设计D、过程设计与数据设计

2、在结构化方法中,用数据流图(DBD)作为描述工具的软件开发阶段的是

A、可行性分析B、需求分析C、详细设计D、程序编码

3、在软件设计中,不属于过程设计工具的是

A、PDLB、PAD图C、N-S图D、DFD图

4、为了使模块尽可能独立,要求

A、模块的内聚程度要高,耦合度强

B、内聚高,耦合弱

C、内聚低,耦合强D、内聚低,耦合低

5、两个或两个以上模块之间关联的紧密程度称为

A、耦合度B、内聚度C、复杂度D、数据传输特性

四、软件测试

1、软件测试的定义:

使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验软件是否满足规定的需求或弄清预期结果与实际结果之间的差别

测试只能说明程序有错,不能证明程序无错,不能发现程序中的所有错误

一个好的测试在于能发现至今未发现的错误,要避免由程序开发者自己来测试自己的程序。

2、软件测试的目的:

为发现错误而执行程序的过程

3、软件测试的方法:

静态测试和动态测试

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

不实际运行软件,主要通过人工进行

动态测试是基本的计算机测试,主要包括白盒测试和黑盒测试,其中,白

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

当前位置:首页 > 工程科技 > 建筑土木

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

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