C语言01
1.1计算机的问题求解方法
程序设计面向的问题
-
什么问题可以用程序的方法解决?
-
-
图形变换
-
文件压缩问题
-
.......
-
一切可计算的问题
-
-
如何解决?
-
确定问题可计算
-
建立问题的数学模型
-
设计算法和数据结构
-
选择合适的计算机语言编写程序
-
调试运行程序分析结果
-
关于计算
-
什么是计算
-
基于规则的符号集合的变换过程,有限的步骤
-
-
可计算和不可计算
-
可计算:输入与输出是明确的
-
不可计算:旅行家问题
-
理论上可计算的问题,实际上不一定有解
-
-
计算的复杂性
-
时间复杂度:受问题规模影响(如:梅森素数)
-
空间复杂度(不讨论)
-
关于算法
-
什么是算法
-
有穷规则的集合,规则规定了解决某一特定类型的问题的运算序列(是解决问题的有限步骤)
-
-
算法的特征
-
有穷性:有限步骤
-
确定性:含义确切
-
有效性:有效执行
-
有零个或多个输入
-
有一个或多个输出
-
-
算法描述方法:
-
自然语言
-
程序语言
-
流程图----->传统方法
-
N-S图------->结构化程序设计方法(待补充)
-
PAD图
-
伪代码------>随意但不严谨的方法
-
-
算法优化:
-
减少判断次数
-
-
无效输出减少
-
总结:
-
算法是解题步骤,设计取决于人的创造
-
实际问题需要首先分析----抽象----建模,才能设计算法
-
算法的5个特征,设计时必须满足
-
基于计算机的问题求解和数学方法有很大不同
-
算法需要用工程化的方法表达
-
算法有很大的优化空间
-
结构化程序设计方法
-
自顶向下,逐步求精
-
单入口单出口
-
什么是好程序
-
可读性好
-
效率高
-
-
写好一个程序
-
三个基本结构构成(顺序,选择,循环待补充)
-
不用GOTO语句(原则不用,适当使用)
-
-
良好的程序设计代码特点:
-
正确性----正确实现功能
-
易读性----易于阅读和理解,便于调试、修改和扩充
-
健壮性----算法对交互和环境的反应或处理能力
-
高效率----所需时空都小
-
-
良好的程序设计风格
-
源程序文档化
-
数据说明标准化
-
语句规范化
-
输入输出格式化
-
总结
-
过程:问题---->程序---->指令序列---->结果
-
从问题到程序---->抽象、建模+程序设计
-
抽象、建模=可计算+计算复杂性
-
程序设计=数据结构+算法+方法
-
算法=问题分析+算法表达+程序实现
-