程序,算法和数据结构
尼.沃思提出,程序=数据结构+算法,研究计算机就是研究算法
软件的主体是程序,程序的核心是算法,而算法建立在数据结构基础上
程序是软件的核心,这毋庸置疑.而算法是程序的核心,因为没有算法,你写不出一个程序,任何合理的程序都应该有一个或多个算法,而数据结构是算法的核心.数据结构就是数据存储的方式,只有先存好数据,才能研究算法.就好比写C语言程序,先要定义变量,再执行语句
算法即为解决问题的方法和步骤
算法特点
- 确定性
- 有穷性
- 能行性
- 至少一个输出
- 确定性实现的每一个操作含义必须明确,无二义性.不要有歧义.
- 执行有限个步骤后结束.不能无限
- 操作都是计算机可执行的.不能搞计算机看不懂的算法
- 至少有一个输出,可没有输入
不是所有问题都有算法
描述方法
- 程序设计语言等
![]()
算法和程序区别
- 程序是算法的具体实现
- 程序可以无穷,算法必须有穷
- 程序中的语句必须是机器可执行,而算法操作不用
- 算法与程序是相应的,但不一一对应
- 程序实现具体算法
- 程序只要你能写,那就能无穷无尽
- 程序语句如果机器执行不了,那肯定跑不出来.算法不需要执行,只要能看懂就行
- 算法和程序不一定一个一个对应.
算法分析
- 空间代价(空间复杂度)
- 时间代价(时间复杂度)
算法设计
- 由粗到细
- 由抽象到具体
- 逐步求精
算法需要看占用多少内存,需要多少运行时间
算法设计要从大到小.比如LOL设计师设计皮肤,要先定大致样子,建出模型,再定具体实现细节.
数据结构构成
- 逻辑结构
- 物理结构
- 运算结构(数据的运算)
这其实就是一个英雄,比如亚索.我们总想着操作的样子,那就是逻辑上这么想,但实际上,是0/22,也就是物理上,实在的.
数据的运算,定义是基于逻辑结构的,而运算是实在的,也即是针对物理结构.
程序设计语言
程序设计语言分类
- 机器语言
意义
机器语言是计算机的母语
特点
可移植性最差
唯一可被计算机直接执行
执行速度最快- 汇编语言
- 高级语言
特点
执行速度相对慢
可移植性好
- 机器语言是最接近计算机的语言,计算机也只能读懂机器语言,因此计算机执行自己的母语,因此指令系统也就是机器语言,速度也是最快的。但计算机本性难移,它不可再不同类型的计算机上直接执行,指令集不同,可移植性最差的也是机器语言
- 汇编语言就是在机器语言的基础上,增加了点可读性,就是让人能够看懂一些了,但也不是高级语言.
- 高级语言就如C语言,Python等。执行速度相对于机器语言还是要慢不少的,但是他们大多具有跨平台的特性,就是说Windows上能跑,Unix上也能跑
程序设计语言的基本成分
- 数据成分
- 运算成分
- 控制成分
- 传输成分
数据成分就是程序所处理的数据对象,运算成分是算术表达式,逻辑表达式之类。控制成分就如if,else语句,传输成分就是输入输出语句等.
三大结构
顺序,选择,循环
通过三大结构可以实现任何复杂程序
顺序对应着C语言中的正常书写代码,而选择就是if,else if,循环就是for,while,do while.没有程序通过这三大结构实现不了的
程序设计语言处理系统
翻译程序
翻译前-程序叫源程序
翻译后-程序叫目标程序
比如C语言的源程序就叫做.c,而其目标程序就是.obj,只不过现在编译器里不太容易看到
翻译程序按按不同的翻译处理方法分类
- 汇编程序
汇编语言到机器语言的翻译程序- 解释程序
不产生目标程序- 编译程序
产生目标程序,一次编译,反复执行
- 汇编程序不同于汇编语言源程序,汇编语言源程序是拿汇编语言写的程序
- 解释程序相当于老师口头解释,你就听了一边,不拿笔记记下来,效率较低
- 编译程序相当于老师还是口头解释,但你记下来了,那记下来的东西就可以反复看,效率较高
常用程序设计语言
- FORTRAN
面向过程
用于大型数值运算- VB
面向对象- JAVA
面向对象
适用于 络分布- C
面向过程- MATLAB(矩形实验室)
面向过程
.
FORTRAN是一种相当古老的语言了,VB以前还有学校学这个,现在也不太常见了。JAVA适用于 络分布环境是因为它一次编写,到处都可以运行。面向对象其实就是更加的面向用户编程了。
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34716 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!