C语言程序设计 第2章算法
第2章 算法 C 语言程序设计
●主要内容 21算法的概念 22怎样表示个算法 23算法的特性 24简单算法举例 25结构化程序设计方法 2021/2/24
2021/2/24 2.1 算法的概念 2.2 怎样表示一个算法 2.3 算法的特性 2.4 简单算法举例 2.5 结构化程序设计方法 ⚫ 主要内容
个程序应包括两个方面的内容 ●对数据的描述:数据结构( data structure) ●对操作的描述:算法( algorithm) 著名计算机科学家沃思提出一个公式 数据结构+算法=程序口 完整的程序设计应该是: 数据结构十算法十程序设计方法十语言工具 2021/2/24
2021/2/24 一个程序应包括两个方面的内容: ⚫ 对数据的描述:数据结构(data structure) ⚫ 对操作的描述:算法(algorithm) 著名计算机科学家沃思提出一个公式: 数据结构+ 算法 = 程序 数据结构+算法+程序设计方法+语言工具 完整的程序设计应该是:
21算法的概念 什么是算法 为解决某一应用问题而采用的解题步骤 算法的历史 “算法”即演算法出自《周髀算经》 ●英文名称 Algorithm ●欧几里得算法被人们认为是史上第一个算 法 2021/2/24
2021/2/24 2.1 算法的概念 ⚫ 什么是算法 – 为解决某一应用问题而采用的解题步骤 – 算法的历史 ⚫“算法”即演算法出自《周髀算经》 ⚫英文名称Algorithm ⚫欧几里得算法被人们认为是史上第一个算 法
2.2怎样示一个算法 用自然语言描选算法 例如:输出两个数中的最大数 第一步:输入x和y的值 第二步:比较x和y的值,如果x大于y,则输出x 的值,否则输出y的值。 易于理解,但 例如当描述“输出10个 冗长,不够精数中最大数”的算法时, 确,难于描述会冗长、难于理解 复杂算法。 2021/2/24
2021/2/24 用自然语言描述算法 第一步:输入x和y的值 第二步:比较x和y的值,如果x大于y,则输出x 的值,否则输出y的值。 易于理解,但 冗长,不够精 确,难于描述 复杂算法。 例如当描述“输出10个 数中最大数”的算法时, 会冗长、难于理解 例如:输出两个数中的最大数 2.2 怎样表示一个算法
用流程图描述算法 起止框(开始 输入输出框/输入x和y 判断框 x 2y 处理框z=x 流程线 输出z 结束 用流程图描述算法 2021/2/24
2021/2/24 用流程图描述算法 用流程图描述算法 Y N z= x z= y x >y ? 开始 输入x和y 结束 输出z 起止框 输入/输出框 判断框 处理框 流程线
●流程图是表示算法的较好的工具 个流程图包括以下几部分: (1)表示相应操作的框 (2)带箭头的流线; (3)內外必要的文字说明。 ●用流程图表示算法直观形象,比较清楚地 显示出各个框之间地逻辑关系。但是这种 流程图占用篇幅较多,尤其当算法比较复 杂时,画流程图既费时又不方便 2021/2/24
2021/2/24 ⚫ 流程图是表示算法的较好的工具。 一个流程图包括以下几部分 : (1)表示相应操作的框; (2)带箭头的流程线; (3)框内外必要的文字说明。 ⚫ 用流程图表示算法直观形象,比较清楚地 显示出各个框之间地逻辑关系。但是这种 流程图占用篇幅较多,尤其当算法比较复 杂时,画流程图既费时又不方便
三种基本结构和改进的流程图 ●传统的流程图用流程线指出各框的执行顺序,对 流程线的使用没有严格限制。因吡使用者可以毫 不受限制地使流程随意地转来转去,使流程图变 得毫无规律,阅读者要花很大精力去追踪流程 使人难以理解算法的逻辑。 ●为了提高算法的质量,使算法的设计和阅读方便 必须限制箭头的滥用,既不允许无规律地使流程 随意转向,只能顺序地进行下去。但是,算法上 人们规定出几种基本结构,然后由这些基本结构 按一定规律组成一个算法结构。 2021/2/24
2021/2/24 三种基本结构和改进的流程图 ⚫ 传统的流程图用流程线指出各框的执行顺序,对 流程线的使用没有严格限制。因此使用者可以毫 不受限制地使流程随意地转来转去,使流程图变 得毫无规律,阅读者要花很大精力去追踪流程, 使人难以理解算法的逻辑。 ⚫ 为了提高算法的质量,使算法的设计和阅读方便, 必须限制箭头的滥用,既不允许无规律地使流程 随意转向,只能顺序地进行下去。但是,算法上 难免会包含一些分支和循环,为了解决这个问题, 人们规定出几种基本结构,然后由这些基本结构 按一定规律组成一个算法结构
三种基本结构和改进的流程图 ●程序的三种基本结构 顺序结构程序:按照书写顺序依次执行语句 选择结构程序:按照条件判断选择执行语句 循环结构程序:通过条件控制循环执行语句 三种基本结构的共同点: 都是只有一个入口和一个出口; 结构内的每一个框都有机会被执行 结构内没有死循环。 2021/2/24
2021/2/24 三种基本结构和改进的流程图 ⚫ 程序的三种基本结构 –顺序结构程序:按照书写顺序依次执行语句 –选择结构程序:按照条件判断选择执行语句 –循环结构程序:通过条件控制循环执行语句 三种基本结构的共同点: • 都是只有一个入口和一个出口; • 结构内的每一个框都有机会被执行; • 结构内没有死循环
小结 ●由三种基本结构顺序组成的算法结鹁 可以解决任何复杂的问题。由基本结 构所构成的算法属于“结构化"的算 法,它不存在无规律的转响,只在本 基本结构内才允许存在分克和向前或 向后的躜转。 2021/2/24
2021/2/24 小结: ⚫ 由三种基本结构顺序组成的算法结构, 可以解决任何复杂的问题。由基本结 构所构成的算法属于“结构化”的算 法,它不存在无规律的转向,只在本 基本结构内才允许存在分支和向前或 向后的跳转