20191206《信息安全导论》第六周学习总结

一、《计算机科学概论》

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

(一)如何解决问题

  1. 步骤

第一步:理解问题

第二步:找到信息和解决方案之间的联系,如果找不到直接联系,则可能需要考虑设计辅助问题。最终应该找到解决方案。

第三步:正确地执行方案

第四步:分析的得到的解决方案

George Polya——《How to solve it》

  1. 寻找熟悉的情况

永远不要彻底重新做一件事,学会借鉴改进已有的解决方案,举一反三。

  1. 分治法:把大问题分割成能独立解决的小问题,“子任务”
  2. 算法(algorithm)在有限的时间内用有限的数据解决问题的明确指令集合。
  3. 计算问题求解过程:四个阶段:分析和说明阶段、算法开发阶段、实现阶段、维护阶段

(二)有简单参数的算法

  1. 带有选择的算法:if elif else
  2. 带有循环的算法:

(1) 计数控制循环:设置循环控制变量,while+expression,控制变量增量

(2) 事件控制循环:不同于计数控制循环,用计数器控制循环的始末。此方法是用while+expression,的布尔值来控制循环的。

(3) 嵌套结构(nested structure):控制结构嵌入另一个控制结构,又称为嵌套逻辑。

(4) 抽象步骤(abstract step)细节仍未明确的算法步骤

具体步骤(concrete step)细节完全明确的算法步骤

(三)复杂变量

1.数组:同构项目的有名集合,与数组有关的三种算法:搜索、排序、处理

(1)搜索算法:

i)  顺序搜索,

ii)有序数组中的顺序搜索,

iii)二分检索(采用分治法,检索有序数组)(binary search):在有序列表中查找项目的操作,通过比较操作排除大部分的检索范围。

(2)排序

i)选择排序

ii)冒泡排序

iii)插入排序

2.记录:异构项目的有名集合,

(四)递归算法

1.递归(recursion)算法调用它本身的能力,是另一种重复循环的控制结构。

2.子程序 调用单元 return

3.无限递归与无限循环等价

4.递归阶乘的python实现

#递归阶乘

def jiecheng(a):

if a==1:

return a

elif a == 0:

return 1

else:

return a*jiecheng(a-1)

n = int(input(‘digit please‘))

print(jiecheng(n))

5.递归二分检索

6.快速排序

(五)几个重要思想

1.信息隐蔽(information hiding):隐蔽模块的细节以控制对这些细节的访问的做法

2.抽象:(abstraction)复杂系统的一种模型,只包括对观察者来说必须的细节

(1)数据抽象(data abstraction)把数据的逻辑视图和它的实现分离开

(2)过程抽象(procedural abstraction)把动作的逻辑视图和它的实现分离开

(3)控制抽象(control abstraction)把控制结构的逻辑视图和它的实现分离开

(4)控制结构(control structure)用改变正常的顺序控制流的语句

备注:重要算法

穷举法,穷举思想。

循环算法

二、《自学是一门手艺》

第十章、为什么从函数开始

在绝大多数情况下,输入多于输出,或者说,输入远大于输出,这不仅是自然现象,也是无法改变的规则

在未来的学习中,有空就去读读别人写的代码是一个需要养成的好习惯,理解能力的提高就靠他了,就像学习英语一样,读得多了,自然就读的快了,也就理解的快了,在过程中还能自然而然的习得更多的句式。说理方法、讲故事的策略,最终变得“很能写”

结构化编程的核心就是拆分任务。在什么情况下任务就不能再拆分了呢?当一个函数只完成一项功能的时候。

第十一章第一二节、关于参数

  1. 命名:不能有空格、不能用数字开头、学会使用下划线
  2. 如果没有返回值,函数默认返回布尔值,从而可以用于条件语句
  3. 闰年判断,python

year = int(input(‘请输入要判断的年份‘))

if year%4==0:

if year%400==0:

print(‘是闰年‘)

elif year%100==0 and year%400!=0:

print(‘不是闰年‘)

else:

print(‘是闰年‘)

elif year%4!=0:

print(‘不是闰年‘)

  1. 斐波那契数列 python

n=int(input(‘你需要第几项斐波那契数列值:‘))

n1=1

n2=1

count=2

if n<=0:

print(‘输入数字有误‘)

elif n==1 or n==2:

print(1)

else:

while count<n:

nn=n1+n2

n1=n2

n2=nn

count+=1

print(nn)

  1. 局部变量与全局变量

函数每次被调用的时候都会开辟一个区域,所以即使局部变量与全局变量名称相同,他们也不是同一个变量。

一个比较好的习惯:如果传递进来的之值是列表,那么在函数内部对其进行操作之前,创建他的一个拷贝。

  1. 可接受一系列值的位置参数

带一个* (arbitrary positional arguments)

在函数内部,把可变位置参数当做一个容器来处理。

一个函数只可定义一个可变位置参数,且写于其他参数后面。

def say_hi(*names):

for name in names:

print(f‘Hi,{name}!‘)

names=(‘jack‘,‘linda‘,‘tom‘,‘bob‘)

say_hi(*names)

Hi,jack!

Hi,Linda!

Hi,tom!

Hi,bob!

  1. 关键字参数(keyword arguments)从用户角度看,这些设定了默认值的参数就变成了可选参数。同样,我们可以设定一个能够接收很多个值的关键字参数。** (arbitrary keyword arguments)
  2. Python参数排序规则

Positional — arbitrary positional— keyword — arbitrary keyword

第三节、化名与匿名

  1. 化名:很容易导致重名、取名含混。不是个好主意。
  2. 用lambda关键字写一个很短的函数

(1) lambda x,y:x+y

(2) 冒号之后有且仅有一个表达式

(3) 这个函数没有名字,因而称为匿名函数。

(4) Add = lambda x,y:x+y  将匿名函数命名。

  1. Lambda 函数的使用场景

(1) 作为另一个函数的返回值

(2) 作为另一个函数的参数

第四节、递归函数

1.即那些在自身内部调用自身的函数

2.递归阶乘 python

#递归阶乘

def jiecheng(a):

if a==1:

return a

elif a == 0:

return 1

else:

return a*jiecheng(a-1)

n = int(input(‘digit please‘))

print(jiecheng(n))

3.规律:return 返回自身的调用 、return至少有一个返回终止条件、在递归过程中能逐步达到退出条件。

原文地址:https://www.cnblogs.com/cfqlovem-521/p/11831142.html

时间: 2024-10-17 21:06:37

20191206《信息安全导论》第六周学习总结的相关文章

20191325《信息安全导论》第九周学习总结

1. 在上课时学习了一些Linux的基本操作命令和最先,最佳,最差匹配. 应用软件帮助我们解决现实世界问题的程序.系统软件系统软件的核心,管理计算机系统并与硬件进行交互的程序. 逻辑地址是对一个存储值的引用,相对于引用它的程序. 机制存储器存放分区实时地址,界限存储器存储当前分区长度. 进程控制块操作系统管理进程信息使用的数据结构. 上下文切换:当一个进程移出CPU,另一个取代它时的寄存器信息交换. 磁盘调度:决定先满足哪个磁盘的I/O请求. 2. 进程的运行代码还不完全理解 原文地址:http

2019-2020-1 20191312《信息安全专业导论》第九周学习总结

2019-2020-1 20191312<信息安全专业导论>第九周学习总结 教材学习内容总结 这周学习了操作系统层的两章:操作系统和文件系统和目录.从操作系统开始,介绍了操作系统扮演的角色,管理者和服务者.接着介绍了操作系统如何管理进程和内存,并介绍了一些具体的方法.通过对这些管理方法的学习,我进一步了解了计算机的运行原理和方法.然后文件系统和目录这一章介绍了系统中或者说是计算机中文件的储存方法,了解了树状结构下的文件储存,我认为这是一种非常高效的储存方式.同时也学习了对文件的读写方式,和在读

20191302 《信息安全专业导论》第二周学习总结

2019-2020-20191302 <信息安全专业导论>第二周学习总结 教材学习内容总结 -<计算机科学概论>第一章 第十八章 -第一章 全景图 通过第一章的学习我了解了计算机系统的组成,硬件与软件,抽象的概念,计算机的发展历史以及计算机语言,对计算机有了初步的了解,体会到计算机从能充满整个教室的大块头到现在小巧玲珑的笔记本电脑经历了多代的演变,人类科技的进步速度之快令我j惊叹. -第十八章 计算的限制 通过这一章的学习,我了解到数学问题只有一小部分可解,只有一部分问题是计算机可

20145317《信息安全系统设计基础》第六周学习总结(1)

20145317<信息安全系统设计基础>第六周学习总结(1) 第四章 处理器体系结构 指令体系结构:一个处理器支持的指令和指令的字节级编码 4.1Y86指令集体系结构 Y86:包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. Y86程序中的每条指令都会读取或修改处理器状态的某些部分.Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC) Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态. 注意:条件

20145222《信息安全系统设计基础》第六周学习总结(1)

20145222<信息安全系统设计基础>第六周学习总结(1) 第四章 处理器体系结构 指令体系结构:一个处理器支持的指令和指令的字节级编码 4.1Y86指令集体系结构 · Y86:包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. · Y86程序中的每条指令都会读取或修改处理器状态的某些部分.· Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC) · Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状

《Linux内核分析》第六周学习笔记

<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核

20145307《信息安全系统设计基础》第六周学习总结

20145307<信息安全系统设计基础>第六周学习总结 教材学习内容总结 Y86指令集体系结构 内容:定义一个指令集体系结构,包括定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理. 程序员可见状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分. Y86具体包括:8个程序寄存器.3个条件码ZF\SF\OF.程序计数器(PC). Y86用虚拟地址引用存储器位置. 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态. Y86指令 IA32指令集的一个子集,只

20145301第六周学习总结

20145301第六周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream InputStream与OutputStream  流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的  InputStream与OutputStream InputStream.OutStream提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类.常用的打包器具备缓冲区作用的BufferedOutputStream.B

20145319 第六周学习总结

20145319 <Java程序设计>第六周学习总结 教材学习内容总结 本周学习教材的第十.十一章,主要讲述了串流,字符处理和线程以及并行API 1. 输入输出 串流:1Java中的数据有来源(source)和目的地(destination),衔接两者的就是串流对象2串流设计:在不知道限定数据来源和目的地时,也可以依赖抽象的InputStream和Outstream来编写一个dump()方法,方便以后使用3InputStream和OutputStream:在java中,输入串流代表对象为jav

LINUX内核分析第六周学习总结——进程的描述和进程的创建

LINUX内核分析第六周学习总结——进程的描述和进程的创建 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 进程的描述 进程描述符task_struct数据结构(一) 进程描述符task_struct数据结构(二) 进程的创建 进程的创建概览及fork一个进程的用户态代码 理解进程创建过程复杂代码的方法 浏览进程创建过程相关的关键代码 创建的新进程是从哪里开始执行的