鱼C-小师妹 发表于 2021-4-11 17:07:26

06 - 流程图 VS 盒图?【三大结构|总结(上)】

本帖最后由 鱼C-小师妹 于 2021-4-28 19:43 编辑

在线讲解:

https://www.bilibili.com/video/BV1HT4y1K7DY?p=8

相信看过前面几讲的童鞋,应该对流程图和盒图不陌生啦:



已经有认真勤思考的童鞋私信问小师妹:

什么时候用流程图?什么时候用盒图?师妹能详细讲一下吗?

好吧,那这一讲就带大家好好整理下二者的使用区别,毕竟温故才能知新吗~

先说结论:

**** Hidden Message *****
接下来的内容主要以手写画图为主,代码较少哈~

我们日常编写程序的时候,都是下面三种结构的组合:


[*]顺序结构
[*]选择结构
[*]循环结构

而这三种结构在之前的课程中都有出现,不同的结构有不同的代码风格。

先从使用最广泛的顺序结构说起。


顺序结构

这是使用最最最最最最..多的一种结构。

这种结构用来描述顺序执行的程序,常见的“三步走”:

输入数据 + 处理数据 + 输出数据
就是顺序结构。

在流程图中就是使用流程线将程序自上而下连接起来,按顺序依次执行:



执行完上面的语句,才能就执行下一条。

无论是简单问题还是复杂问题,想使用顺序结构来描述算法。

必须将解决问题的方法描述成可以顺序执行的操作步骤。

就像 00 讲的百钱百鸡问题,就是求“不定方程整数解的问题”。

我们用穷举法来依次对公鸡,母鸡,小鸡进行赋值,来“试”结果。

当然仅用顺序结构无法编写完上面的程序,需要结合其他两种结构。

总之,顺序结构是程序的基石,就像建造大楼的“脚手架”一样,给程序运行提供支持。


选择结构

有选择,程序才有了灵魂。

很多时候,程序需要根据给定的条件作出选择,就像平时在 B 站的抽奖送书活动。

只有符合“关注 & 转发”条件的童鞋,才能参加抽奖,否则无效。

就是如果条件成立执行步骤 A,否则执行步骤 B。

在很多游戏程序中,程序会判断玩家的生命值,如果该值大于 0,就让玩家继续游戏,否则,显示游戏结束。

选择结构就是用来实现这种控制逻辑的程序结构。

根据可选择的分支多少,通常可以分为一下三种:


[*]单分支
[*]双分支
[*]多分支

在流程图中使用菱形(选择)框来表示:



把给定条件写在判断框内,两个出口分别指向两个不同的分支。

在指向条件成立的出口处表明 “True/Y” 或 “False/N” 。

在 Python 中使用 if 语句来描述单分支结构。

但给定的条件满足时,执行语句体,否则执行 if 语句后面的代码:



就好比你们看完小师妹的视频,如果“喜欢”就要投币三连:

like = input('喜欢小师妹的吗')
if like == '喜欢':
        print('一键三连')
如果程序只是这种单一结构,画成流程图最方便。

除了 if 语句,还可以使用 if..else.. 语句描述双分支结构。

当给定的条件满足,选择执行 if 语句体,否则选择执行 else 语句体。

流程图和单分支一样,只不过这次是有步骤 B 的语句。

还是用上面的例子,如果 like 值不是“喜欢”,那么就打印“救救孩子吧”:

like = input('喜欢小师妹的吗')
if like == '喜欢':
    print('一键三连')
else:
    print('救救孩子吧')
同理也是画成流程图最方便!

通过组合或嵌套多个 if 语句就可以实现多分支结构啦,往往就这 3 种形式。

1、并列使用多个 if 语句,通过设定不同的条件让流程进入不同的分支。

这是新手最最最最最喜欢的一种结构,因为一下就能想到:

if number < 33:
    pass
if number == 33:
    pass
if number > 33 and number < 40:
    pass
if number >= 40:
    pass
pass 语句是一个空语句,表示什么也不做,当占位符用。

程序中的所有条件,都用 if 来写,而且相互独立。

初学者这样写没问题滴,这样的话就只能画成流程图。

因为盒图是需要“嵌套”滴!

2、嵌套使用多个 if 或 if..else.. 实现多分支选择结构。

在日常开发中很常用,实现上面代码的同时还可以少写一句:

if number < 33:
    pass
else:
    if number == 33:
      pass
    else:
      if number > 33 and number < 40:
            pass
      else:
            pass
这种结构有个缺点就是分支越多,缩进就越多,通常不建议超过 3 层。

这种结构就适合画成“盒图”,如果是流程图就会非常乱!

画图目的就是是为了帮助自己理清思路,而不是搞晕自己。

3、使用 if..elif..else 就可以大大优化 2 的不足。

这是一种类 1 的平面化结构:

if number < 33:
    pass
elif number == 33:
    pass
elif number > 33 and number < 40:
    pass
else:
    pass
利用 elif 语句代替 else..if 语句就能使多层缩进结构平面化,提高代码可读性。

而这种结构还是画成盒图最方便~

到这里三大结构中前两个都梳理好了,第三个“循环结构”是三个中最难滴!

我们留到下节课来说,童鞋们请认真消化上面两种结构再看下一级哦~

wp231957 发表于 2021-4-11 17:51:58

我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝

Daniel_Zhang 发表于 2021-4-11 17:59:11

wp231957 发表于 2021-4-11 17:51
我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝

对小白来讲简单明了啊{:10_250:}

bool想学C 发表于 2021-4-12 08:24:15

wp231957 发表于 2021-4-11 17:51
我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝

大神不懂小白的苦

calrai11 发表于 2021-6-8 15:46:33

111

天天今天要健身 发表于 2021-8-13 10:55:08

{:7_112:}

kcyyyy 发表于 2021-10-26 10:20:49

{:5_109:}

游刃鱿鱼 发表于 2021-11-5 20:12:36

一般用盒图?

兮兮学编程 发表于 2022-1-17 13:49:10

我喜欢小师妹

埃普斯先生 发表于 2022-2-16 14:20:59

kkkkk

小五亦生 发表于 2022-2-23 20:08:16

1

小小小小小菜鸡 发表于 2022-9-20 16:18:25

6666

liuzhf 发表于 2023-2-1 22:16:34

感谢

xier00 发表于 2023-3-16 13:37:09

check

Alexiiis 发表于 2023-5-31 22:37:15

沙发

赵希才 发表于 2023-10-8 16:38:43

1

yuyuya 发表于 2023-11-1 19:49:19

test

pingkong 发表于 2023-11-2 08:51:17

学习一下下
页: [1]
查看完整版本: 06 - 流程图 VS 盒图?【三大结构|总结(上)】