2021-2022-1学期20212325《网络空间安全专业导论》第三周学习总结

《第三周学习总结》

- 第六章 低级程序设计语言与伪代码

  • 计算机操作包括 可编程的(programmable)、存储(store)、检索(retrieve)和处理(process)
  • 机器语言(machine language) 即计算机直接使用的二进制编码指令构成的语言
    • 虚拟机(virtual computer) 即为了模拟真实机器的重要特征而设计的假想机器。书中提到的Pep/9是Stanley Warford设计的虚拟计算机,它有四十条机器语言指令。
      • Pep/9有七个寄存器,书中重点研究三个:
        程序计数器(PC):其中包含下一条即将被执行的指令的地址。
        指令寄存器(IR):其中包含正在本质性的指令的一个副本。
        累加器(A):用来存储数据和运算的结果。
      • 指令格式:一条指令由两部分构成,即8位的指令说明符(instruction specifier)(指令的第一个字节)和(可选的)16位的操作数说明符(oprand specifier),因此Pep/9的指令在长度上是1字节还是3字节,取决于是否需要用操作说明符。
      • 一些事例指令:
        0000 停止执行
        1100 将字载入寄存器A中
        1101 将字节载入寄存器A中
        1110 存储寄存器A中的字
        1111 存储寄存器A中的字
        0110 将操作数加到寄存器A中
        1000 从寄存器A减操作数
    • Pep/9的输入/输出(I/O)遵循的设计原则是内存映射输入/输出(memory mapped I/O),且Pep/9使用ASCII字符集来表示字符。
  • 一个程序实例
    • Pep/9模拟器执行程序时,像真实机器一样每次只运行一条程序命令,并且遵守读取-执行周期:
      1)从由程序计数器确定的存储器位置上获取指令;
      2)解码指令,更新程序计算器;
      3)获得操作数(如果需要);
      4)执行指令。
    • 另一个机器语言实例
  • 汇编语言(assembly language):一种低级语言,用助记码表示特定计算机的机器语言指令。
    汇编器(assembler):把汇编语言程序翻译成机器代码的程序。
    • Pep/9汇编语言
    • 数字数据、分支(branch)、标签(label),其中标签即对内存位置起的名字,可以将这个名字当作操作数。

    • 汇编语言中的循环,通过重写AddNums程序来使用循环。
  • 表达算法
    算法(algorithm):解决方案的计划或概要,或解决问题的逻辑步骤顺序。
    伪代码(pseudocode):一种表达算法的语言。
    • 伪代码的功能,伪代码没有特定的语法规则,但必须要表示出下面的概念:
      1、变量
      2、赋值
      3、输入/输出
      4、选择
      5、重复
      以下是总结的伪代码语句:
    • 执行、写、翻译伪代码算法

- 第七章 问题求解与算法设计

  • 如何解决问题
    • 提出问题
      • 寻找熟悉的情况
      • 分治法
      • 算法
      • 计算机问题求解过程
      • 方法总结
        1、分析问题
        2、列出主要任务
        3、编写其余的模块
        4、根据需要进行重组和改写
      • 测试算法
  • 有简单变量的算法,简单(原子)变量是指那些不能被分开的变量,是存储在一个地方的一个值。
    • 带有选择的算法
    • 带有循环的算法:
      1、 计数控制循环‘使用一个特殊的变量叫做循环控制变量(loop control variable),第一部分是初始化,第二部分是测试,第三部分是增量。
      2、事件控制循环也分为三部分:事件必须初始化,事件必须被测试,事件必须更新。
      3、平方根,用一个更简单的使用适用于实数以及整数的近似算法。
      抽象步骤(abstract step):细节仍未明确的算法步骤。
      具体步骤(concrete step):细节完全明确的算法步骤。
  • 复杂变量
    • 数组是同构项目的有名集合,可以通过单个项目在集合中的位置访问它们。项目在集合中的位置叫做索引。与数组有关的算法分为三类:搜索、排序、和处理。
    • 搜索算法
      • 顺序搜索遵循了搜索定义。
      • 有限数组中的顺序搜索,在算法中使用index而不是position。
      • 二分检索(binary search):在有序列表中查找项目的操作,通过比较操作拍吹大部分检索范围。
    • 排序
      • 选择排序
      • 冒泡排序,也是一种选择排序法,但在查找最小值的时候采用了不同的方法,而且是非常慢的算法,比较迭代算法的方法通常是看他们对数组排序的迭代次数。有时对他稍加修改,就能成为有些情况的最佳选择。
      • 插入排序
  • 递归算法中,递归(recursion)即算法调用它本身的能力,每个递归算法至少有两种情况,基本情况和一般情况,所有递归解决方案的第一步是确定尺寸系数,在每次继续递归之前,先了解一个新的控制结构:子程序语句。
    • 子程序语句有两种形式,一种是指执行特定任务的命名代码,一种是不止执行任务,还返回给调用单元一个值(值返回子程序)。子程序是抽象的一种强力工具。
    • 递归阶乘
    • 递归二分检索
    • 快速排序的基础是递归
  • 几种重要思想
    • 信息隐蔽(information hiding):隐蔽模块的细节以控制对这些细节的访问的做法。
    • 抽象(abstraction):复杂系统的一种模型,中包括对观察者来说必需的细节。抽象和信息隐蔽就像一个硬币的两面,信息隐蔽是隐藏细节的做法,抽象则是隐藏细节后的结果。
      计算领域中的各种抽象模型:
      数据抽象(data abstraction):把数据的逻辑视图和他的视线分离开。
      过程抽象(procedural abstraction):把动作的逻辑视图和他的视线分离开。
      控制抽象(control abstraction):把控制结构的逻辑视图和他的视线分离开。
      控制结构(control structure):用于改变正常的顺序控制流的语句。
    • 事物命名,给数据和过程一个名字,这些名字叫做标识符。

问题:概念较多,在理解的基础上根据逻辑多加记忆。

posted @ 2021-10-14 22:16  sainahes  阅读(100)  评论(0)    收藏  举报