鱼C论坛

 找回密码
 立即注册
查看: 6197|回复: 17

[技术交流] 06 - 流程图 VS 盒图?【三大结构|总结(上)】

[复制链接]
发表于 2021-4-11 17:07:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

在线讲解:



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

2021-04-11_17-04-40.jpg

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

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


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

先说结论:

游客,如果您要查看本帖隐藏内容请回复

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

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

  • 顺序结构
  • 选择结构
  • 循环结构

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

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


顺序结构

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

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

  1. 输入数据 + 处理数据 + 输出数据
复制代码

就是顺序结构。

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

2021-04-11_17-34-30.jpg

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

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

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

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

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

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

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


选择结构

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

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

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

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

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

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

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

  • 单分支
  • 双分支
  • 多分支

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

1.jpg

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

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

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

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

未命名表单.jpg

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

  1. like = input('喜欢小师妹的吗')
  2. if like == '喜欢':
  3.         print('一键三连')
复制代码

如果程序只是这种单一结构,画成流程图最方便。

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

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

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

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

  1. like = input('喜欢小师妹的吗')
  2. if like == '喜欢':
  3.     print('一键三连')
  4. else:
  5.     print('救救孩子吧')
复制代码

同理也是画成流程图最方便!

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

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

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

  1. if number < 33:
  2.     pass
  3. if number == 33:
  4.     pass
  5. if number > 33 and number < 40:
  6.     pass
  7. if number >= 40:
  8.     pass
复制代码

pass 语句是一个空语句,表示什么也不做,当占位符用。

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

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

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

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

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

  1. if number < 33:
  2.     pass
  3. else:
  4.     if number == 33:
  5.         pass
  6.     else:
  7.         if number > 33 and number < 40:
  8.             pass
  9.         else:
  10.             pass
复制代码

这种结构有个缺点就是分支越多,缩进就越多,通常不建议超过 3 层。

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

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

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

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

  1. if number < 33:
  2.     pass
  3. elif number == 33:
  4.     pass
  5. elif number > 33 and number < 40:
  6.     pass
  7. else:
  8.     pass
复制代码

利用 elif 语句代替 else..if 语句就能使多层缩进结构平面化,提高代码可读性。

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

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

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

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
bool想学C + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-11 17:51:58 From FishC Mobile | 显示全部楼层
我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

对小白来讲简单明了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-12 08:24:15 | 显示全部楼层
wp231957 发表于 2021-4-11 17:51
我不知道是谁发明的流程图
但是我觉得它就是个鸡肋,高手根本就不用它,而新手还当个宝

大神不懂小白的苦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-8 15:46:33 | 显示全部楼层
111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-13 10:55:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-26 10:20:49 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-5 20:12:36 | 显示全部楼层
一般用盒图?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-17 13:49:10 | 显示全部楼层
我喜欢小师妹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-16 14:20:59 | 显示全部楼层
kkkkk
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-23 20:08:16 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-20 16:18:25 | 显示全部楼层
6666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-1 22:16:34 | 显示全部楼层
感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-16 13:37:09 | 显示全部楼层
check
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-31 22:37:15 | 显示全部楼层
沙发
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-8 16:38:43 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-1 19:49:19 | 显示全部楼层
test
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-2 08:51:17 | 显示全部楼层
学习一下下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 19:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表