2021-2022——1学期20212304《网络空间安全导论》第三周学习总结
《计算机科学概论》第6,7章学习总结
第六章:低级程序设计语言和伪代码
机器语言是最低等级的编程语言,它被内置在机器中
6.1计算机操作
控制单元执行的指令能把数据存储到机器的内存中,在机器内存中检索数据
在算数/逻辑单元以某种方式处理(:涉及在数值上执行运算和逻辑操作)数据
6.2机器语言
机器语言:由计算机直接使用的二进制编码指令构成的语言。
每种处理器都有自己专用的机器指令集合。
CPU的电子器件本来就能够识别专用命令的二进制表示,故计算机必须参考的命令的真实清单并不存在。
虚拟机:为了模拟真实机器的重要特征而设计的假想机器。
Rep/9
1.基本特性
内存单元由65536个字节的存储空间构成,由40条机器语言指令。
有七个寄存器,重点研究其中三个

进制数中可用的位数决定了我们可以使用的内存的大小
2.指令格式
指令说明符:说明了要执行什么操作和如何解释操作数的位值。(指令的第一个字节)
操作说明符:存放的是操作数本身或者操作数的地址。(指令的第二和第三个字节)
操作代码(操作码):其长度4到8位不等。
000寻址模式-立即寻址:指令的操作数说明符中存储的就是操作数。
001寻址模式-直接寻址:指令的操作数说明符中存储的是操作数所在的内存地址名称。
一元指令:没有操作数(要处理的数据)的指令,长度为1字节。
3.一些示例指令
- 0000停止执行
- 1100将字载入寄存器A中
直接寻址时,当一个地址用来指定一个操作数是,该字的最左边的一字节就是给定的地址 - 1101将字节载入寄存器A中——只载入1字节
立即寻址模式:操作说明符中只有第二个字节会载入寄存器A中;
直接寻址模式:只会载入内存位值的1字节而不是2字节。 - 1110存储寄存器A中的字
在存储操作码中使用立即寻址模式是非法的,因为我们不能将寄存器的内容存储到操作说明符中 - 1111存储寄存器A的字节
不支持立即寻址模式,只有寄存器A的第二个字节会存储在操作数说明符给出的地址中,累加器的前8位会被忽略 - 0110将操作数加到寄存器A中
- 1000从寄存器A减操作数
对于输入和输出(I/O)该虚拟机遵循内存映射输入/输出设计原则,这种方式将输入和输出设备与主存中特定的、固定的地址联系起来。
Pep/9使用ASCII字符集
6.3汇编语言
汇编语言:一种低级语言,用助记码表示特定计算机的机器语言指令
汇编器:把汇编语言程序翻译成机器代码的程序
因为每种类型的计算机都有自己的机器语言,所以有多少种机器,就有多少种汇编语言和翻译程序。
在Pep/9汇编语言中操作数用0x和十六进制表示,接下来是逗号,最后是寻址模式(i立即d直接)
汇编器指令:翻译程序使用的指令。有时也被称为伪操作
注释:为程序读者提供的解释性文字。
汇编语言的源代码在可以执行前必须被翻译成机器码(或目标代码)
标签:对内存位置起的名字可以将这个名字当作操作数。
6.4表达算法
算法:解决方案的计划或概要,或解决问题的逻辑步骤顺序。
伪代码:一种表达算法的语言。
布尔表达式:评价为真或假的表达式。
伪代码语句:
桌面检查:在纸上走查整个设计。
6.5测试
测试计划:一个说明了要全面测试程序需要运行的次数以及运行程序使用的数据的文档。其中需要列出选择这套数据和数据值的原因以及每套数据预期的输出是什么。
测试用例:每套输入的数据值。
代码覆盖(明箱)测试法:通过执行代码中的所有语句测试程序或子程序的测试方法。测试者能够看到代码。
数据覆盖(暗箱)测试法:把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法。其设计的测试用例会确保包括允许使用的数据的边界值。
测试计划实现:用测试计划中规定的测试用例验证程序是否输出了预测结果。
第七章:问题求解与算法设计
7.1如何解决问题
算法:在有限的时间内用有限的数据解决问题或子问题的明确指令合集。

自顶向下的方法可分解为四个主要步骤:
1.分析问题 2.列出主要任务 3.编写其余模块 4.根据需要进行重组和改写
7.2有简单变量的算法
简单变量:不能被分开的变量,是存储在一个地方的一个值。
- 两种基本的循环:
1.计数控制循环:可以指定过程重复的次数,该机制是简单记录过程重复的次数并且在重复再次开始前检测循环是否已经结束。
使用一个叫作循环控制变量的特殊变量,有三个不同的部分:
(1)初始化:循环控制变量初始化为某个初始值。
(2)测试:循环控制变量是否已经达到特定值。
(3)增量:循环控制变量以1递增。
循环控制变量的初始值和布尔表达式中的关系运算共同确定了循环执行的次数。
while循环被称为前测试循环
2.事件控制循环:循环中重复的次数是由循环体自身内发生的事件控制的循环。
当使用while语句来实现事件控制循环时,这一过程仍分为三部分:
(1)事件必须初始化。(2)事件必须被测试。(3)事件必须被更新。
嵌套结构:控制结构嵌入另一个控制结构的结构,又称为嵌套逻辑
抽象步骤:细节仍未明确的算法步骤。
具体步骤:细节完全明确的算法步骤。
7.3复杂变量
字符串:表示写入一条消息所使用的引用中的一串字母。
数组:同构项目的有名集合,可以通过单个项目在集合中的位值访问它们。
索引:项目在集合中的位置。
与数组有关的算法分为三类:
(1)搜索:搜索数组中的项,一次寻找一个特定的值。
(2)排序:按顺序将元素放入数组中。项是数字则以数字顺序排序,是字符或字符串将以字母顺序排序。
(3)处理:一种捕捉短语,包含了对数组中的项所做的所有其他计算。
记录:异构项目的有名集合,可以通过名字单独访问其中的项目。异构指集合中的元素可以不必相同。
7.4搜索算法
顺序搜索:依次查找每一个元素并与目标元素比较,看是否匹配。
只要指数小于10且未找到匹配项时,循环会重复。
二分检索:在有序列表中查找项目的操作,通过比较操作排除大部分检索范围。
7.5排序
选择排序:(1)确定数组是否已经排好序了(2)找到最小元素的索引(3)互换两者的位置 ————不能确定数组是否是有序的,每次迭代后,一个元素被放置到它的永久位置。
冒泡排序:从数组的最后一个元素开始,比较相邻元素对,若下面的元素小于上面的,就交换这两个元素的位置。
插入排序:要插入的元素比数组中这个位置的元素小,那么就将新元素插入这个位置。 ————每次迭代后一个元素将被放在相对于其他元素来说适当的位置上。
7.6递归算法
递归:算法调用它本身的能力,是另一种重复(循环)的控制结构。
递归算法:只可以在子程序自身中出现子程序名的算法。
- 每个递归算法至少有两种情况:
(1)基本情况:答案已知的情况。
(2)一般情况:调用自身来解决问题的更小版本的解决方案。 - 所有递归解决方案的第一步都是确定尺寸系统:
若问题涉及的是数值,尺寸系统可能就是数值本身;若问题涉及结构,尺寸系统可能就是结构的尺寸。 - 使用递归算法时,每次执行算法提供给算法的数据值必须是不同的。
调用单元:命名代码出现的地方。
尺寸系数:要计算阶乘的数。
- 子程序的两种形式:
(1)只执行特定任务的命名代码。该子程序在调用单元中用作语句。
(2)不仅执行任务,还返回给调用单元一个值。该子程序用作表达式,返回的值用来评估表达式。
每次Factorical调用后给出的数据称为参数。若参数为负,子程序将不断地调用自身,直到运行时间支持系统耗尽了内存为止,这种情况叫作无限递归。 - 递归算法必须从非递归算法中调用。
- 快速排序的基本策略为分治法。
7.7几个重要思想
信息隐蔽:隐蔽模块的细节以控制对这些细节的访问的做法。
抽象:复杂系统的一种模型,只包括对观察者来说必需的细节。是隐藏细节的结果。
数据抽象:把数据的逻辑视图和它的实现分离开。
过程抽象:把动作的逻辑视图和它的实现分离开。
控制抽象:把控制结构的逻辑视图和它的实现分离开。
控制结构:用于改变正常的顺序控制流的语句。
posted on 2021-10-17 20:26 20212304杨璞华 阅读(119) 评论(0) 收藏 举报
浙公网安备 33010602011771号