C语言01

从问题到C语言程序设计

1.1计算机的问题求解方法

程序设计面向的问题

  1. 什么问题可以用程序的方法解决?

    • 打印九九乘法表

    • 图形变换

    • 文件压缩问题

    • .......

    • 一切可计算的问题

  2. 如何解决?

    1. 确定问题可计算

    2. 建立问题的数学模型

    3. 设计算法和数据结构

    4. 选择合适的计算机语言编写程序

    5. 调试运行程序分析结果

关于计算

  1. 什么是计算

    • 基于规则符号集合的变换过程,有限的步骤

  2. 可计算和不可计算

    • 可计算:输入与输出是明确的

    • 不可计算:旅行家问题

    • 理论上可计算的问题,实际上不一定有解

  3. 计算的复杂性

    • 时间复杂度:受问题规模影响(如:梅森素数)

    • 空间复杂度(不讨论)

关于算法

  1. 什么是算法

    • 有穷规则的集合,规则规定了解决某一特定类型的问题的运算序列(是解决问题的有限步骤)

  2. 算法的特征

    • 有穷性:有限步骤

    • 确定性:含义确切

    • 有效性:有效执行

    • 有零个或多个输入

    • 有一个或多个输出

  3. 算法描述方法:

    • 自然语言

    • 程序语言

    • 流程图----->传统方法

    • N-S图------->结构化程序设计方法(待补充

    • PAD图

    • 伪代码------>随意但不严谨的方法

  4. 算法优化:

    • 减少判断次数

  • 无效输出减少

  1. 总结:

    • 算法是解题步骤,设计取决于人的创造

    • 实际问题需要首先分析----抽象----建模,才能设计算法

    • 算法的5个特征,设计时必须满足

    • 基于计算机的问题求解和数学方法有很大不同

    • 算法需要用工程化的方法表达

    • 算法有很大的优化空间

结构化程序设计方法

  • 自顶向下,逐步求精

  • 单入口单出口

  1. 什么是好程序

    • 可读性好

    • 效率高

  2. 写好一个程序

    • 三个基本结构构成(顺序,选择,循环待补充

    • 不用GOTO语句(原则不用,适当使用)

  3. 良好的程序设计代码特点:

    • 正确性----正确实现功能

    • 易读性----易于阅读和理解,便于调试、修改和扩充

    • 健壮性----算法对交互和环境的反应或处理能力

    • 高效率----所需时空都小

  4. 良好的程序设计风格

    • 源程序文档化

    • 数据说明标准化

    • 语句规范化

    • 输入输出格式化

总结

  • 过程:问题---->程序---->指令序列---->结果

  • 从问题到程序---->抽象、建模+程序设计

  • 抽象、建模=可计算+计算复杂性

  • 程序设计=数据结构+算法+方法

  • 算法=问题分析+算法表达+程序实现

  • 程序实现=语言+环境

posted @ 2020-09-17 15:23  我爱迪迪  阅读(166)  评论(0编辑  收藏  举报