C语言学习-第二章 算法——程序的灵魂

158 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

程序=算法 + 数据结构

一个程序主要包括以下两方面的信息:

  • 数据的描述:在程序中要指定用到那些数据,以及这些数据的类型和数据的组织形式 —— 数据结构(data structure)
  • 操作的描述:要求计算机进行操作的步骤,也就是算法(algorithm)

什么是算法

计算机算法可分为两大类别:数值运算算法和非数值运算算法

  • 数值运算的目的是求数值解
  • 非数值运算涉及的面十分广泛,种类繁多,要求各异,只有一些典型的非数值运算算法(例如排序算法、查找搜索算法等)有现成的、成熟的算法可供使用

算法的特性

  • 有穷性
  • 确定性
  • 有零个或多个输入
  • 有一个或多个输入
  • 有效性

怎样表示一个算法

常用的方法有:自然语言、传统流程图、结构化流程图、伪代码

用自然语言表示算法

自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言

用流程图表示算法

  • 表示想要操作的框
  • 带箭头的流程线
  • 框内外必要的文字说明

image.png

三种级别结构和改进的流程图

  • 三种基本结构
    • 顺序结构
    • 选择结构,又称选取结构或分支结构
    • 循环结构,又称重复结构,即反复执行某一部分的操作
      • 当型(while)型循环结构
      • 直到型(until型)循环结构

传统流程图的弊端,传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很大的精力去追踪流程,使人难以理解算法的逻辑。

用N-S流程图表示算法

在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其他从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图又成N-S结构化流程图,适用于结构化程序设计。

image.png

用伪代码表示算法

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。

用计算机语言表示算法

用计算机实现算法,计算机是无法识别流程图和伪代码的,只有用计算机语言编写的程序才能被计算机执行,因此在用流程图或伪代码描述一个算法后,还要将他转换成计算机语言程序。用计算机语言表示的算法是计算机能够执行的算法。

结构化程序设计方法

采取以下方法来保证得到结构化的程序:

  • 自顶向下
  • 逐步细化
  • 模块化设计
  • 结构化编码