📘 CodingMarble Learn

解决问题入门:算法、流程图与伪代码

用计算机解决问题要分几个阶段:先分析问题(输入、输出和规则),再设计算法(有限、清楚、有顺序的一组步骤),然后用编程语言写成代码,接着用不同的数据测试,最后调试(找出并改正错误)。算法可以画成流程图(椭圆表示开始或结束,平行四边形表示输入或输出,矩形表示处理,菱形表示判断,箭头表示走向),也可以写成伪代码(有结构的日常语言)。分解就是把大问题拆成小问题,分别解决,最后再合在一起。

🎬 分步故事

  1. 解决问题有五个阶段:分析、写算法、写代码、测试、调试。
  2. 分解就是把大问题拆成小块。每一块单独解决,再把它们合起来。
  3. 流程图用不同形状表示不同的事。椭圆是开始或结束,平行四边形是输入或输出,矩形是处理,菱形是判断。
  4. 这是一个输出 A 和 B 中较大数的流程图。因为 7 比 4 大,小圆点走“是”的那条路。
  5. 伪代码用简单的日常语言,一行一行写出同样的步骤。
  6. 轮到你了:自己选 A 和 B,看看小圆点走哪条路。

提示:拖动3D画面可以旋转,用两根手指可以缩放。

🤔 常见疑问,一次讲清

为什么写代码之前要先写算法?

先把步骤想清楚,写代码时思路才不会错。改一份计划比改一大段程序容易得多。

分解只用于大型软件吗?

不是。就算是小程序,拆成输入、处理和输出几部分也会更容易写。

为什么判断要用菱形?

菱形表示一个“是/否”的问题,有两个出口。矩形只有一个出口,不能分叉。

A 等于 B 时会怎样?

A > B 不成立,所以小圆点走“否”的路,输出 B,而它和 A 的值一样。你可以在自由练习里试一试。

流程图和伪代码哪个更好?

小问题用流程图看起来更清楚;问题大一些时,伪代码写得更快,也更接近真正的代码。

解决问题的步骤

  1. 分析问题:弄清楚已知什么(输入)、要求什么(输出)以及有哪些规则。
  2. 设计算法:把解法写成清楚、有顺序的步骤。
  3. 编写代码:用 Python 这样的语言把算法变成程序。
  4. 测试:用很多种数据运行程序,包括特殊情况(0、负数、特别大的数)。
  5. 调试:找出并改正错误,然后再测试一遍。

算法必须满足:有明确的输入和输出,步骤有限(一定会停下来),每一步都准确不含糊,并且能得到正确的结果。

流程图

流程图是用标准符号和箭头把算法画出来的图。

流程图看起来直观,但问题一大,图就会变得很大。

伪代码

伪代码用接近日常语言的语句来写算法,常用 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"

常见错误

练习测验

1. 流程图中表示判断的符号是哪一个?
2. 找出并改正错误叫作:
3. 算法必须是:
4. 流程图中的输入和输出用:
5. 把问题拆成更小的部分叫作:

练习:自己动手回答

输入或选择你的答案,然后点“检查”。卡住了就看提示;回答后会显示完整解答。

常见问题

解决问题有哪几个步骤?

分析问题、设计算法、编写代码、测试和调试。

算法和流程图有什么区别?

算法是用文字写出来的一步一步的解法;流程图是用符号把同样的步骤画成图。

什么是分解?

把复杂的问题拆成更小的子问题,分别解决,然后再合并起来。

哪里会学到

Canada (Ontario)Grade 10C. Programming
Canada (Ontario)Grade 11B. Software Development
Canada (Ontario)Grade 11B. Software Development
ItalySecondaria di secondo grado – classe 1ªComputer basics and programming
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªComputer basics and programming
ItalySecondaria di secondo grado – classe 2ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªElements of computer science
NetherlandsVWO 3 (onderbouw)Mathematical thinking
NetherlandsHAVO 4 (bovenbouw, 2e fase)Foundations
NetherlandsVWO 4 (bovenbouw, 2e fase)Foundations
PolandLiceum ogólnokształcące, klasa IUnderstanding, analysing and solving problems
PolandLiceum ogólnokształcące, klasa IIIDesigning and programming algorithms (I + II)
RomaniaClasa a VIII-aAlgorithms
RomaniaClasa a IX-aMilitary profile (mathematics-informatics, military)
RomaniaClasa a X-aFundamental algorithms on arrays
Spain2º ESOComputational thinking, programming and robotics
Spain3º ESOComputational thinking, programming and robotics
Spain1º BachilleratoAlgebraic Sense
Spain1º BachilleratoAlgebraic Sense
Spain1º BachilleratoAlgebraic sense and computational thinking
CBSE (India)Class 11Computational Thinking and Programming - 1
England (GCSE, A level)Year 103.1 Fundamentals of algorithms
USA (Common Core, NGSS, AP)Grade 8Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 9Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 10Big Idea 3: Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 11Algorithms and Programming
Japan高校(専門学科)1〜3年Programming
Japan高校(専門学科)1〜3年Programming Technology
South Korea중학교 2학년Algorithms and programming
South Korea중학교 3학년Abstraction and algorithms
South Korea고등학교 3학년Abstraction and algorithms
FrancePremièreAlgorithms
FranceTerminaleAlgorithms
FranceTerminaleSpecific option — management information systems
Russia7 классAlgorithms and programming
Russia8 классAlgorithms and programming
Russia10 классAlgorithms and programming
China高一Comp.1 Ch.2 Algorithms and programs

接着学