作者MOONRAKER (㊣火星人玩转地球)
看板C_and_CPP
标题Re: [讨论] 请问多层回圈的flow chart怎麽画?
时间Tue Sep 19 14:30:01 2017
其实不应该在这边讲,因为大部份都是常识,不是常识书上一开始也会讲。
- 1 -
流程图一般而言就是从上画到下:
███
↓
███
↓
....
↓
███
开始结束还会用一个圆边的block,那叫终结者(terminator, 端点)
不过这里太难画了,你知道就好。
反正早20年书上就教大家画流程图只要用这个长方格(执行步骤)和菱形(判断)。
那这有什麽好讲的呢?你都已经知道了啊
重点在下面。
- 2 -
回圈一定会有一个判断(condition),
不管先判断(pre-condition)还是後判断(post-condition),一定会有
███
↓
███
↓
◢◣
◥◤
这个判断有点大,不过意思到就好。
回圈画法的重点,就是把判断後的流程画好
*判断- 合乎回圈执行的条件吗?
yes: 回到回圈头
no: 往下执行
███<─┐
↓ │
███ │
↓yes │
◢◣──┘
◥◤
↓no
███
↓
....
pre-condition就反过来
*判断- 合乎回圈执行的条件吗?
yes: 往下执行
no: 往前跳过整个回圈,继续执行
no ◢◣<──┐
┌── ◥◤ │
│ ↓yes │
│ ███ │
│ ↓ │
│ ███──┘
│
└─> ███
↓
....
如图所示这样会需要画两条跳跃(传统上的goto),有别於post-condition的一条
因为post-condition当中,判断和「继续执行」的跳跃指令合在一起
而在pre-condition当中和判断结合的跳跃指令却是「停止执行,跳过回圈」
而「继续执行」的跳跃指令则在回圈尾
为了一致性会希望你把「继续执行」的跳跃都画在同一边
「跳过回圈」画在另一边
如果有break,因为他是离开回圈,所以也不要跟「继续执行」画在同一边
不然两条跳跃会交叉,你要画个半圆表示跳过对方
↑
│
╭─╮
─┘│└─>
│
这样两条流程交叉的画法叫jog
(或jump,不过组语的跳跃也是jump,会混淆)
除非图很复杂,不然最好不要画。
掌握这些原则之後多层回圈也不过就是多画几条跳跃而已
只是那几条不要互相重叠
███<──┐
↓ │
███<─┐│
↓ ││
███ ││
↓YES ││
◢◣──┘│
◥◤ │
↓NO │
███ │
↓YES │
◢◣───┘
◥◤
↓NO
....
因为太懒了而且要上班(开玩笑,有人在盯的),画两层回圈就好
三层的,还有混合post-和pre-condition的,就你自己画
- 3 -
注意有的时候两层回圈的开头其实没有分开来
因为方框里面大家只会写有实际执行到的叙述,不会把大括号也画一格
所以有时候多层回圈继续执行会跳回同一格
███<─┐┐
↓ ││
像这样,可能好几条跳跃都跳到同一格上
- 4 -
如果你觉得线很多很烦(事实上真的是很烦),可以使用connector符号
外观是一个圈圈里面一个数字或字母,例如"㊣"
(这是示意; 里面不要写正)
图上线很多的时候就这样画
....
↓
███ ─>㊣
然後在上面或下面哪里
███<─㊣
↓
....
数字要配合,1就接1,2就接2
他的原始意义就是接图,画到纸不够的时候接到右边最上面继续画
等於一条线,只是中间不画
所以不要有一个1接到好几个1这种情况,那应该包装为判断或switch block。
--
从前有个马铃薯王国 有个高贵伟大的国王
有的人尊敬他 有的人畏惧他 但有个人敢看不起他不只是一条龙
嘿呵 快出动 去征服 去摆平 嘿呵 快出征 去征服那条龙
嘿呵 快出动
(宰了它!轰了它!)嘿呵 快出征 去征服那条龙
:■ Potatoes and Dragons (C)Alphanim France 2004-05 :.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.118.23
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1505802607.A.065.html
1F:推 Neisseria: 推一个 09/19 14:50
2F:推 wtchen: 虽然有点离本板主题,不过言之有物+板工喜欢 :) 09/19 16:58
3F:→ school4303: 板工喜欢XD 09/19 18:03
4F:推 Yshuan: 推 很用心地说明阿 09/19 20:46
5F:推 stucode: 推 还想看更多像这样的认真文章 09/19 21:10
6F:推 Lipraxde: 我记得以前我画流程图的时候老师要我把返回的箭头指到线 09/19 22:56
7F:→ Lipraxde: 上 09/19 22:56
8F:推 VictorTom: 推~~M大竟然可以用BBS画流程图....Orz 09/20 00:51
9F:推 ddtsatan: 推 09/20 01:04
※ 编辑: MOONRAKER (220.135.118.23), 09/20/2017 12:03:19
10F:→ MOONRAKER: 开玩笑我可是从北斗神拳还在连载的时候就在画流程图… 09/20 13:07
11F:→ MOONRAKER: (虎烂)(废话) 09/20 13:07
12F:推 VictorTom: 支持M大画到猎人连载完....(堆坑XD) 09/21 03:07
13F:推 zzss2003: 谢谢,解释得很清楚 09/21 11:09
14F:→ MOONRAKER: 不要阿~我不要画到56亿7000万年後阿~ 09/21 11:10
※ 编辑: MOONRAKER (220.135.118.23), 09/21/2017 11:24:03
15F:推 Lee1027: 推一个 09/22 01:21
16F:推 leo80042: 09/22 04:48
※ 编辑: MOONRAKER (220.135.118.23), 09/22/2017 10:55:37
17F:→ MOONRAKER: 一直改不是因为很三八,是因为这个字型怪怪的 09/22 14:51
18F:→ MOONRAKER: Wenquanyi micro hei的符号都差半格 直线会断… :~( 09/22 14:51
19F:推 sunneo: cool 09/25 22:05