第二章程序的灵魂一算法 算法的概念 简单算法举例 算法的特性 怎样表示一个算法 结构化程序设计方法
第二章 程序的灵魂—算法 算法的概念 简单算法举例 算法的特性 怎样表示一个算法 结构化程序设计方法
§2.1算法的概念 程 对数据的描述 设 数据结构 在程序中指定数据的类型 计 指定数据的组织形式 程算法 对操作的描述 即操作步骤 序 第二章程序的灵魂一算法 程序设计方法 算法解决的是做什么? 怎么做? 语言工具和环境 程序三数据结构+算法+程序设计方法+语言工具和环境
程 序 数据结构 算 法 程序设计方法 语言工具和环境 对数据的描述 在程序中指定数据的类型 指定数据的组织形式 语 言 程 序 设 计 第 二 章 程 序 的 灵 魂 — 算 法 C 对操作的描述 即操作步骤 程序 = 数据结构+算法+程序设计方法+语言工具和环境 §2.1 算法的概念 算法解决的是做什么? 怎么做?
§22单募法半例 例2-3、判定2000-2500年中的每一年是否闰年?将结果输出 程 序算法表示如下: 设 计 设Y为被检测的年份,判断步骤: S1:2000→Y ①Y不能被4整除 S2:Y不能被4整除,输出Y不是闰 S3:Y能为4整除,但不能被100整 非闰年 第S4:Y能被100除,又能被40 否则输出” 章S5:其余输出Y不是闰年” )Y被 ②Y被4整除 程 100整除又能 但不能被100整除 序 S6:Y+1→Y 被400整除 的S7:当Y≤250时,转S2继续执行 闰年 闰年 灵 魂 判定是闰年的条件: 1、能为4整除, 算 但不能被100整除的年份 ④其他 法 2、能被100整除 又能被400整除的年份 非闰年 3、其余为非闰年
判定是闰年的条件: 1、能为4整除,但不能被100整除的年份 2、能被100整除,又能被400整除的年份 3、其余为非闰年 语 言 程 序 设 计 第 二 章 程 序 的 灵 魂 — 算 法 C 算法表示如下: 设Y为被检测的年份,判断步骤: S1:2000→Y S2:Y不能被4整除,输出Y”不是闰年“,转S6 S3:Y能为4整除,但不能被100整除,输出Y”是闰年“,转S6 S4:Y能被100整除,又能被400整除,输出Y”是闰年“ , 否则输出”不是闰年“,然后转S6 S5:其余输出Y”不是闰年” S6:Y+1 →Y S7:当Y≤2500时,转S2继续执行,Y>2500,算法终止 例2-3、判定2000—2500年中的每一年是否闰年?将结果输出 §2.2 简单算法举例 判定是闰年的条件: 1、能为4整除, 但不能被100整除的年份 2、能被100整除, 又能被400整除的年份 3、其余为非闰年 ① Y不能被4整除 非闰年 ② Y被4整除 但不能被100整除 闰年 ③ Y被 100整除又能 被400整除 闰年 ④ 其他 非闰年
§2.3算法的特性 程 有穷性 在合理的范围内,执行有限的操作步骤 确定性 算法中每一步骤都应是确定的,不能有两种可能的含义 、有零个或多个输入 第二章程序的灵 执行算法时,可从外界获取信息,也可不需要任何输入 算法的目的为“求解”,没有输出(解)的算法没有意 五、有效性 算法 算法的每一个步骤应当是可执行的,并有确定的结果
语 言 程 序 设 计 第 二 章 程 序 的 灵 魂 — 算 法 C 一、有穷性 在合理的范围内,执行有限的操作步骤 §2.3 算法的特性 二、确定性 算法中每一步骤都应是确定的,不能有两种可能的含义 三、有零个或多个输入 执行算法时,可从外界获取信息,也可不需要任何输入 四、有一个或多个输出 算法的目的为“求解”,没有输出(解)的算法没有意 义 五、有效性 算法的每一个步骤应当是可执行的,并有确定的结果
§2.4,样表示一个算法 程 当P为真 设 计 B A 直到P为真 第二章程序 endif END(算法结束) 灵‖五、用伪代码表示算法 魂一算法 用介于自然语言和计算机语言之间的文字和符号表示 六、用计算机语言表示算法
美国国家标准化协会规定了一些常用的流程图符号表示算法 优点:通俗易懂;缺点:文字冗长,易出现“歧义性” 语 言 程 序 设 计 第 二 章 程 序 的 灵 魂 — 算 法 C 一、用自然语言表示算法 人们日常使用的语言:汉语、英语或其他语言 §2.4 怎样表示一个算法 二、用流程图表示 用图框表示算法的各种操作 三、改进型流程图表示 用三种基本流程单元结构表示算法的各种操作 四、用N-S流程图表示算法 73年产生,全部算法在一个矩形框内表示 五、用伪代码表示算法 用介于自然语言和计算机语言之间的文字和符号表示 六、用计算机语言表示算法 BEGIN(算法开始) While y<=2500 { if y被4整除 if y 不被100整除 print y; “ 是闰年 ” else if Y 被400整除 print y; “ 是闰年 ” else print Y; “ 不是闰年 ” endif endif else print y; “ 不是闰年 ” endif y+1→Y } END(算法结束) A 直到P为真 当P为真 P A A B A 真 假 B
§2.5结构化程序设计方法 科自顶向下、逐步细化、模块化设计、结构化编码 H顶层设计 工作报告 第二层 2/设计工广概况前一阶段工作情况当前遇到的问题今后的打算 第三层第第第 程设计 序 灵 魂 算 考虑周全、结构清晰、层次分明、易写易读、易实现 法
语 言 程 序 设 计 第 二 章 程 序 的 灵 魂 — 算 法 C 自顶向下、逐步细化、模块化设计、结构化编码 §2.5 结构化程序设计方法 考虑周全、结构清晰、层次分明、易写易读、易实现 顶层设计 工作报告 工厂概况 前一阶段工作情况 当前遇到的问题 今后的打算 第二层 设计 第 一 点 第 二 点 第 三 点 第三层 设计