2021-2022第一学期20212303《网络空间安全专业导论》第三周学习总结#
程序设计层
第六章 低级程序设计语言与伪代码
6.1 计算机操作
计算机是能够储存、检索、处理数据的可编程电子设备。
可编程:操作数据和指令数据都储存在机器中,改变计算机对数据的处理只需要改变指令
6.2机器语言
机器语言:由计算机直接使用二进制编码指令构成的语言
劣势:可读性差 可移植性差 可操作性差 难以纠错
6.2.1Pep/9 一台虚拟机
虚拟机:为了模拟真实机器重要特征而设计的假想机器
Pep/9的基本特性
1.字长:2byte
2.内存单元:65536byte
3.程序计数器:包含下一条被执行的指令的地址
4.指令寄存器:包含正在执行的一个指令的一个副本
5.累加器:用来储存数据和运算的结果
指令格式
指令格式由一字节的指令说明符和两字节的操作数说明符构成
指令说明符指明了进行什么操作。
指令说明符前四位操作代码,第五位寄存器指示符,后三位寻址模式
寻址模式
立即寻址:操作数说明符中就包含了要处理的数据
直接寻址:操作数说明符中包括了要处理的数据的地址
6.3一个程序实例
6.4汇编语言
汇编语言:
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的不同平台之间不可直接移植。
汇编器:
汇编器(Assembler)是将汇编语言翻译为机器语言的程序。一般而言,汇编生成的是目标代码,需要经链接器(Linker)生成可执行代码才可以执行。
汇编器指令:
汇编指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
注释
为读者提供解释性的文字
分支
指出执行下一条指令的指令
6.5表达算法
伪代码:

伪代码是一种语言,可以让我们以更清晰的形式表达算法。它是半角式化、不标准的语言。可以将整个算法运行过程的结构用接近自然语言的形式(可以使用任何一种你熟悉的文字,关键是把程序的意思表达出来)描述出来。
测试
代码覆盖测试法
明箱测试法,确保每条语句都能被执行到
数据覆盖测试法
确保允许使用的数据边界值,又称为暗箱测试法
小结
计算机能够存储、检索和处理数据。用户可以把数据输人计算机,计算机能够显示数据,使用户看到它们。在最底层抽象中,给机器的指令直接反映了这种操作。
计算机的机器语言是一套机器的硬件能够识别并执行的指令。机器语言程序是一系列用二进制编写的指令。Pep/9 是一台具有寄存器 A 和两部分指令的虚拟机,一部分指令说明执行的动作,另一部分指令要使用的数据(如果有)的位置。使用 Pep/9 指令集编写的程可以使用模拟器运行,模拟器是一个像 Pep/9 计算机的程序。
Pep/9 汇编语言是一种使用**助记码**而不是二进制数表示的指令。用汇编语言编写的程!将被翻译成等价的机器语言,然后用 Pep/9 模拟器执行。
** 伪代码**是人们为了表示算法而使用的一种便捷形式的语言,允许用户命名变量(存放的空间)、把数值输人变量以及输出存储在变量中的值。使用伪代码还可以描述重复执行选择的动作的算法。在算法设计中,问问题和推迟细节是用到的两种解决问题的策略
与算法一样,程序也需要测试。代码覆盖测试法通过仔细检查程序的代码来决定程序输入。数据覆盖测试法则通过考虑所有可能的输入值来决定程序的输入。
第七章 问题求解与算法设计
7.1如何解决问题![]()
计算机问题求解过程
1.分析说明阶段
2.算法开发阶段
3.实现阶段
4.维护阶段
算法是在有限的时间用有限的数据解决问题或子问题的明确指令集合,在用编程语言编码之前就需要写好算法
7.2带有简单变量的算法
IF语句 带有选择的算法
if可以有多个,到达第二个if语句的唯一条件是第一个if语句是不真实的,以此类推
带有循环的算法
计数控制
可以指定重复的次数
while循环被称之为前测试循环,在循环开始前就测试了,如果条件不符则不进入循环
事件控制循环
由循环自身内发生的事件控制
7.3复杂变量
7.3.1数组
数组是同构项目的有名集合,可以通过单个项目在集合中的位置访问它们
7.3.2记录
记录是异构项目的有名集合,可以通过名字单独访问其中的项目
7.4搜索算法
顺序搜索
对于任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比较,直到找出与给定关键字相同的元素,或者将序列中的元素与其都比较完为止。
二分检索
二分检索又称折半检索,优点是比较次数少,检索速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半检索方法适用于不经常变动而检索频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与检索关键字比较,如果两者相等,则检索成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于检索关键字,则进一步检索前一子表,否则进一步检索后一子表。重复以上过程,直到找到满足条件的记录,使检索成功,或直到子表不存在为止,此时检索不成功。
7.5排序
7.5.1选择排序
通俗理解,在未排序的数列中找到最小值或最大值放到数列的首尾,依次进行。
7.5.2冒泡排序
通俗理解,依次比较相邻的两个数,正序不动,倒序换位、
7.5.3插入排序
每次从未排序区间找出一个数插入已排序区间
7.6递归算法
递归就是算法调用它本身的能力
小结
循环有两种,分为计数控制循环与事件控制循环。计数控制循环会执行预定次数的循环,而事件控制循环则是执行到循环中事件的改变。
数据有两种形式:不可分割的和复合的。数组是一种同构的结构,给出了一个有名称的元素的集合和允许用户访问个别元素在结构中的位置。
搜拿是指在数组中寻找一个特定值的行为。在这一章中,我们介绍了无序数组的线性搜索、有序数组的线性搜索和有序数组中的二分检索。排序是指将数组中的元素按一定的顺序排列。在排序算法中有四种常见的算法,分别是选择排序、冒泡排序、插入排序和快速序。
递归算法是指可以在子程序自身中出现子程序名的算法。阶乘和二分检索实际上就是递归算法。


浙公网安备 33010602011771号