2021-2022-1学期20212401《网络空间安全导论》第三周学习总结
作者:互联网
第六章
1.本章主要介绍了低级程序设计语言与伪代码,体现了早期程序员的编程面貌
2.计算机真正执行的程序设计语言是机器语言编写的指令,每种处理器都有自己专用的机器指令集合。处理器的设计者为每个指令分配一个二进制代码来表示它们。机器语言是计算机实际完成任务的方式。
3.Pep/9是仅具备机器指令和汇编语言的虚拟机,适合初学者理解低级的程序设计语言。PEP/9有40条机器语言指令,其有64kb的内存,16位的累加器,16位的程序寄存器以及24位的指令寄存器。pep/9的指令由两部分构成,8位的指令说明符和16位的操作数说明符。指令说明符前4位给出了操作代码,第五位给出了应用哪个寄存器,后三位给出了寻址模式。立即寻址表明操作数说明符中的数据就是要处理的数据,而直接寻址说明符表明操作数说明符中的数据是要处理数据的地址。
4.pep9的程序代码每个字节之间用空格隔开,以zz结束程序。在模拟器的CPU窗口还会展示各种寄存器的状态。pep9的输入输出采用内存映射输入输出原则,即将I/O设备与主存中特定的固定的地址联系起来,输入在FC15,输出在FC16
5.汇编语言采用助记码代替操作码,有多少种机器,就有多少种汇编语言和翻译程序。汇编指令包括助记码,以及操作数和寻址模式。操作数由十六位进制数字给出。此外汇编语言编程还允许使用汇编器指令,又叫伪操作。分号后头可以为程序撰写注释。
6.分支指令BR叫做无条件转移,使得程序计数器可以跳跃到程序的另一个位置,分支操作中断了程序的正常线性流。标签是对内存位置起的名字,可以将这个名字当成操作数。有点像高级语言中的变量名称。
7.汇编语言通过一个计数器实现循环,并用BREQ指令判断其是否离开循环,这与高级语言中对循环的处理很像。
8.解决方案的计划叫做算法,从一个文字叙述的问题变成代码对应关系有时并不明晰,伪代码可以帮助我们更清晰的表达算法。伪代码语句中的选择重复变量赋值等等已经很类似与高级程序设计语言。我们可以通过纸上走查的方式来检验代码
9.测试程序有两种方法,明箱测试法又叫代码覆盖测试法,会确保程序中的每条语句都能被执行到。数据覆盖测试法又叫暗箱测试法,他设计的测试用例会包括允许使用的数据的边界值。oj系统一般采用暗箱测试法。测试用例的质量尤为重要。
第七章
1.本章介绍了问题求解和算法设计部分,抽象上升了一个新台阶。
2.程序设计的实质是编写一个能够解决问题的程序。从方法论上讲,如何解决问题,首先要理解问题,明确数据和未知量;其次设计方案,调动已有的算法知识尝试去解决;然后执行方案,检查步骤;最后分析方案,检查得到的结果和参数,评估算法的正确性复杂度以及维护程序等等。以上想法可以归纳为自顶向下的方法。目前产业界面对巨大的工程量大多采用面向对象的设计思想
3.简单变量指的是不能被分开的变量。如选择算法,以及循环算法(包括计数控制循环和事件控制循环)。将控制结构嵌套进另一个控制结构称为嵌套结构
4.数组是同构项目的有名集合,记录是异构项目的有名集合。
5.搜索算法介绍了顺序搜素和二分算法,显然后者复杂度更加小,但是后者依赖于数组的有序性。
6.排序算法介绍了选择排序,选择排序从上往下遍历,交换当前项与它应该所处位置的项;冒泡算法从下往上遍历,比较相邻元素对。可以运用冒泡算法来验证这个数组是否有序。插入算法是从头新建的想法。选择排序的每次迭代后,一个元素被放到她的永久位置,而插入排序的每次迭代后,一个元素被放到相对与其他元素的合适位置上。
7.递归指在一个算法中使用他自己,是一种重复的控制结构。每个递归算法包括基本情况和一般情况,基本情况是答案已知的情况,一般情况是通过调用自身来解决问题的更小版本的的解决方案。不断地递归,从而解决的是原始问题越来越小的版本,当程序达到基本情况时,答案已知,递归停止。递归过程中对问题的不断简化体现了简而治之的算法思想。二分检索算法更像递归。
8.子程序是抽象的一种强有力工具,使程序员能够关注任务本身而非被细节困扰。
9.快速排序的想法是对两个小列表排序比对一个大列表排序更快更容易,这蕴含着分而治之的朴素道理。这种策略的基础其实也是递归。
10.程序设计的重要原则:永远不要重复造轮子。算法中的抽象步骤可能以及被你或其他人解决。
11.算法设计的几个重要思想:信息隐蔽,即在进行高层设计时只考虑与之相关的细节,而忽略底层的细节。抽象:抽象是复杂系统的一种模型,只包括对观察者来说必须的细节。如数据抽象,过程抽象,控制抽象等等。种种抽象都是将逻辑视图与他的实现分开。
12.我们运用标识符来给数据和过程一个名字。
学习心得:
本周学习了一些python内容和c的内容,感觉从语法上python要比c简单许多,更加高级一些。
此外感觉自己打代码的手速还是不够快,编写的程序太少,不够熟练。目前本周分给计算机的时间相对有些少,自己也在摸索更加合理的时间分配,希望能在下一周有较明显的改善。
下周学习计划:
1.认真完成老师布置的各项作业,包括各种选做作业和阅读作业。多上机实践
2.完成牛客网的130道oj题,C语言熟练度有较大的突破
3.完成算法竞赛导论一书,重点掌握学习c++与STL部分,能够实现一些简单的算法,了解c++的基本语法。
4.如能再有时间,多多练习python编程,提高python编程能力,动手实践一些项目,包括面向对象的内容。
标签:操作数,递归,20212401,代码,算法,说明符,指令,2022,网络空间 来源: https://www.cnblogs.com/wyc0905/p/15416634.html