2021-2022-1学期 20212307 《网络空间安全专业导论》第四周学习总结
20212307孙以诺
学习收获
第八章 抽象数据类型与子程序
抽象数据类型
抽象数据类型:属性明确地与特定实现分离的容器;、
应用层是特定问题中数据的视图。逻辑层是数据值和处理它们的操作的抽象视图。实现层明确表示出了存放数据项的结构;,并用程序设计语言对数据的操作进行编码;
栈是一种抽象复合结构,只能从一端访问栈中的元素。可以在第一个位置插入元素,也可以删除第一个元素;
栈没有长度属性,所以没有返回栈中项目个数的操作;
队列也是种抽象结构,队列中的项目从一端入,从另一端出;
列表有三个属性特征:项目是同构的,项目是线性的,列表是变长的;
根不是任何节点的子女;
如果一个节点没有子女,则这个节点叫作树叶;
二叉树:具有唯一起始节点的抽象复合结构,其中每个节点可以有两个子女节点,根节点和每个节点之间都有且只有一条路径;
如果一个节点是另一个节点的父母或者是另一个节点先辈的父母,那么前者是后者的先辈,根节点是树中其他所有节点的先辈;
二叉检索树中的节点可以具有0个,1个或两个子女;
任何节点的值都要大于它的左子树中的所有节点的值,并且要小于它的右子树中的所有节点的值;
null是一个特殊值,说明指针指向空值。因此,如果一个指针是null,那么这个子树就是空的;
如果在搜索路径中没有找到要找的项目,那么最后达到的就是这个项目应该在的位置;
一个空树有0个节点,任意一个树的节点是1加上左子树中的节点个数和右子树中的节点的个数;
栈返回的元素是在其中停留时间最少的元素,队列返回的是在其中停留时间最长的元素;
深度优先搜索,广度优先搜索和单源最短路搜索;
栈是一种存储顶点的合适的数据结构;
不能多次处理同一个顶点;
我们采用队列来保存元素的顺序可以按照它们出现的先后顺序;
信息的交流是通过参数列表的概念实现的;
传递参数的基本方式有两种,即通过值传递和通过引用传递;
要访问一个引用参数,子程序必须访问留言板上列出的地址中的内容。要访问一个值参,子程序只需要访问留言板自身的内容即可;
第九章 面向对象设计与高级程序设计语言
面向对象方法
在面向对象的思想中,数据和处理数据的算法绑定在一起;
类描述的是类中的对象表现出的属性和行为,特定的对象只是类的一个实例;
CRC卡就是用来记录责任算法阶段的类信息的工具;
四个阶段:头脑风暴 过滤 场景 责任算法 总结;
建议用波浪线标出名词,用下划线标出动词;
在自顶向下设计中,动词是重点;在面向对象设计中,名词是重点;
当一个类达到CRC阶段,类名以大写字母开头;
翻译过程
用汇编语言编写的程序要输入汇编器;
翻译用高级程序设计语言编写的程序的程序叫作编译器;
编译器是一种程序,要编译一个程序,就必须具有这个编译器在特定机器上的机器码版本;
解释器在翻译过语句之后会立即执行这个语句;
翻译器和模拟器都接受用高级语言编写的程序作为输入。翻译器只用适合的机器语言生成等价的程序,这个程序再单独运行。而模拟器则直接执行输入的的程序;
第二代高级语言可以分为两种:一种是要编译的,一种是要解释的;
Java编译器输出的程序将被解释,而不是直接被执行。Java程序总是被翻译成字节码;
程序设计语言范型
命令式范型具有顺序执行指令的特征,变量的使用代表了内存地址,而使用赋值语句则改变这些变量的值;
在面向过程的范型中,数据被认为是被动并且被程序所操控的。在面向对象的范型中,数据对象是活跃的;
声明式范型是一个描述结果的模型,但是完成结果的过程则不被描述;
Scheme是解释型语言,因此结果在声明后立即显示;
为了避免使用“=”和“==”在不同语言中代表相等的混淆。我们在算法中用“相等”而不是两者中的任意一种符号;
我们将要探讨的的语言中,C++,Java,VB.NET是强类型的语言,而Python则不是;
计算机能够执行一条指令,是因为这条指令的地址被载入了程序计数器;
Pep/9的Stop指令是一个所有位为0的字节;
应用于整数的操作是标准的算术运算符和关系运算符;
表示ASCII字符集中的字符需要一个字节,表示Unicode字符集中的字符则需要两个字节;
整数,实数,字符和布尔型称为简单数据类型或原子数据类型,因为每个值都是独立的,不能再分割;
使用单引号圈起字符,用双引号圈起字符串;
C++、Java、Python和VB.NET是区分大小写的;
变量出现在输入语句中的顺序必须与值出现在输入流中的数据一样;
在非强类型语言中,输入的格式决定了类型;

浙公网安备 33010602011771号