10-13(计算机导论)

10.早期的编程方式

穿孔纸 插线板 开关

机电计算机用插电板流行(慢,成本高)

冯诺依曼结构:程序和数据都存在的地方

冯诺依曼计算机的标志是一个处理器(有ALU+数据寄存器+指令寄存器+指令地址寄存器)

11.编程语言发展史

伪代码:对程序的高层次描述

(掌握汇编语言是学会逆向的充分必要条件)

汇编器:可以读懂文字指令自动转成二进制指令

汇编器读取"汇编语言"写的程序,然后转成"机器码"

优点:程序员可以专心编程,而不用管底层细节

变量:程序眼只需要创建代表内存地址的抽象

1960年代:ALGOL LISP BASIC

1970年代:Pascal C Smalltalk

1980年代:C++ Objective-C Perl

1990年代:Python Ruby Java

2000年代:Swift C# GO

12.编程原理

控制流语句

最常见if语句(条件语句)

For While Function

模块化编程不仅可以让单个程序员独立制作APP也让团队协作可以写更大型的程序

在现实中,程序员不会浪费时间写指数函数

通过库(预先写好的函数)可以提高程序员的工作效率

库类似于像Python里面的math库 random库

eg:From math import*

13.算法入门

算法是密码学和逆向工程的核心部分

算法在密码学和逆向工程中非常重要,因为它们涉及到加密和解密信息的方法。

在密码学中,算法被用来保护信息不被未经授权的用户阅读,例如使用对称密钥加密或非对称密钥加密。

在逆向工程中,算法用来分析和破解加密信息,以获取隐藏的敏感信息。

算法的复杂度:算法的输入大小运行步骤之间的关系,用来表示运行速度的量级

归并排序算法:

(按序排列 取两个数组 较小在上)

307-----239----------214

239 -->>307------->> 239

250-----214------->> 250

214 --->>250 --------307

复杂度为O(n*log N)

n是需要比较+合并的次数 log N是合并步骤的次数

Dijkstra算法:

是用于计算单源最短路径的图论算法。

它是一种贪心算法,通过不断更新到源点的距离来找到图中的最短路径。

复杂度为O(n^2),其中n是图中的结点数

选择排序法:

它的基本思想是:首先在未排序的数列中找到最小(大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序法的优点是它的实现简单,并且在某些情况下,选择排序法的时间复杂度比其他算法更低。但是,选择排序法的缺点是它不是一个稳定的排序算法,并且它的时间复杂度为O(n^2),因此它不适用于大规模数据的排序。

posted @ 2023-02-07 12:04  x1aochen  阅读(27)  评论(0编辑  收藏  举报