Re: [讨论] 请问多层循环的flow chart怎么画?

楼主: MOONRAKER (㊣牛鹤鳗毛人)   2017-09-19 14:30:01
其实不应该在这边讲,因为大部份都是常识,不是常识书上一开始也会讲。
- 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。
楼主: MOONRAKER (㊣牛鹤鳗毛人)   2017-09-22 14:51:00
一直改不是因为很三八,是因为这个字型怪怪的Wenquanyi micro hei的符号都差半格 直线会断… :~(
作者: Neisseria (Neisseria)   2017-09-19 14:50:00
推一个
作者: wtchen (没有存在感的人)   2017-09-19 16:58:00
虽然有点离本板主题,不过言之有物+板工喜欢 :)
作者: school4303 (某爬虫类)   2017-09-19 18:03:00
板工喜欢XD
作者: Yshuan (倚絃)   2017-09-19 20:46:00
推 很用心地说明阿
作者: stucode   2017-09-19 21:10:00
推 还想看更多像这样的认真文章
作者: Lipraxde (Lipraxde)   2017-09-19 22:56:00
我记得以前我画流程图的时候老师要我把返回的箭头指到线上
作者: VictorTom (鬼翼&娃娃鱼)   2017-09-20 00:51:00
推~~M大竟然可以用BBS画流程图....Orz
作者: ddtsatan   2017-09-20 01:04:00
楼主: MOONRAKER (㊣牛鹤鳗毛人)   2017-09-20 13:07:00
开玩笑我可是从北斗神拳还在连载的时候就在画流程图…(虎烂)(废话)
作者: VictorTom (鬼翼&娃娃鱼)   2017-09-21 03:07:00
支持M大画到猎人连载完....(堆坑XD)
作者: zzss2003 (brotherD)   2017-09-21 11:09:00
谢谢,解释得很清楚
楼主: MOONRAKER (㊣牛鹤鳗毛人)   2017-09-21 11:10:00
不要阿~我不要画到56亿7000万年后阿~
作者: Lee1027 (遇到吠狗真衰)   2017-09-22 01:21:00
推一个
作者: sunneo (艾斯寇德)   2017-09-25 22:05:00
cool

Links booklink

Contact Us: admin [ a t ] ucptt.com