引言

程序包含两个方面的信息:

  1. 对数据的描述:

    就是数据结构:程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式.

    需要的数据 数据的类型 数据的存储的形式 如:key-value

  2. 对操作的描述:即要求计算机进行操作的步骤,也就是算法

    数据是操作对象

    操作的目的是对数据进行加工处理来得到想要的结果

程序设计人员应具备的知识: 算法、数据结构、程序设计方法、语言工具。

​ 算法+数据结构=程序

算法是灵魂,语言是工具,数据结构是加工对象,编程需要采用合适的方法

2.1 什么是算法

算法(广义): 解决一个问题采取的方法和步骤

计算机语言算法 :程序

2.2 简单的算法举例

2.3 算法的特性

有效算法的特点:

  1. 有穷性:一个算法包含有限的操作步骤,而不能是无限的

  2. 确定性:算法每个步骤都是确定的,不会产生歧义

  3. 零个或多个输入(形式参数表):输入是指执行算法时需要从外界取得必要的信息.

  4. 有一个或多个输出:算法的目的是为了求解.

  5. 有效性:算法中每步能有效的执行

2.4 表示一个算法

2.4.1 用自然语言表示

用人们日常使用语言表示一个算法

2.4.2 用流程图表示

流程图用一些图框表示各种操作

2.4.3 三种基本结构和改进的流程图

传统流程图的弊端

没有严格规范,不易阅读和理解算法逻辑

算法可靠性弱,可维护性低

三种基本结构

用三种基本结构作为一个良好算法的节本单元

  1. 顺序结构:

    最简单的一种基本结构

  2. 选择结构:

    选择结构又称选取结构或分支结构判定给定的条件是否成立,从而选择执行A或B

  3. 循环结构:

    又称重复结构,反复执行某一部分的操作

三种基本结构共同点:

1.只有一个入口

2.只有一个出口

3.结构内每一部分都有机会被执行到

4.结构内不存在死循环(体现了算法的有穷性,步骤是有限的,如:调用一个循环时,条件不会是一个无限循环的条件)

2.4.4 用N-S流程图表示算法

在基本结构上进行修改,去掉带箭头的流程线,算法全部写在一个矩形框中,框中包含其他从属关系.

简单来说,由一些基本的框组成一个大框.

n-s.gif

N-S流程图.png

2.4.5 用伪代码表示算法

伪代码写算法并无固定的,严格的语法规则,只要把意思表达清楚,便于书写和阅读即可,书写的格式要写成清晰易读的形式。

2.4.6 用计算机语言表示算法

完成一项工作,包括设计算法和实现算法两个部分

如:菜谱是一个算法,厨师炒菜就是在实现这个算法

对于计算机来说,只能用计算机语言来实现算法,流程图和伪代码是无法识别的。

注意:对于C语言来说,写出了C程序,仍然只是描述了算法,并未实现算法,只有运行程序才是实现了算法。

2.5 结构化程序设计方法

结构化程序设计的目的:程序设计风格和程序结构的规范化。

结构化程序设计方法的基本思路:

​ 将复杂问题的求解过程分段进行,每个阶段处理的问题到控制在人们理解和处理的范围内。

主要采取的设计方法:

1>自定向下

2>逐步细化

3>模块化设计

4>结构化编码