其他分享
首页 > 其他分享> > 2019-2020-1学期20202407钱虹全《网络空间安全专业导论》第四周学习总结

2019-2020-1学期20202407钱虹全《网络空间安全专业导论》第四周学习总结

作者:互联网

第8章  抽象数据类型与子程序

8.1 抽象数据类型

抽象数据类型(abstract data type,ADT):属性(数据和操作)明确地与特定实现分离的容器。

数据结构(data structure):一种抽象数据类型中的复合数据域的实现。
容器(container):存放和操作其他对象的对象。

8.2 栈

栈是一种抽象复合结构。只能从一端访问栈中的元素,可以从第一个位置插入元素,也可以删除第一个元素:这种类型的处理称为LIFO,意思是后进先出(last in first out)。删除的项总是在栈中时间最短的项目。插入操作叫做Push(推进),删除操作叫做Pop(弹出)。

8.3  队列

队列也是一种抽象结构,队列中的项目只能从一端入,从另一端出,这种行为称为FIFO,意思是先进先出(first in first out)。删除的总是在队列中时间最长的项目。插入操作和删除操作没有标准的相关术语。Enqueue,Enque,Enq,Enter,Insert都能表示插入;Dequeue,Deque,Deq,Delete,Remove都可以表示删除。

8.4  列表

列表有三个属性:项目是同构的,项目是线性的,列表是Delete变长的。列表通常提供插入(Insert),删除(Delete),检索是否存在(IsThere)以及列表中项目数量(GetLength)。列表可以形象化为链式结构

<u>链式结构(linked structure):一个将数据项和找到下一项位置的信息保存到同一容器的实现方法。**

8.5 树

分层体系结构称为树。

8.5.1 二叉树

树中每个节点可以有0个、1个或2个子女。

二叉树(binary tree):具有唯一起始节点(根节点)的抽象复合结构,其中每个节点可以有两个子女节点,根节点和每个节点之间都有且只有一条路径。
根(Root):树中唯一的开始节点。
叶节点(leaf node):没有子女的树节点。

8.5.2 二叉检索树

1.在二叉树中搜索

左子女小于父母,右子女大于父母。

如果current指向一个节点,那么info(current)指的就是这个节点中的用户数据,left(current)指向的是current的左子树的根节点,right(current)指向的是current的右子树的根节点。null是一个特殊值,说明指针指向空值。利用这些符号,可以编写搜索算法:从树根节点开始,沿着根的后继子树前进,直到找到了要找的项目或发现了一个空子树为止。

2.构造二叉检索树
3.输出二叉检索树中的数据

8.6  图

图(graph):由一组节点和一组节点相互连接起来的边构成的数据结构。
顶点(vertex):图中的节点。
边(弧)(edge(arc)):表示图中两个节点的连接的顶点对。
无向图(undirected graph):其中的边没有方向的图。
有向图(directed graph(digraph)):其中的边是从一个顶点指向另一个顶点(或同一个顶点)的图。
邻顶点(adjacent vertice):通过边连接起来的两个顶点。
路径(path):连接图中两个顶点的一系列顶点。

8.6.1 创建图

列表、栈、队列和树都是可容纳元素的容器。用户根据特定的问题选择最合适的容器,不被纳入检索过程的算法是没有固定语义的:栈返回的元素是在其中停留时间最少的元素。队列返回的是在其中停留时间最长的元素。队列和树返回的信息都是被请求的。然而不同的是,在图中定义的算法可以解决实际的问题。

8.6.2  图算法

1.深度优先搜索

 

相比于更早时候可选的其他分支,你会选择一条尽可能可以走远的路。

2.广度优先搜索

 

深度优先搜索算法从起点出发尽可能地往更远的路径检查,而不是优先选择检查与起点相邻的第二个顶点。相反,广度优先搜索会优先检查所有与起点相邻的顶点,而不是检查与这些顶点相连的其他顶点。

3.单源最短路搜索

广度优先搜索算法可以找到最小换成次数的航线。但是这并不代表最短的总距离。

8.7  子程序

8.7.1  参数传递

参数列表(parameter list):程序中两部分之间的通讯机制。
形参(parameter):列在子程序名后的括号中的标识符。
实参(argument):子程序调用中列在括号中的标识符。

8.7.2  值参数与引用参数

值参(value parameter):由调用单元传入实参的副本(写在留言板上)的形参。
引用参数(reference parameter):由调用单元传入实参的地址(写在留言板上)的形参。

第9章  面向对象设计与高级语言设计语言

9.1  面向对象方法

9.1.1  面向对象

对象(object):在问题背景中相关的事物或实体。
对象类(object class)或类(class):一组具有相似的属性和行为的对象的描述。
字段(field):表示类的属性。
方法(method):定义了类的一种行为的特定算法。

9.1.2  设计方法

设计方法:1.头脑风暴。2.过滤。3.场景。4。责任算法。5.总结。
封装(encapsulation):把数据和动作集中在一起,使数据和动作的逻辑属性与它们的实现细节分离。

9.1.3  示例

9.2  翻译过程

9.2.1  编译器

用汇编语言编写的程序要输入汇编器,由它把汇编语言指令翻译成机器码,最终执行的是汇编器输出的机器码。
<u>编译器(compiler):把用高级语言编写的程序翻译成机器码的程序。</u>

9.2.2  解释器

解释器(interpreter):输入用高级语言编写的程序,指导计算机执行每个语句指定的动作的程序。
解释器在翻译过语句之后会立刻执行这个语句。

第二代高级语言可以分为两种,一种是要编译的,另一种是要解释的。

可植入性是Java最重要的特性。
字节码(bytecode):编译Java源代码使用的标准机器语言。
字节码不是某个特定硬件处理器的机器语言,任何具有JVM的机器都可以运行编译过的Java程序。

9.3  程序设计语言规范

9.3.1  命令式范型

1.面向过程的范型

面向过程编程是一种命令式模型,在这里语句被分组成子程序。一个程序是子程序分层次构成的,每一层执行整个问题求解的一个必要的特定任务。

2.面向对象的范型

面向对象视角是与对象交互的一种方式。每个对象负责执行它自己的动作。
在面向过程的范型中,数据被认为是被动并且被程序所操控的;在面向对象的范型中,数据对象是活跃的。每个对象负责控制自己的操作。

SIMULA和Smalltalk是最先支持面向对象编程的语言。Java和Python是两种新式的面向对象的编程语言。

尽管Java是面向对象的,但其具有一些面向过程的特性;C++是面向过程的,其具有面向对象的特性。

9.3.2  声明式范型

声明式范型是一个描述结果的模型,但是完成结果的过程则不被描述。在这种范型中的两种基本模型:函数式和逻辑式。

9.4  高级程序设计语言的功能性

9.4.1  布尔表达式

布尔表达式(Boolean expression):一个标识符序列,标识符之间由相容的运算符分隔,求得的值是true或false。

9.4.2  数据归类

强类型化(strong typing):每个变量都有一个类型,只有这种类型的值才有存储到该变量中。
数据类型(data type):一组值以及能够应用这种类型的值的基本操作集合的说明。

C++、Java、VB.NET是强类型的语言,Python则不是。

1.数据类型

数据类型:整数、实数、字符、布尔型、字符串。

2.声明

声明(declaration):把变量、动作或语言中其他实体与标识符关联起来的语句,使程序员可以通过名字引用这些项目。
保留字(reserved word):一种语言中具有特殊意义的字,不能用它作为标识符。
区分大小写(case sensitive):大写字母和小写字母被看作是不同的;两个拼写方法相同但大小写形式不同的标识符被看作是两个不同的标识符。

9.4.3  输入/输出结构

在强类型语言中不管输入输出语句的语法或输入输出流在哪,处理的关键在于数据类型。数据类型确定字符是如何被转换为位模式以及如何被转换为字符。在非强类型语言中,输入的格式决定了类型。 输出语句创建字符流。

 

9.4.4  控制结构

控制结构(control structure):确定程序中的其他指令的执行顺序的指令。

 

1.嵌套逻辑
2.异步处理。

异步(asynchronous):不与计算机中的其他操作同时发生,与程序的操作不同步。

9.5 面向对象语言的功能性

9.5.1  封装

封装(encapsulation):实施信息隐蔽的语言特性。

对象(问题求解阶段)(object(problem-solving phase)):与问题背景相关的事物或实体。
类(实现阶段)(class(implementation phase)):对象的模式。
对象类或类(问题求解阶段)(object class or class(problem-solving phase)):属性和行为相似的一组对象的说明。
对象(实现阶段)(object(implementation phase)):类的一个实例。

9.5.2  类

实例化(instantiate):创建类的对象。

9.5.3  继承

继承(inheritance):类获取其他类的属性(数据字段和方法)的机制。

9.5.4  多态

多态(polymorphism):语言在运行时确定给定调用将执行哪些可能的方法的能力。

9.6 过程设计与面向对象设计的区别

 

标签:范型,语言,20202407,面向对象,2020,网络空间,顶点,标识符,节点
来源: https://www.cnblogs.com/qhq20202407/p/13910949.html