2020-2021-1学期 20202427《网络空间安全专业导论》第三周学习总结

2020-2021-1学期 20202427《网络空间安全专业导论》第三周学习总结

一.低级程序设计语言与伪代码

1.计算机操作

包括可编程的,存储,检索,处理。

2.机器语言

由计算机直接使用的二进制编码指令构成的语言

①Pep/9:一台虚拟机

虚拟机:为了模拟真实机器的重要特征而设计的假想机器

(1)Pep/9的基本特性

PEP/9的内存单元由65536字节的存储空间构成。这些字节从0到65536(十进制)进行编号。

寄存器是中央处理器中算术/逻辑单元的一小块存储区域,它用来存储特殊的数据和中间值。Pep/9由七个寄存器,但在学习内容中针对三个进行讨论:

  • 程序寄存器:其中包含下一条即将被执行的指令的地址
  • 指令寄存器:其中包含正在被执行的指令的一个副本
  • 累加器:用来存储数据和运算的结果

(2)指令格式

一条指令由两部分组成,即8位的指令说明符和(可选的)16位操作数说明符。

  • 指令说明符(指令的第一个字节)说明了要执行什么操作(比如把一个数(操作数)加到一个已经存储在寄存器中的值上)和如何解释操作数的位置。
  • 操作指示符(指令的第二和第三个字节)存放的是操作数本身或者操作数的地址。注:有些指令没有操作指示符。

(3)一些示例指令
操作码 指令的意义
0000 停止执行
1100 将字载入寄存器A中
1101 将字节载入寄存器A中
1110 存储寄存器A中的字
1111 存储寄存器A中的字节
0110 将操作数加到寄存器A中
0111 从寄存器A减操作数

②Pep/9的输入/输出

该虚拟机遵循的设计原则是内存映射输入/输出,这种方式将输入和输出设备与主存中特定的、固定的地址联系起来。在虚拟机中,输入设备在地址FC15,输出设备在地址FC16.

3.程序实例

程序:在屏幕上显示“Hi“。这个程序有5条机器语言指令:2条用于载入,2条用于存储,1条用于停止程序运行。

使用二进制和十六进制些的程序语句

对于每一个二进制指令,第一行展示了8位指令说明符,第二行展示了16位操作数说明符。

①Pep/9模拟器

在Pep/模拟器中,通过选中”构建“>“装入“菜单选项来装入程序。再将程序装入内存中后,可以通过”构建“>”执行“菜单选项运行程序

②另一个机器语言实例

4.汇编语言

  • 汇编语言:一种低级语言,用助记码表示特定计算机的机器语言指令
  • 汇编器:把汇编语言程序翻译成机器代码的程序

①Pep/9汇编语言

在Pep/9汇编语言中,操作数用0x和十六进制表示,接下来是逗号,最后是寻址模式(由字母i(立即寻址)或d(直接寻址)说明)

除了常规的指令,汇编语言编程还支持汇编器指令,这些指令都是汇编器本身使用的指令,有时它们也被称作伪操作。

汇编器指令:翻译程序使用的指令

注释:为程序读者提供的解释性文字

②数字数据,分支,标签

分支:指出执行下一条指令的指令


标签:对内存位置起的名字,可以将这个名字当作操作数

5.表达算法

  • 算法:解决方案的的计划或概要,或解决问题的逻辑步骤顺序
  • 伪代码:一种表达算法的语言

①伪代码的功能

  1. 变量
  2. 赋值
  3. 输入/输出
  4. 选择
  5. 重复

布尔表达式:评价为真或假的表达式

伪代码语句

②执行伪代码算法

在之前的学习中,有一个算法可以把十进制数字系统转化为其他进制数字的算法。用这个算法把十进制数93转换成8进制数

除法 余数 答案
93/8 11 5 5
11/8 1 3 35
1/8 0 1 135

③写伪代码运算

桌面检查:在纸上走查整个设计

6.测试

  • 测试计划:一个文档,说明了要全面测试程序需要运行的次数以及运行程序使用的数据。
  • 代码覆盖(明箱)测试法:通过执行代码中的所有语句测试程序或子程序的测试方法
  • 数据覆盖(暗箱)测试法:把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法
  • 测试计划实现:用测试计划中规定的测试用例验证程序是否输出了预期的结果

二.问题求解与算法设计

1.如何解决问题

  1. 你必须理解问题
  2. 找到数据和未知量之间的联系。如果找不到直接的联系,则可能需要考虑辅助问题。最终应该得到解决方案。
  3. 执行方案
  4. 分析得到的解决方案

①提出问题

  • 对这个问题我了解多少?
  • 解决方案是什么样的?
  • 存在什么特例?
  • 我如何直到已经找到解决方案了?

②寻找熟悉的情况

③分治法

把一个大问题划分成几个能解决的小单元

④算法

算法:在有限的时间内用有限的数据解决问题或子问题的明确指令集合

⑤计算机问题求解过程

  1. 分析和说明阶段
  2. 算法开发阶段
  3. 实现阶段
  4. 维护阶段

⑥方法总结

  1. 分析问题
  2. 列出主要任务
  3. 编写其余模块
  4. 根据需要进行重组和改写

⑦测试算法

2.有简单变量的算法

①带有选择的算法

if语句

②带有循环的算法

  1. 计数控制循环
  2. 事件控制循环。 嵌套结构:控制结构嵌入另一个控制结构的结构,又称嵌套逻辑。
  3. 平方根

抽象步骤:细节仍未明确的算法步骤

具体步骤:细节完全明确的算法步骤

3.复杂变量

①数组

同构项目的有名集合,可以通过单个项目在集合中的位置访问它们。项目在集合中的位置叫做索引

②记录

异构项目于的有名集合,可以通过名字单独访问其中的项目。所谓异构,指集合中的元素可以不必相同

4.搜索算法

①顺序搜索

依次查找每个元素并将其与我们需要搜索的元素进行比较。

②有序数组中的顺序搜索

③二分检索

在有序列表中查找项目的操作,通过比较操作排除了大部分检索范围。

5.排序

选择排序

冒泡排序

插入排序

6.递归算法

递归:算法调用它本身的能力

①子程序语句

子程序有两种形式:

  1. 不仅执行任务,还返回给调用单元一个值(值返回子程序)
  2. 用作表达式,返回的值被用来评估表达式

②递归阶乘

阶乘:N!=N*(N-1)!

③递归二分检索

④快速排序


7.几个重要思想

①信息隐蔽

隐蔽的模块的细节以控制对这些细节的访问的做法

②抽象

复杂系统的一种模型,只包括对观察者来说必需的细节

  • 数据抽象:把数据的逻辑视图和它的实现分离开
  • 过程抽象:把动作的逻辑视图和它的实现分离开
  • 控制抽象:把控制结构的逻辑视图和它的实现分离开
  • 控制结构:用于改变正常的顺序控制流的语句

③事物命名

在编写算法时,我们使用速记短语表示要处理的任务和信息,也就是说,给数据和过程一个名字,这些名字叫做标识符。

④测试

  • 白盒测试:基于代码本身
  • 黑盒测试:基于测试所有可能的输入值
posted @ 2020-10-25 21:42  20202427张启辰  阅读(113)  评论(0编辑  收藏  举报