算法的流程图学习技巧与讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/
传统流程图
• 用一些图框表示指令或活动的各种操作流程 • ANSI规定的常用流程图符号:
起始框 输入/输出框 判断框 处理框
/
流程线 连接点 注释框
三种基本结构
顺序结构
A B
选择结构
Y
N
P
A
B
/
三种基本结构
循环结构
A PY
N
当型(while)循环结构
A
P
N Y
直到型(until)循环结构
/
应用举例
优点: • 比较清晰,可以解决任何复杂的问题
缺点: • 流程图比较长,基本结构之间的流程线多余
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
N-S流程图
• 美国学者I.Nassi和B.shneiderman提出 • 流程图符号:
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
各种表示方法比较
表示方法
优点
缺点
自然语言 流程图
N-S流程图
通俗易懂
比较清晰,可以解决任何 复杂的问题 直观易懂
文字冗长, 含义不 太严格,容易出现歧 义
第2章、程序的灵魂—
—
算法
本章学习目标
• 理解算法的概念 • 了解算法的表示方法 • 掌握流程图的绘制方法 • 掌握三种基本结构的流程图 • 了解结构化程序设计方法
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
• 扩充后的公式: • 数据结构+算法+程序设计方法+语言和环境=程序 • 算法是灵魂,数据结构是加工对象,语言是工具,程序设计方法是使用手段。
/
算法的特性
• 有穷性 • 确定性 • 有效性 • 有零个或多个输入 • 有一个或多个输出
/
算法的分析与优化
• 分析程序的算法设计,应先看主流程图,再逐步细化地分析 • 了解算法是否实现了任务需求,方法是否合理 • 性能上是否存在瓶颈,能否被优化 • 如果有多个输入条件,处理时是否覆盖了全部输入条件 • 如果有多个输出结果,其输出是否被系统所定义和处理
流程图比较长,基本 结构之间的流程线多 余
画起来比较麻烦,不 易修改
伪代码
书写比较自由,容易表达 不太直观,容易出现
思想,容易修改
逻辑上的错误
计算机语言表示
直接在计算机上可以运行, 必须严格遵守所用语
得到结果
言的语法规则
/
绘制流程图应该注意的事项
• 一个流程图只有一个入口点和一个出口点; • 主要画出问题的逻辑处理过程,无需将每一步都画的很
/
算法的引入
length
• 问题:计算矩形的周长 • 第一步:定义三个变量存储长、宽和周长 • 第二步:提示用户输入矩型的长和宽 • 第三步:计算周长,两个长加上两个宽 • 第四步:打印计算结果
• 算法的定义: • 解决问题所使用的一系列合乎逻辑的、简洁的步骤。
width
/
算法与程序关系
• 著名科学家沃思(Nikiklaus Wirth)的公式: • 数据结构+算法=程序
if((y%4)==0) {
if(y%100!=0) printf(" %d 年是闰年\n",y);
else if(y%400==0) printf(" %d 年是闰年\n",y); else printf(" %d 年是非闰年\n",y);
} else
printf(" %d 年是非闰年\n",y); y=y+1; } }
Байду номын сангаас
A B
顺序结构
P
Y
N
A
B
选择结构
当P成立
A
当型循环结构
A
直到P成立
直到型循环结构
/
应用举例
打印 “非 闰年”
优点:
直观易懂
缺点:
画起来比较麻 烦,不易修改
y+1=>y
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
END(算法结束)
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
计算机语言
#include <stdio.h> void main() {
int y=2000; while (y<=2500) {
/
自然语言
• 自然语言描述: 设y为被检测的年份,则算法可表示如下: • S1:2000→y; • S2:若y不能被4整除,则输出y“不是闰年”,然后转到S6; • S3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转到S6; • S4:若y能被100整除,又能被400整除,输出y“是闰年” ,然后转到S6; • S5:输出y“不是闰年”,然后转到S6; • S6:y+1→y; • S7:当y≤2500时, 返回S2继续执行,否则结束。
/
自然语言
• 使用自然语言描述算法的优缺点: • 优点: • 通俗易懂 • 缺点: • 文字冗长 • 含义不太严格,容易出现歧义
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
伪代码
BEGIN(算法开始) 2000=>y while y<=2500 { if y能被4整除 if y 不被100整除 print y:”是闰年” else if y 能被400整除 print y :”是闰年” else print y:”非闰年” end if end if else print y:”非闰年” end if y+1=>y }
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
算法的表示方法
案例:判断2000~2500年中的每一年是否为闰年。 闰年的条件:
• 能被4整除,但不能被100整除的年份; • 能被100整除,又能被400整除的年份;
传统流程图
• 用一些图框表示指令或活动的各种操作流程 • ANSI规定的常用流程图符号:
起始框 输入/输出框 判断框 处理框
/
流程线 连接点 注释框
三种基本结构
顺序结构
A B
选择结构
Y
N
P
A
B
/
三种基本结构
循环结构
A PY
N
当型(while)循环结构
A
P
N Y
直到型(until)循环结构
/
应用举例
优点: • 比较清晰,可以解决任何复杂的问题
缺点: • 流程图比较长,基本结构之间的流程线多余
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
N-S流程图
• 美国学者I.Nassi和B.shneiderman提出 • 流程图符号:
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
各种表示方法比较
表示方法
优点
缺点
自然语言 流程图
N-S流程图
通俗易懂
比较清晰,可以解决任何 复杂的问题 直观易懂
文字冗长, 含义不 太严格,容易出现歧 义
第2章、程序的灵魂—
—
算法
本章学习目标
• 理解算法的概念 • 了解算法的表示方法 • 掌握流程图的绘制方法 • 掌握三种基本结构的流程图 • 了解结构化程序设计方法
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
• 扩充后的公式: • 数据结构+算法+程序设计方法+语言和环境=程序 • 算法是灵魂,数据结构是加工对象,语言是工具,程序设计方法是使用手段。
/
算法的特性
• 有穷性 • 确定性 • 有效性 • 有零个或多个输入 • 有一个或多个输出
/
算法的分析与优化
• 分析程序的算法设计,应先看主流程图,再逐步细化地分析 • 了解算法是否实现了任务需求,方法是否合理 • 性能上是否存在瓶颈,能否被优化 • 如果有多个输入条件,处理时是否覆盖了全部输入条件 • 如果有多个输出结果,其输出是否被系统所定义和处理
流程图比较长,基本 结构之间的流程线多 余
画起来比较麻烦,不 易修改
伪代码
书写比较自由,容易表达 不太直观,容易出现
思想,容易修改
逻辑上的错误
计算机语言表示
直接在计算机上可以运行, 必须严格遵守所用语
得到结果
言的语法规则
/
绘制流程图应该注意的事项
• 一个流程图只有一个入口点和一个出口点; • 主要画出问题的逻辑处理过程,无需将每一步都画的很
/
算法的引入
length
• 问题:计算矩形的周长 • 第一步:定义三个变量存储长、宽和周长 • 第二步:提示用户输入矩型的长和宽 • 第三步:计算周长,两个长加上两个宽 • 第四步:打印计算结果
• 算法的定义: • 解决问题所使用的一系列合乎逻辑的、简洁的步骤。
width
/
算法与程序关系
• 著名科学家沃思(Nikiklaus Wirth)的公式: • 数据结构+算法=程序
if((y%4)==0) {
if(y%100!=0) printf(" %d 年是闰年\n",y);
else if(y%400==0) printf(" %d 年是闰年\n",y); else printf(" %d 年是非闰年\n",y);
} else
printf(" %d 年是非闰年\n",y); y=y+1; } }
Байду номын сангаас
A B
顺序结构
P
Y
N
A
B
选择结构
当P成立
A
当型循环结构
A
直到P成立
直到型循环结构
/
应用举例
打印 “非 闰年”
优点:
直观易懂
缺点:
画起来比较麻 烦,不易修改
y+1=>y
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
END(算法结束)
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
计算机语言
#include <stdio.h> void main() {
int y=2000; while (y<=2500) {
/
自然语言
• 自然语言描述: 设y为被检测的年份,则算法可表示如下: • S1:2000→y; • S2:若y不能被4整除,则输出y“不是闰年”,然后转到S6; • S3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转到S6; • S4:若y能被100整除,又能被400整除,输出y“是闰年” ,然后转到S6; • S5:输出y“不是闰年”,然后转到S6; • S6:y+1→y; • S7:当y≤2500时, 返回S2继续执行,否则结束。
/
自然语言
• 使用自然语言描述算法的优缺点: • 优点: • 通俗易懂 • 缺点: • 文字冗长 • 含义不太严格,容易出现歧义
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
伪代码
BEGIN(算法开始) 2000=>y while y<=2500 { if y能被4整除 if y 不被100整除 print y:”是闰年” else if y 能被400整除 print y :”是闰年” else print y:”非闰年” end if end if else print y:”非闰年” end if y+1=>y }
/
内容进度
• 算法 • 算法的表示方法
• 自然语言 • 传统流程图 • N-S流程图 • 伪代码 • 计算机语言 • 各种表示方法的比较 • 结构化程序设计方法 • 文档和注释
/
算法的表示方法
案例:判断2000~2500年中的每一年是否为闰年。 闰年的条件:
• 能被4整除,但不能被100整除的年份; • 能被100整除,又能被400整除的年份;