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

第六章 低级程序设计语言与伪代码


重点:从“什么是计算机系统”变成“如何使用计算机系统

计算机操作

计算机是能够存储、检索和处理数据可编程电子设备。
在机器层,处理涉及在数据值上执行算术和逻辑操作

定义中的操作字包括:

可编程的

存储

检索

处理

机器语言

机器语言:由计算机直接使用的二进制编码指令构成的语言。
在机器语言中,每一条指令都以二进制数字串进行表示。

Pep/9:一台虚拟机

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

Pep/9的基本特征

它的内存单元由65536字节的存储空间构成。有七个寄存器。有40条机器语言指令。

  • 程序计数器(PC),其中包含下一条即将被执行的指令的地址。
  • 指令寄存器(IR),其中包含正在被执行的指令的一个副本。
  • 累加器(A),用来存储数据和运算的结果。
指令格式

一条指令由两部分组成,即8位的指令说明符和(可选的)16位的操作数说明符。
指令说明符说明了要执行什么操作和如何解释操作数的位置。
操作数说明符存放的是操作数本身或者操作数的地址。

一些示例指令

0000停止执行
1100将字载入寄存器A中
1101将字节载入寄存器A中
1110存储寄存器A中的字
1111存储寄存器A的字节
0110将操作数加到寄存器A中
1000从寄存器A减操作数

Pep/9的输入/输出

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

一个程序实例

Pep/9模拟器

当模拟器执行程序时,它像真实真是机器一样每次只运行一条程序命令,并遵守

  1. 从由程序计数器确定的存储器位置上获取指令
  2. 解码指令,更新程序计数器
  3. 获得操作数(如果需要)
  4. 执行指令

另一个机器语言实例

汇编语言

汇编语言:一种低级语言,用助记码表示特定计算机的机器语言指令。
汇编语言给每条机器语言指令分配了一个助记指令码,程序员可以用这些指令码代替二进制和十六进制数字,使得效率提高,错误减少。
汇编器:把汇编语言程序翻译成机器代码的程序。

Pep/9汇编语言

汇编器指令:翻译程序使用的指令
注释:为程序读者提供的解释性文字
汇编语言的源代码在可以执行前必须被翻译成机器码

数字数据、分支、标签

使用Pep/9汇编语言,可以使用额外的用来展示输入和输出(I/O)数字和整个字符串的指令。这些指令实际上是由操作系统实现的。
分支:指出执行下一条指令的指令。
程序在汇编命令和指令中使用了标签,这些标签被放在每一行的开头,之后跟着一个冒号。一旦被标上标签,该位置的数据或指令就可以通过标签进行引用,而不是引用它具体的内存地址。这也就使得程序更容易读。
标签:对内存位置起的名字,可以将这个名字当作操作数。

汇编语言中的循环

表达算法

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

伪代码的功能

  1. 变量
  2. 赋值
  3. 输入/输出
  4. 选择
  5. 重复 布尔表达式:评价为真或假的表达式。

执行伪代码算法

写伪代码算法

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

测试

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



第七章 问题求解与算法设计

如何解决问题

提出问题

寻找熟悉的情况

分治法

算法

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

计算机问题求解的过程

分析和说明阶段
算法开发阶段
实现阶段
维护阶段

方法总结

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

测试算法

有简单变量的算法

带有选择的算法

带有循环的算法

1.计数循环算法
2.事件控制循环
3.平方根

抽象步骤:细节仍未明确的算法步骤.
具体步骤:细节完全明确的算法步骤。

复杂变量

描述两种把数据收集到一起、给这个集合命名并访问其中单独的值或者作为一个集合来访问它的方法。

数组

数组是同构项目的有名集合,可以通过单个项目在集合中的位置访问它们。项目在集合中的位置叫做索引。
与数组相关的算法分为三类:搜索、排序和处理。

记录

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

搜索算法

顺序搜索

有序数组中的顺序搜索

二分检索

二分检索算法假设要检索的数组是有序的,其中每次比较操作可以找到要找的项目或把数组减少一半。
二分检索:在有序列表中查找项目的操作,通过比较操作排除大部分检索范围。

排序

选择排序

简单但是有缺陷,它需要两个完整列表(数组)的空间。

冒泡排序

从数组的最后一个元素开始,比较相邻元素对,如果下面的元素小于上面的元素,就交换这两个元素的位置。

插入排序

选择排序的每次迭代后,一个元素被放置到它的永久位置。而插入排序的每次迭代后,一个元素将被放在相对于其他元素来说适当的位置上。

递归算法

算法自己用自己,叫递归算法。
递归:算法调用它本身的能力。

子程序语句

我们可以给一段代码一个名称,然后程序另一部分的一个语句使用这个名称。遇到这个名称时,这个进程的其他部分将会终止,等待这个命名代码被执行。命名代码出现的地方被称为调用单元。
子程序的两种形式:1.只执行特定任务的命名代码2.不仅执行任务,还返回给调用单元一个值。

递归阶乘

N!=N * (N-1)!
0的阶乘是1。尺寸系数就是要计算阶乘的数。基本情况是

递归二分检索

快速排序

几个重要思想

信息隐蔽

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

抽象

抽象:复杂系统的一种模型,只包括对观察者来说必需的细节。
数据抽象:把数据的逻辑视图和它的现实分离开。
过程抽象:把动作的逻辑视图和它的现实分离开。
控制抽象:把控制结构的逻辑视图和它的现实分离开。
控制结构:用于改变正常的顺序控制流的语句。

事物命名

测试

posted @ 2020-10-29 16:48  20202420hcq  阅读(52)  评论(0编辑  收藏  举报