解决问题的步骤
- 分析问题:弄清楚已知什么(输入)、要求什么(输出)以及有哪些规则。
- 设计算法:把解法写成清楚、有顺序的步骤。
- 编写代码:用 Python 这样的语言把算法变成程序。
- 测试:用很多种数据运行程序,包括特殊情况(0、负数、特别大的数)。
- 调试:找出并改正错误,然后再测试一遍。
算法必须满足:有明确的输入和输出,步骤有限(一定会停下来),每一步都准确不含糊,并且能得到正确的结果。
流程图
流程图是用标准符号和箭头把算法画出来的图。
- 椭圆(终端框):开始 / 结束。
- 平行四边形:输入 / 输出。
- 矩形:处理(计算或赋值)。
- 菱形:判断;一个入口,两个出口(是/否)。
- 箭头:表示流程的方向。
流程图看起来直观,但问题一大,图就会变得很大。
伪代码
伪代码用接近日常语言的语句来写算法,常用 INPUT(输入)、COMPUTE(计算)、PRINT(输出)、IF…ELSE(如果…否则)、WHILE(当…时)这样的关键字。它不是真正的编程语言,所以不用管严格的语法。
INPUT A, B
IF A > B THEN
PRINT A
ELSE
PRINT B算法可以包含顺序(一步接着一步)、选择(IF 判断)和循环(重复执行)。
分解
分解就是把复杂的问题拆成更小、更简单的子问题。每一部分分别解决(常常由不同的人或不同的函数来做),最后再合并起来。
例如:火车订票系统可以分解为:查询车次、查看座位、订票、付款、打印车票。
好处:更容易理解,工作可以分给不同的人,错误更容易找到,各部分还可以重复使用。
考试重点
常见题目:为简单任务画流程图或写伪代码(求两数中较大者、求前 n 个数的和、判断奇偶、根据分数评等级),说出各个符号的名称,列出解决问题的步骤,并举例说明什么是分解。
重点公式和概念
- 解决问题:分析 → 算法 → 代码 → 测试 → 调试
- 算法 = 有限、准确、有顺序的步骤,有输入和输出
- 椭圆 = 开始/结束;平行四边形 = 输入/输出;矩形 = 处理;菱形 = 判断
- 基本结构:顺序、选择、循环
例题讲解
1. 写出求长方形面积的算法。
1. 开始。2. 输入长 L 和宽 B。3. 面积 = L × B。4. 输出面积。5. 结束。
2. 写出判断一个数是偶数还是奇数的伪代码。
INPUT N IF N MOD 2 = 0 THEN PRINT "偶数" ELSE PRINT "奇数"
3. 描述一个输出 1 到 10 之和的流程图。
开始 → 处理:sum = 0,i = 1 → 判断:i <= 10?→ 是:处理 sum = sum + i,i = i + 1,箭头返回判断框 → 否:输出 sum → 结束。
4. 把“举办学校运动会”分解开。
子问题:列出比赛项目、学生报名、准备场地和器材、安排日程、裁判并记录成绩、颁奖。每一项可以交给一个小组去做,最后再合起来。
5. 当 A = 5,B = 12 时,跟着求较大数的流程图走一遍。
开始 → 输入 A = 5,B = 12 → 5 > 12 吗?否 → 输出 B = 12 → 结束。
6. 写出输出等级的伪代码:分数 ≥ 90 为 A,≥ 75 为 B,其他为 C。
INPUT M IF M >= 90 THEN PRINT "A" ELSE IF M >= 75 THEN PRINT "B" ELSE PRINT "C"
常见错误
- 用矩形表示判断。判断一定要用菱形,并且有“是/否”两个出口。
- 写出永远不会停下来的算法。算法必须是有限的。
- 没有用 0 或负数这样的特殊数据去测试。
- 把输入/输出(平行四边形)和处理(矩形)弄混。