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

2019-2020-1学期20192429《网络空间安全专业导论》

第六章 低级程序设计语言与伪代码
6.1 计算机操作

  • 计算机是能够存储、检索和处理数据的可编程电子设备。
  • 要改变计算机对数据的处理,只需要改变指令即可。
  • 存储、检索和处理是计算机能够对数据执行的动作。
    6.2 机器语言
  • 计算机真正执行的程序设计指令是用机器语言编写的指令,这些指令固定在计算机的硬盘中。
  • 机器语言(machine language):由计算机直接使用的二进制编码指令构成的语言。
    这些指令是处理器一**真正能够执行的指令
    问题:指令分配按照什么规则来分配二进制代码,具体是如何分配的?
  • 在机器语言中,处理过程中每一个微小的步骤都必须被明确地编码。
  • 目前几乎没有程序是用机器语言编写的,主要是因为编写这种程序太费时间
    Pep/8:一台虚拟机
  • 虚拟机(virtual computer(machine)):为了模拟真实机器地重要特征而设计的假想机器。
  • Pep/8反映的重要特性:
    1.Pep/8的内存单元由65536个字节的存储空间构成。这些字节从0到65535( 十进制)进行编号。
    2.Pep/8的字长是两字节,或者16比特。这样向算术/逻辑单元(ALU)流入的数据或从 算术/逻辑单元流出的数据在长度上就是16比特
    3.Pep/8有7个存储器
    累加器:用来保存操作的数据和结果的一种特殊的存储寄存器。

    问题:请老师详细讲解一下这几幅图表,并解释空格与进制代码的关系
  • 指令格式
  1. 一条指令由两部分组成,即8位的指令说明符和(可选的)16位的 操作数说明符。
  2. 指令说明符(指令的第一个字节)说明了要执行什么操作和如何解释操作数的位置。
  3. 操作说明符(指令的 第二和第三个字节 )存放的是操作数本身或者操作数的地址有些指令 没有操作数说明符
  • 立即寻址:如果寻址模式是000,那么指令的操作数说明符中存储的就是操作数。
  • 直接寻址:如果寻址模式是001,那么操作数说明符中存储的是操作数所在的内存地址名称。
  • 立即寻址和直接寻址模式之间差别十分重要,因为它决定了操作中涉及的数据存储或将要被存储的位置。

  • 立即寻址和直接寻址模式之间差别十分重要,因为它决定了操作中涉及的数据存储或将要被存储的位置。
  • 模式说明符说明了该字要载入的位置,其确定了指令的操作数部分(在指令的第二和第三字节)所存储的就是将要载入的值,或是将要载入的值的地址。
    6.3 一个程序实例
  • 我们必须用二进制构造操作说明符,因为它由4位操作码、1位寄存器说明符和3位寻址模式说明符构成。
  • 我们使用双引号来指一组字符,如“hello”,使用单引号指单个字符。
    6.3.1 手工模拟
    通过执行读取-执行周期的步骤模拟这个程序的执行。
    6.3.2 Pep/8 模拟程序
    要运行一个程序,需要逐字节地输入十六进制的代码,每个字节之间用空格隔开,以zz结束程序。

    装入程序(loader):软件用于读取机器语言并把它载入内存的部分。
    6.4 汇编语言
  • 汇编语言(assembly language):一种低级语言,用助记码表示特定计算机的机器语言指令。
  • 汇编器(assembler):把汇编语言程序翻译成机器代码的程序。
    6.4.1 Pep/8汇编语言
  • 在Pep/8汇编语言中,每个寄存器有一个操作码,操作数是十六进制的,由0x说明,寻址模式说明符由字母i或d说明。
  • Pep/8汇编语言提供了助记忆码DECI和DECO,它允许我们做十进制输入和输出。
    问题:助记码具体是什么呢?
    6.4.2 汇编器指令
  • 汇编器指令(assembler):翻译程序使用的指令。

    6.4.2 Hello程序的汇编语言版本
  • 注释(comment):为程序读者提供的解释性文字。
  • 汇编器的输入是一个用汇编语言编写的程序,输出是用机器代码编写的程序。
    6.4.5 具有分支的程序
  • 一个将程序计数器设为下一条被执行的指令地址的BR指令可以改变程序计数器。

    6.4.6 具有循环的程序
  • 伪代码:这是一种可以减少对分支和循环的情形进行文字解释的方式。
    6.5 表达算法
  • 算法(algorithm):解决方案的计划或概要,或解决问题的逻辑步骤顺序。
  • 伪代码(pseudocode):一种表达算法的语言。
    6.5.1 伪代码的功能
    ·虽然伪代码并没有特定的语法规则,但必须要表示变量、赋值、输入/输出、选择和重复的概念。
    -变量:出现在伪代码算法中的名字,引用的是内存中存储值的位置
    -赋值:如果有了变量,就要有把值放入变量的方法
    -输入/输出:大多数计算机程序只处理某种类型的数据,所以必须能够从外部世界向计算机中输入数据值,还要能把结果输出到屏幕上
    -选择:用选择结构可以选择执行或跳过某项操作
    -重复:用重复结构可以重复执行命令
    ·布尔表达式(boolean expression):评价为真或假的表达式。

    6.5.2 执行伪代码算法

    6.5.3 写伪代码算法
    ·桌面检查(desk checking):在纸上走查整个设计。
    6.5.4 翻译伪代码算法
    ·由于汇编语言的范围是有限的,所以一个伪代码语句需要几个 Pep/8语句。
    6.6测试
    -测试计划(test plan):说明如何测试程序的文档。
    -代码覆盖(明箱)测试法(code-coverage(clear-box)testing):通过执行代码中的所有语句测试程序或子程序的测试方法。
    -数据覆盖(暗箱)测试法(data-coverage(black-box)testing):把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法。
    -测试计划实现(test-plan implementation):用测试计划中规定的测试用例验证程序是否输出了预期的结果。 要运行测试计划中列出的所有测试用例。


第七章 问题求解与算法设计
7.1 如何解决问题
1945年,G·Polya写了一本书,名为《如何解决它:数学方法的新观点》
7.1.1 提出问题

7.1.2 寻找熟悉的情况
与举一反三同理
7.1.3分治法
分类讨论,分组求解(整那么高大上干什么)
7.1.4算法

  • 算法(algorithm):在有限的时间内用有限的数据解决问题或子问题的明确指令集合。
    问题:为什么需要在有限的时间内用有限的数据?
    7.1.5 计算机问题求解过程
  • 计算机问题求解过程有四个阶段,即分析和说明阶段、算法开发阶段、实现阶段和维护阶段。
  • 上述的四个阶段是存在交互现象的。如下图所示,粗线标明了各阶段间的一般信息流, 细线 表示在发生问题时可以退回前面的阶段的路径。

    7.1.6 方法总结
  • 主要可分为以下四个步骤:
  1. 分析问题
  2. 列出主要问题
  3. 编写其余模块
  4. 根据需要进行重组和改写
    7.1.7 测试算法
  • 数学问题求解的目标是生成问题的特定答案,因此,检查结果等价于测试推出答案的过程。
    7.2 有简单参数的算法
  • 简单(原子)变量是那些不能被分开的变量,是存储在一个地方的一个值。
    7.2.1 带有选择的算法
  • 顶级(主要)模块只是表达任务
  • 任何一个分支都包含一连串的语句
    7.2.2带有循环的算法
    计数控制循环
    1.计数控制循环可以指定过程重复的次数,这个循环的 机制是简单记录过程重复的次数并且在重复再次开始前检测循环是否已经结束。
    2.这类循环有三个不同的部分,使用一个特殊的变量叫 循环控制变量。第一部分是初始化:循环控制变量初始化为某个初始值。第二部分是测试:循环控制变量是否已经达到特定值?第三部分是增量:循环控制变量以1递增。
    3.while循环被称为前测试循环。
    4.永远不会终止的循环称为一个无限循环
    事件控制循环
    -循环中重复的次数是由循环体自身内发生的事件控制的循环。
    -当使用 while语句来实现事件控制循环时,这一过程仍分为三部分:事件必须初始化,事件必须被测试,事件必须更新。
    -嵌套结构(nested structure):控制结构嵌入另一个控制结构的结构,又称为嵌套逻辑(nested logic)。
    问题:嵌套结构不会产生数据溢出问题么?
    平方根

    7.3复杂变量
  • 引用中的字母叫做字符串
  • 如果我们储存了一个字符串,所需的位置数量将取决于字符串中字符的数量。
    7.3.1数组
    -数组:同构项目的有名集合。
    -项目在集合中的位置叫索引。
    -与数组有关的算法分为三类:搜索、排序和处理。
    7.3.2 记录
  • 异构项目的有名集合。
  • 集合可以包含整数、实数、字符串或其他类型的数据。
    7.4 搜索算法
    7.4.1 顺序搜索
    一个一个来,达到条件就执行下一条,否则循环
    7.4.2 有序数组中的顺序搜索
    -无序数组

    -有序数组

    7.4.3 二分检索(binary search
    -在有序列表中查找项目的操作,通过比较操作排除大部分检索范围
    -类似数学中的二分法求极限



    7.5 排序
    7.5.1 选择排序
  • 选择排序算法虽然简单,但却有缺陷,它需要两个完整列表(数组)的空间。即使不考虑内存空间,赋值操作显然也很费空间。

    7.5.2冒泡排序
    -冒泡排序也是一种选择排序法,只是在查找最小值时采用了不同的方法。它从数组的最后一个元素开始,比较相邻的元素对,如果下面的元素小于上面的元素,就交换这两个元素的位置。
    -冒泡排序是非常慢的排序方式。

    7.5.3 插入排序
    -插入排序:将元素加入有序部分类似于冒泡排序中冒泡的过程。如果找到了一个位置,要插入的元素比数组中这个位置的元素小,那么就将新元素插入这个位置。

    7.6 递归算法
    -当在一个算法中使用它自己时时的算法。
    问题:什么叫使用自己
  • 递归(recursion):算法调用它本身的能力。
  • 每个递归算法至少有两种情况:基本情况和一般情况。
    7.6.1子程序语句
    -调用单元:命名代码出现的地方。
    -子程序有两种形式,一种是只执行特定任务的命名代码,一种是不仅执行任务,还返回给调用单元一个值(值返回子程序)。


    7.6.2 递归阶乘
    -这个数与0和它自身之间的所有数的乘积
    -尺寸系数就是要计算阶乘的数
    7.6.3 递归二分检索
    -递归算法必须从非递归算法中调用。
    7.6.4 快速排序
  • 快速排序算法的基本思想:对两个小列表排序比对一个大列表排序更快更容易。
    -其名字来自源于这种算法通常可以相对快地对数据元素列表进行排序,其基本策略是“分治法”。
    -如果数据是随机排列的,则快速排序是一个很好的排序方法。

    7.7 几个重要思想
    7.7.1信息屏蔽(information hiding)
    -隐蔽模块的细节以控制对这些细节的访问的做法。
    7.7.2 抽象
    -抽象(abstraction):复杂系统的一种模型,只包括对观察者来说必需的细节。
    -数据抽象(data abstraction):把数据的逻辑视图和它的实现分离开。
    -过程抽象(procedural abstraction):把动作的逻辑视图和它的实现分离开。
    -控制抽象(control abstraction):把控制结构的逻辑视图和它的实现分离开。
    -控制结构(control structure):用于改变正常的顺序控制流的语句。
    7.7.3 事物命名
    -给数据和过程一个名字,这些名字叫作标识符。
    -当我们要用一种程序设计语言把算法转换成计算机能够执行的程序时,可能必须修改标识符。
    -转换过程分两个阶段,首先在算法中命名数据和动作,然后把这些名字转换成符合计算机语言规则的标识符。
    7.7.4 测试
    -白盒测试:基于代码本身
    -黑盒测试:基于测试所有可能的输入值


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

原文地址:https://www.cnblogs.com/meeyee/p/11723284.html

时间: 2024-10-10 04:33:47

2019-2020-1学期20192429《网络空间安全专业导论》第三周学习总结的相关文章

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

2019-2020-1学期 20192415 <网络空间安全专业导论> 第一周学习总结(第二章) 2.1数字形式储存信息 数字分类 数字,自然数,负数,整数,有理数 2.2 位置计数法 一个数字采用以R为基数的记数系统,具有n个数位,可表示为: 注: 任何技术系统中的最大数字比基数小1 同一数值有多种不同表示方式 无论以谁为基数,10是基数值本身 2.加减计算(进位与借位) 二进制与(2^n)进制之间的特殊关系 二进制数转换为八进制数:每三个数为一组 二进制数转换为十六进制数:每四个数为一组

2019-2020-1学期 20192415 《网络空间安全专业导论》第一周学习总结 第四章

2019-2020-1学期 20192415 <网络空间安全专业导论>第二周学习总结 第四章 门与电路 硬件元件,用电信号表示操作二进制值 4.1 计算机与电学 信号电平区分信号的值: 0~2伏为低电压,由二进制数字0表示 2~5伏为高电压,由二进制数字1表示 门(gate):对电信号执行基本运算的设备. 电路(circuit):相互关联的门组合,用于实现特定的逻辑函数. 表示法: 布尔代数--用数学符号定义和操作逻辑电路 逻辑框图--图形化表示(特定) 真值表--列举,定义功能 注:三种表示

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

2019-2020-1学期 20192403 <网络空间安全专业导论>第九周学习总结 第三章 学习收获 网络空间概述 网络空间安全包括网络硬件安全和信息资源的安全性 网络管理 目标:确保计算机网络的正常运行,是网络中的资源可以得到更加有效地利用并在计算机网络运行出现异常时能及时响应和排除故障. 管理范畴:对计算机设备管理,对接入内部的计算机.服务器等进行管理,对行为的管理等 安全网络的特征:可靠性.保密性.完整性.可控性.可审查性 常见的网络拓扑 网络拓扑概述 网络拓扑是指网络的结构方式,表示

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

2019-2020-1学期 20192428 <网络空间安全专业导论>第九周学习总结 第九周内容学习主要围绕<网络空间安全导论>这本书展开. 第三章 网络安全 3.1 网络安全及管理概述 计算机网络的广泛应用,促进了我们社会的发展,因此管理网络并保障网络安全也成为了网络空间安全的首要问题. 网络安全的概念 网络安全研究领域涉及很多,但凡涉及网络信息的保密性.完整性.可用性.真实性.可控性.可审查性的技术和理论,就与网络安全有相关联之处. 而网络安全包括了网络硬件资源和信息资源的安全

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

<网络空间安全专业导论>让我重新对计算机科学有了更深一层的了解. 首先是第二章的学习内容.数字是一个总括的概念.由数字发散出来自然数/整数/负数.然后就是位置计数法.得益于引进基数这一概念,我学会了二进制,在我高中的信息课程有一定的接触,但这仅限于了解.而今天的学习则让我对此有了更深层的理解. 通过位置计数法和2.8.10进制,我粗略的学会了如何把一个10进制的数字变为2进制,以及2/8/10进制的数之间互换方法.更为重要的,是他们之间的加减法则.最后,是字,字节的含义. 到了第三章,数据和信

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

第3章 网络安全 3.1.1 网络安全的概念 网络安全是一个涉及计算机科学.网络技术.通信技术.密码技术.信息安全技术.应用数学.数论.信息论等的综合性领域. 网络安全包括网络硬件资源和信息资源的安全性. 网络安全包括网络硬件资源和信息资源的安全性. 网络硬件资源包括通信线路.通信设备(路由机.交换机等).主机等.网络硬件资源包括通信线路.通信设备(路由机.交换机等).主机等. 3.1.2 网络管理的概念 管理:指监督.组织和控制网络通信服务,以及信息处理所必需的各种活动的总称. 目标:确保计算

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

第二章 二进制数值与记数系统 1.数字的概念 数字是属于抽象数学系统的一个单位,服从特定的顺序法则.加法法则和乘法法则.也就是说,数字表示一个值,可以对这些值施加某些算术运算. 2.自然数.负数.整数.有理数的概念 自然数(natural number):0或通过在0上重复加1得到的任何数. 负数(negative number):小于0的数,是在相应的正数前加上负号得到的数. 整数(integer):自然数.自然数的负数或0. 有理数(rational number):整数或两个整数的商(不包

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

第三部分 硬件层 第四章 门和电路 4.1 计算机和电学     任何电信号都有电平.0-2伏是低电平,用0表示,2-5伏是高电平,用1表示.计算机中的信号被限制在这两个范围之内.     门(gate):对电信号执行基本运算的设备,接受一个或多个输入信号,生成一个输出信号.     电路(circuit):相互关联的门的组合,用于实现特定的逻辑函数.     描述门和电路的表示法有三种,互不相同却一样有效. 布尔表达式   布尔代数(Boolean algebra):表示二值逻辑函数的数学表示

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

收获:感觉书籍专业性很强,需要更多的时间去多次阅读 1.初步了解了二进制.八进制.十六进制与十进制之间的转换,可以简单区分数字分类,描述出位置基数法, 2.初步区分模拟数据和数字数据,执行一些类型的文本压缩,解释负数和浮点数的二进制格式 3.能区分一些光栅图形和矢量图形,对ASCII和Unicode字符集的特征有了初步了解 发现的问题: 1.双五进制如何工作 2.为什么计算机每个储存位只有高电平与低电平两种信号? 3.二进制的数可以被转换为以任何数为基准的数,其他进制不行吗? 4.常用光栅图形和

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

第二章 二进制数值与计数系统二进制数值与计数系统 区分数字分类区分数字分类 1.数字:抽象数学系统的一个单位 服从算数法则. 2.自然数(natural number):0 或通过在0 上重复加1 得到的任何数. 3.负数(negative number)小于0 的数,是在相应的正数前加上负号得到的数. 4.整数(Integer):自然数.自然数的负数或0. 5.有理数(rational number):整数或两个整数的商(不包括被0 除的情况). 位置计数法位置计数法 位置记数法(positi