20202418《网络空间安全专业导论》第三周学习总结
第6章 低级程序设计语言与伪代码
一.计算机操作
计算机:计算机是一种能够存储,检索和处理数据的可编程电子设备。
二.机器语言
(一)机器语言:由计算机直接使用的二进制编码指令构成的语言。
(二)Pep/9 一台虚拟机
1.虚拟机:为了模拟真实机器的重要特征而设计的假想机器。
2.pep/9的基本特征
1.内存单元
由65536字节的存储空间构成,由65535进行编号,字长为2字节(16位)
2.算数/逻辑单元
程序寄存器:其中包含下一条即将被执行的指令的地址。
指令寄存器:其中包含正在被执行的指令的一个副本。
累加器:用来存储数据和计算的结果。
可用的位数直接决定了我们可用的内存大小。
3.指令格式
一般由两部分组成:指令说明符(1字节)和操作数说明符(2字符)。
直接寻址:存储的是操作数所处的地址。
立即寻址:操作数说明符中存储的就是操作数。
4.一些示例指令
1.0000停止执行
2.1100将字载入寄存器A中
3.1101将字节载入寄存器A中
4.1110存储寄存器A中的字
5.1111存储寄存器A的字节
6.0110将操作数加到寄存器A中
7.1000从寄存器A减操作数
5.Pep/9的输入和输出
三.程序实例
(一)输出Hi
(二)Pep/9模拟器
为了运行Pep/9机器语言程序,我们将16进制的代码输入到目标代码标签的窗口中以zz结束程序。
在执行之前,需要载入存储器,即“装入程序”。构建(build)后装入(load)。
(三)逆序打印
四.汇编语言
汇编语言:一种低级语言,用助记码表示特定计算机的机器语言指令。
汇编器:把汇编语言程序编译成机器代码的程序。
(一)Pep/9汇编语言
在此汇编语言中,操作数用0X和十六进制表示,接下来是逗号,最后是寻址模式,由i和d表示。
常见的助记码
汇编器指令:翻译程序使用的指令。
注释:为程序读者提供的解释性文字。
(二)数字数据,分支,标签
常见的助记码
!插入图片!
分支:指出执行下一条的指令的指令。
标签:对内存位置起的名字,可以将这个名字当作操作数。
(三)汇编语言中的循环
如果想实现多值求和,可使用AddNums程序实现
五.表达算法
算法:解决方案的计划或概要,或解决问题的逻辑步骤顺序。
伪代码:一种表达算法的语言。
(一)伪代码的功能
1.变量
出现在伪代码算法中的名字,引用的是内存中存储值的位置。这些名字要能反映出它存放的值在算法中的角色。
2.赋值
3.输入/输出
4.选择
5.重复
布尔表达式:评价为真或假的表达式。
(二)执行伪代码算法
(三)写伪代码算法
桌面检查:在纸上走查整个设计
(四)翻译伪代码算法
六.测试
我们的测试方法很简单,即执行程序,看他们是否生成了预期的结果.
测试计划:
代码覆盖(明箱)测试法:
数据覆盖(暗箱)测试法:
测试计划实现:
第七章 问题求解与算法设计
一.问题求解
{{uploading-image-147210.png(uploading...)}}
(一).如何解决问题
1.提出问题
1.对这个问题我了解多少
2.解决方案是什么样的
3.存在什么案例
4.我如何知道已经找到解决方案了
2.寻找熟悉的情况
3.分治法
4.算法
算法:在有限的时间内用有限的数据解决问题或子问题的明确指令集合.
5.计算机问题求解过程
包括四个阶段:分析和说明阶段,算法开发阶段,实现阶段和维护阶段.
{{uploading-image-806943.png(uploading...)}}
6.总结
1.分析问题
2.列出主要任务
3.编写其余的模块
4.根据需要进行重组和改写
7.测试算法
二.算法设计
(一)带有选择的算法
IF,到达第二个if语句的唯一方法是第一个if是不真实的.
(二)带有循环的算法
1.技术控制循环
有三个部分,有一个使用的特殊变量叫做循环控制变量
1.第一部分是初始化:循环控制变量初始化为某个初始值
2.第二部分是测试:循环控制变量是否已经达到特定值?
3.第三部分是增量:循环控制变量以1递增.
2.事件控制循环
循环中重复的次数是由循环体自身内发生的事件控制的循环被称为事件控制循环
当使用while语句来实现事件控制循环时,也可被分成三部分
1.初始化
2.被测试
3.更新
嵌套结构:控制结构嵌入另一个控制结构的结构,又称为嵌套逻辑.
3.平方根
抽象步骤:细节仍未明确的算法步骤
具体步骤:细节完全明确的算法步骤
(三)复杂变量
1.数组
2.记录
(四)搜索算法
1.顺序搜索
2.有序数组中的顺序搜索
3.二分搜索
二分搜索:在有序列表中查找项目的操作,通过比较操作排除大部分的检查范围.
(五)排序
1.选择排序
2.冒泡排序
3.插入排序
(六)递归算法
1.子程序语句
2.递归阶乘
3.递归二分检索
4.快速排序
(七)几个重要思想
1.信息屏蔽
信息屏蔽:屏蔽模块的细节以控制对这些细节的访问的做法.
2.抽象
抽象:复杂系统的一种模型,只包括对观察者来说必须的细节.
数据抽象:把数据的逻辑视图和它的实现分离开
过程抽象:把动作的逻辑视图和它的实现分离开
控制抽象:把控制结构的逻辑视图和它的实现分离开
控制结构:用于改变正常的顺序控制流的语句
3.事物命名
在编写算法时,我们使用速记短语来表示要处理的任务和信息,给数据和过程取一个名字,称为标识符.
4.测试
测试在编程的每个阶段都十分重要,有两种基本的测试分类:白盒测试和黑盒测试
白盒测试:基于代码本身
黑盒测试:基于所有可能的输入值
小结:我感觉这两章的内容真的好难好难,尤其是第七章基本上没有怎么看懂,许多概念基本上不清晰,学好计算机还有好长一段路要走,任重而道远.