3.2知识点 · 课时
描述算法:流程图与伪代码
掌握用自然语言、流程图、伪代码三种方式描述算法。
用三种方式描述同一个算法
上一关我们理解了"算法是什么"。这一关学习怎么把算法表达出来——让别人(或计算机)能看懂。
用「自动批改一道选择题」作为例子,对比三种描述方式。
方式一:自然语言
就是用日常说话的方式描述:
- 读入标准答案(假设是 A)
- 读入学生的答案
- 如果学生答案等于 A,得 2 分;否则得 0 分
- 输出分数
缺点:自然语言有歧义。"等于"是指大小写都要一样吗?含空格算不算?不够严谨。
方式二:流程图
用图形符号表示,直观、无歧义。常用符号:
| 符号 | 含义 | 形状 |
|---|---|---|
| 圆角矩形 | 开始 / 结束 | 椭圆 |
| 矩形 | 处理步骤 | 方框 |
| 菱形 | 判断(是/否) | 菱形 |
| 平行四边形 | 输入 / 输出 | 平行四边形 |
「批改一道选择题」的流程图:
开始
输入标准答案如:正确答案是 A
输入学生答案如:学生选了 B
学生答案 = 标准答案?
是
分数 = 2
否
分数 = 0
输出分数
结束
开始/结束输入/输出处理判断
方式三:伪代码
介于自然语言和编程语言之间,逻辑清晰、结构紧凑:
1读入 标准答案 A
2读入 学生答案 X
3如果 X == A:
4分数 = 2
5否则:
6分数 = 0
7输出 分数
三种方式对比
| 方式 | 优点 | 缺点 |
|---|---|---|
| 自然语言 | 容易懂 | 有歧义、啰嗦 |
| 流程图 | 直观、无歧义 | 画起来费时 |
| 伪代码 | 简洁、接近代码 | 不够直观 |
实际开发中,常用伪代码描述思路,再用流程图做复杂逻辑的示意,最后用编程语言(Python)实现。
从伪代码到 Python
伪代码几乎就是 Python 的雏形。对比看:
| 伪代码 | Python |
|---|---|
| 读入 X | x = input() |
| 如果 X == A: | if x == a: |
| 否则: | else: |
| 输出 分数 | print(分数) |
是不是很像?下一关我们就正式学 Python,把这份伪代码变成真正能跑的程序。
📱 项目推进·第 2 关
本关项目任务:画出「自动批改助手」批改一道题的流程图。
要求:
- 包含开始/结束
- 输入标准答案和学生答案
- 有一个判断:学生答案是否等于标准答案
- 输出得分
画完后对照上方的示例流程图检查。下一关我们开始用 Python 实现它。
随堂练习
检验一下你对本节内容的理解
下面哪个图形符号,在流程图中表示「判断」(如:答案是否等于 A)?