CC++ & Algorithm

流程图的三种基本结构

中等3
语言版本:C++Python
概述:通过生活小例子学习流程图中的顺序、选择和循环结构,并学会用Python代码实现它们。

流程图的三种基本结构

流程图就像一张“做事地图”,它能帮助我们把解决问题的步骤画出来。在编程中,无论多复杂的程序,都是由三种基本结构拼凑起来的:顺序结构选择结构循环结构。下面我们用生活中的事情来认识它们。

要读懂流程图,先认识几个常用图形:

  • 圆角矩形:表示开始结束
  • 矩形:表示一个操作处理步骤
  • 菱形:表示一个判断(需要回答“是”或“否”)
  • 箭头:表示流程的方向

有了这些图形,我们就可以把任何流程画得清清楚楚。接下来,我们用生活例子和Python代码来具体学习三种结构。


1. 顺序结构——像刷牙一样按部就班

每天早晨,你刷牙的步骤是固定的:先挤牙膏,再刷牙,最后漱口。这些动作一个接一个,不能颠倒,这就是顺序结构

在流程图里,顺序结构就是一串从开始到结束的矩形框,箭头从上往下直直地走。

在Python里,代码也是一行一行从上往下执行。例如:

print("挤牙膏")
print("刷牙")
print("漱口")

运行后,程序会依次打印出这三句话,这就是最典型的顺序结构。

更多生活例子

  • 穿鞋子的顺序:先穿袜子,再穿鞋子,最后系鞋带。
  • 做番茄炒蛋:先切番茄,再打鸡蛋,然后下锅炒。

新手容易犯的错误:把步骤顺序搞反。比如先刷牙再挤牙膏,程序就会出错。在编程中,如果你先计算再输入数据,也可能得不到正确结果。

# 错误例子:先打印总分,再计算
total = 0
total = total + 10   # 还没拿到分数就加?逻辑不对
print("总分是", total)

正确做法是:先有数据,再做计算,最后输出。


2. 选择结构——像过马路一样看信号灯

过马路时,你要根据红绿灯决定走还是停。如果绿灯亮,就往前走;如果红灯亮,就停下。这种“如果……就……”的判断就是选择结构

在流程图里,选择结构用一个菱形框表示判断条件,然后分出两条箭头:一条标“是”,一条标“否”,分别指向不同的操作。

在Python中用if语句实现:

light = "绿"   # 假设现在绿灯
if light == "绿":
    print("过马路")
else:
    print("等待")

运行时,程序会先判断条件,再执行对应的操作。

更多生活例子

  • 考试结束后:如果分数≥60分,就及格了;否则,就要补考。
  • 玩游戏时:如果生命值>0,就继续打怪;否则,游戏结束。

新手容易犯的错误

  • 把赋值号=和比较符==搞混。=是“把右边的值放到左边”,==是“判断左右是否相等”。下面代码是错的:
    if light = "绿":   # 错误!应该用 ==
        print("过马路")
    
  • 忘记写冒号:ifelse后面必须跟冒号,否则程序会报错。
  • 缩进不对。ifelse里面的代码要缩进(通常是4个空格或一个Tab),Python靠缩进区分哪些代码属于判断条件。

3. 循环结构——像做俯卧撑一样重复

如果体育老师让你做10个俯卧撑,你需要重复“撑起、落下”这个动作10次。这种重复做同一件事的结构就是循环结构

在流程图里,循环结构会有一个菱形框判断“是否还要继续?”,如果“是”就回到之前某个操作,如果“否”就继续往下走。就像绕圈圈一样。

Python里用forwhile来处理重复:

for i in range(10):
    print("做一个俯卧撑")

这段代码会打印10次“做一个俯卧撑”,就像你真的完成了10个俯卧撑一样。

更多生活例子

  • 每天上学:重复“起床 → 洗漱 → 吃早餐 → 上学”这个流程,直到周五。
  • 玩投篮游戏:投一次、没中,再投一次、没中……直到投中或次数用完为止。

新手容易犯的错误

  • 忘记缩进:循环体里的代码必须缩进,否则只会执行一次。
    for i in range(3):
    print("你好")   # 错误!没有缩进
    
  • while时忘记更新条件,导致无限循环,程序永远不会结束。比如:
    count = 1
    while count <= 5:
        print("还在循环")
        # 忘了写 count = count + 1,count一直是1,永远小于等于5
    
    正确做法:在循环体内改变条件变量count = count + 1

新手容易犯的常见错误(总结)

错误类型例子正确做法
顺序颠倒先输出结果再计算先计算、再输出
条件写错if a = 5== 判断相等
忘记冒号if a > 0 后没写 :每行if/else/for/while后加冒号
缩进不对循环体代码没缩进用4个空格或Tab统一缩进
无限循环while条件永远为真在循环内改变条件变量

完整示例:统计全班成绩并判断是否及格

下面这个程序把三种结构都用到了一起。假设班上有5个同学,成绩分别是85、92、78、63、88,我们要计算全班平均分,然后判断是否及格(≥60分)。

scores = [85, 92, 78, 63, 88]  # 5个同学的分数
total = 0                      # 总分初始为0

for score in scores:           # 循环结构:遍历每个分数
    total = total + score      # 顺序结构:累加总分

average = total / len(scores)  # 顺序结构:计算平均分

if average >= 60:              # 选择结构:判断平均分是否及格
    print("全班平均分", average, ",恭喜及格!")
else:
    print("全班平均分", average, ",加油补考!")

运行结果:

全班平均分 81.2 ,恭喜及格!

代码解释

  • 第1行:用一个列表存分数,这是数据准备(顺序操作)。
  • 第2行:设置total为0,为累加做准备(顺序操作)。
  • 第3-4行:用for循环遍历每个分数,把每个分数加到total中(循环结构)。
  • 第6行:计算平均分(顺序结构)。
  • 第7-10行:用if判断平均分是否≥60,并输出对应结果(选择结构)。

这个程序先按顺序准备数据,然后用循环重复累加,最后用选择做出判断。三种结构配合得刚刚好。


相关指引

  • 想学习更多流程图符号(如输入/输出用平行四边形)?可以搜索“流程图常用符号”。
  • 这三种结构可以互相嵌套,比如循环里面放选择,选择里面再放循环,就能做出更复杂的程序。例如:猜数字游戏(循环猜,判断大小,直到猜对)就是典型的嵌套例子。
  • 接下来可以学习Python的while循环和for循环的区别,以及如何用流程图设计一个完整的算法。
  • 如果你已经掌握了这三种结构,可以尝试用流程图画出“如何用零花钱买一个玩具”的决策过程(需要多少钱、存多久、是否打折等)。

总结

  • 顺序结构:一步接一步,按顺序执行。
  • 选择结构:根据条件决定走哪条路。
  • 循环结构:重复做同一件事直到满足条件。

学会这三种结构,你就能看懂流程图,也能写出更有趣的Python程序啦!下次遇到一个问题,先画出流程图,再写代码,会轻松很多哦!

例题精讲

1单选题

小明早上起床的流程是:穿衣服 → 刷牙 → 吃早餐。这个流程属于流程图的哪种基本结构?

A顺序结构
B选择结构
C循环结构
D分支结构
2单选题

以下流程图描述了:判断天气是否下雨,如果下雨则带伞,否则不带伞。这属于哪种基本结构?

A顺序结构
B选择结构
C循环结构
D重复结构
3判断题

在流程图中,循环结构一定包含一个条件判断,用于决定是否继续循环。

4填空题
以下Python代码用for循环实现了打印1到5的数字,请补充完整。

for i in ___(1, 6):
    print(i)
5填空题
以下Python代码使用if-else实现了判断年龄是否成年(>=18),请补充条件判断部分。

age = int(input("请输入年龄: "))
if ___ :
    print("已成年")
else:
    print("未成年")