编程流程图

提出
问题

|

建立
数学模型

-

1 建模的过程就是一个对现实问题的抽象过程;
2 对于简单的计算机算法而言,建立数学模型实际上就是设计合适的数据结构的问题。
3 数学模型与数据结构相互影响;

|

确定
数据结构

|
-

1 物理存储结构(顺序、链接、索引、散列)
2 逻辑结构(线性、树形、图形、集合)
3 运算(插入、删除、查询、更新、排序)

确定
输入输出

-

1 输入就是将自然语言或人类能够理解的其他表达方式描述的问题转换为数学模型中的数据;
2 输出就是将数学模型中表达的运算结果转换成自然语言或人类能够理解的其他表达方式。

|

确定
算法

-

1 算法=操作+控制结构
2 操作:逻辑运算、算术运算、数据比较、数据传送;
3 算法的控制结构:顺序、选择、循环;

-

  1. 按算法的思路:递推、递归、穷举、贪婪、分治、动态规划、迭代算法;
  2. 算法按照应用:基本算法、数据结构相关算法、几何、图论、规划、数值分析、加密/解密、排序、查找、并行、数论算法;
  3. 算法按确定性:确定性算法、非确定性算法;
|

选择
编程语言

|

选择编程语言工具
并用编程语言
描述算法

-

  1. 语言设计人员设计的语言是为了解决特定的问题的目的而设计的(以用其编写的程序应用于特定领域);
  2. 语言设计人员设计的语言在以下方面有侧重点的取舍:编程简单、程序易读、执行效率高;

|
|

解释执行

编译后执行

总体思路:任务分解,先简单(核心)功能,然后逐渐增加功能,版本不断更新。如俄罗斯方块程序:1 大棋盘显示程序;2 方块显示程序;3 方块左右移动程序;4 方块旋转程序;5 方块定时下落程序;6 广场下落后堆积程序;7 随机产生方块程序;8 消行程序;9 其它功能模块;

从数据结构方面来看,涉及线性表的遍历和查找操作,一般会用到循环结构,如果算法操作的数据结构是二维数组,通常都会用到两重循环。

数据结构中的数据运算,也就是数据处理,即对数据的增查删改,数据库中数据记录的操作也是如此;

算法都遵循特定的方法和模式,就算法的模式而言,处理各种求最优解问题时,人们常用贪婪法、动态规划法等算法模式,处理迷宫类问题时,穷举式的枚举和回溯是常用的模式。

就算法的实现方式而言,如果算法需要频繁地查表操作,那么数据结构的设计通常会选择有序表来实现;反过来,当设计的算法用到了树和图这样的数据结构时,含有递归结构的方法就常常伴随它们左右。

编程的本质:针对特定的问题,用特定的编程语言将计算机需要执行的操作步骤详细描述出来。