2021-2022-1 20211420《信息安全专业导论》第六周学习总结

作业信息

|作业属于|2021-2022-1信息安全专业导论
|作业要求|2021-2022-1信息安全专业导论第五周作业

  • 学习目标
    • Polya如何解决问题
    • 简单类型与组合类型
    • 复合数据结构
    • 查找与排序算法
    • 算法复杂度
    • 递归
    • 代码安全

|班课作业链接|
pep9求和
XOR加密

教材学习内容总结

通过学习第7章内容,我知道了以下内容:

  • 计算机问题求解的过程
    (1)理解问题(即分析和说明阶段),说明程序要解决的问题
    (2)开发解决问题的逻辑步骤并测试问题是否能被解决,得到解决方案(即算法开发阶段
    (3)执行方案,编码测试(即实现阶段
    (4)分析,修改得到的解决方案,如果方案没有问题,则问题解决(即维护阶段
  • 简单类型与复合类型的区别
    简单类型:即只有简单变量的算法,可以是带选择的,可以是带循环的,可以是平方根算法等
    复杂类型:含有数组以及记录等复杂变量的类型
  • 三种复合数据结构机制
    • 顺序搜索的机制:遵循搜索定义,若匹配则找到元素,反之则否,当找完或没有找到匹配项后就停止
    • 有序数组中的顺序搜索机制:查找时若到了查找的数的位置时就可以停止查找了
    • 二分检索机制:采用分治法,先从中间开始,然后在两边查找,找到正确的部分再重复这一操作
  • 递归问题
    递归:算法调用它本身的能力(两种情况:基本情况和一般情况)
    递归问题:采用递归算法解决问题
    递归问题实例:计算数的阶乘(N!)
    阶乘定义:N!=N*(N-1)!
Factorial(0)=1
Factorial(N)=N*Factorial(N-1)

所以计算数的阶乘伪代码如下

Write "Enter N"
Read N
Set result to Factorial(N)
Write result + "is the factorial" + N

Factorial(N)
IF (N equals 0)
    RETURN 1
ELSE
    RETURN N*Factorial(N-1)

说明:这里每次调用N,N的值会减小,每次给出的数据称为参数。若参数为负数,则会进行无限递归,与无限循环等价

  • 无序数组与有序数组的区别
    看过书后我自己的理解
    无序数组:数组里所有元素的排列顺序随机,并不按照某一特定的顺序排列(如按首字母大小,按数值大小排列)
    有序数组:数组的元素都按照某一特定方式排列
    参考了这篇博客后我知道了有序数组和无序数组区别即优缺点在于查找的时间复杂度的不同
  • 选择排序与插入排序的区别
    看过书后我自己的理解
    选择排序:需要两个完整列表(数组)的空间,然后从中选取元素依次排序
    插入排序:只需要一个完整的列表(数组),在这一个空间里进行元素的抽取和排序
    注意:选择排序的每次迭代后,一个元素被放置到它的永久位置,而插入排序的每次迭代后,一个元素将被放在相对于其他元素来说适当的位置上
    通过这篇博客我还了解到了有关冒泡排序、选择排序和插入排序的其他内容
  • 快速排序算法
    基本思想:对两个小列表排序比对一个大列表排序更快更容易
    基本策略:分治法
    策略的基础:递归
    例子:例如你需要排序一堆作业,作业上都有同学名字,需要按A-Z顺序排列,这时可以将这堆作业分为两堆,一堆首字母只有A-M,另一堆首字母只有N-Z,因此对这两堆作业排序比排序这样大一堆作业快得多,最后只要将两堆合起来就排序成功了
  • 对一个数组进行排序如图
  • 二分检索算法
    二分检索算法就有点像数学中确定函数零点的方法----二分法
    一个递归二分检索算法的伪代码如下:
BinarySearch(first,last)
IF (first > last)
    RETURN FALSE
ELSE
    Set middle to (first + last)/2
    IF (item equals data[middle])
        RETURN TRUE
    ELSE
        IF (item < data[middle])
            BinarySearch (first, middle-1)
        ELSE
            BinarySearch (middle+1, last)

具体运用如图

  • 几个重要思想
    • 信息隐蔽:隐蔽模块的细节以控制对这些细节的访问的做法
    • 抽象:复杂系统的一种模型,只包括对观察者来说必需的细节
      • 数据抽象:把数据的逻辑视图和它的实现分离开
      • 过程抽象:把动作的逻辑视图和它的实现分离开
      • 控制抽象:把控制结构的逻辑视图和它的实现分离开
      • 控制结构:用于改变正常的顺序控制流的语句
    • 事物命名:给数据和过程一个名字,叫做标识符
    • 测试:算法走查,两种基本测试分类,白盒测试和黑盒测试

通过学习《看漫画学python》,我学到了以下内容:

  • 数据类型
    • 序列
      • 特点:可迭代,元素有序
      • 特殊序列:字符串
      • 列表
        • 索引
        • 加乘操作
        • 切片
        • 成员测试
        • 列表的创建
        • 列表追加元素
        • 列表插入元素
        • 列表替换元素
        • 列表删除元素
      • 元组
        • 创建元组
        • 元组的打包与拆包
      • 集合
        • 创建集合
        • 修改集合
      • 字典
        • 创建字典
        • 修改字典
        • 访问字典视图
  • 字符串
    • 字符串的表示:普通字符串,原始字符串,长字符串
    • 字符串与数字的转换
    • 格式化字符串
    • 操作字符串
      • 查找
      • 替换
      • 分割

教材学习中的问题和解决过程

问题:在学习第七章中的冒泡排序时,有一点不懂冒泡排序的原理
解决过程:我先是再看了一遍教材,但是我看过算法以后还是有点不懂,于是就到网上搜索到一篇文章,这篇文章清清楚楚的说明了冒泡排序的原理以及给出了各个语言所写的算法,于是,我就弄明白冒泡排序的原理了

代码调试中的问题和解决过程

问题:在做云班课的作业时在转换二进制为16进制数时碰到困难
解决过程:我上网搜寻了一下资料,发现在转换二进制字符串的时候需要先把其转换成int()类型的数,然后才能用hex()函数转换

如上图是问题

如上图是解决后的代码调试

代码托管

使用pep9打印出“Hello pep9”

上周考试错题总结

1.The following equation is an example of which Boolean algebra property?下面的等式是哪个布尔代数属性的示例?
A.CommutativeA.交换的
B.AssociativeB.联想
C.DistributiveC.分配的
D.IdentityD.身份
E. ComplementE.补充
F. De Morgan's law德摩根定律
本题应选B
2.The central processing unit( CPU) of a computer is often a single integrated circuit.计算机的中央处理器(CPU)通常是单个集成电路。
本题正确
3.Which of the following is a device that allows a computer to connect to the Internet?以下哪一项是允许计算机连接到Internet的设备?
A.Hertz赫兹
B.Pentium4B.Pentium4
C. Random accessC.随机存取
D. Cycles per secondD.每秒循环数
E.ModemE.调制解调器
本题选E
4.If an ad for a computer describes a memory having 4 x 230 bytes, how many gigabytes of the computer are uniquely addressable?如果一台计算机的广告描述了一个具有4 x 230字节的内存,那么有多少GB的计算机是唯一可寻址的?
A.4GBA.4GB
B.8GBB.8GB
C. 16 GBC.16 GB
D. 4 MBD.4 MB
E.8MBE.8MB
本题选A
5.Which of the following is a computing technique in which multiple processors each contribute one part of an overall computation?以下哪项是一种计算技术,其中多个处理器各自贡献整个计算的一部分?
A. Synchronous processingA.同步处理
B. Task-level parallelismB.任务级并行性
C. Data-level parallelismC.数据级并行性
D. SIMD( single instructions, multiple data)D.SIMD(单指令、多数据)
E. Rotation delayE.轮调延迟
本题选B
6.A computer's front-side bus (FSB) is small, fast memory that is usually built into the processor chip.计算机的前端总线(FSB)是通常内置在处理器芯片中的小型快速内存。
本题错误
7.The program counter is a register that stores the number of instructions executed by a computer.程序计数器是一个寄存器,用于存储计算机执行的指令数。
本题错误

学习感受

通过本周的学习以及老师的讲课,我能够理解教材上面的内容,我觉得自己对学习编程这方面的内容也来越有感觉了,加油,又是新的一周

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 50/50 4/4 20/20
第二周 100/150 2/6 15/35
第三周 150/300 2/8 12/47
第四周 1000/1300 5/13 36/83
第五周 300/1600 4/17 30/113
第六周 1400/3000 3/20 36/149

计划学习时间:30小时
实际学习时间:36小时
改进情况:本周的学习速度加快了,继续保持,在教材内容理解上仍然需要加强

参考资料

《计算机科学概论》
[《看漫画学Python》]
[《Python从入门到精通》]----明日科技,清华大学出版社

posted @ 2021-10-26 19:57  シバ鳥  阅读(75)  评论(0编辑  收藏  举报